[geany/geany-plugins] 1c11ac: Make the "Delete" entry in the popup insensitive for non-empty directories
Jiří Techet
git-noreply at xxxxx
Mon Apr 1 01:03:41 UTC 2019
Branch: refs/heads/master
Author: Jiří Techet <techet at gmail.com>
Committer: Jiří Techet <techet at gmail.com>
Date: Mon, 15 Oct 2018 19:26:14 UTC
Commit: 1c11acbbaa5c9cc357528959d550f8e711d92b86
https://github.com/geany/geany-plugins/commit/1c11acbbaa5c9cc357528959d550f8e711d92b86
Log Message:
-----------
Make the "Delete" entry in the popup insensitive for non-empty directories
Also remove the TODO comment as we probably shouldn't allow non-empty
directory deletion because it's dangerous. Because of file pattern
filtering, directories may seem empty in the sidebar even though they
contain files. This could confuse users thinking they are looking at
empty directories they and could delete those by accident.
Modified Paths:
--------------
projectorganizer/src/prjorg-sidebar.c
projectorganizer/src/prjorg-utils.c
Modified: projectorganizer/src/prjorg-sidebar.c
21 lines changed, 19 insertions(+), 2 deletions(-)
===================================================================
@@ -499,8 +499,6 @@ static void on_delete(G_GNUC_UNUSED GtkMenuItem *menuitem, G_GNUC_UNUSED gpointe
{
gchar *path = build_path(&iter);
- //TODO: recurse into directories
-
if (remove_file_or_dir(path))
close_file(path);
else
@@ -955,6 +953,8 @@ static gboolean on_button_release(G_GNUC_UNUSED GtkWidget * widget, GdkEventButt
GtkTreeSelection *treesel;
GtkTreeModel *model;
GtkTreeIter iter;
+ gboolean delete_enabled = TRUE;
+ gchar *path;
treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(s_file_view));
@@ -964,6 +964,23 @@ static gboolean on_button_release(G_GNUC_UNUSED GtkWidget * widget, GdkEventButt
gtk_widget_set_sensitive(s_popup_menu.expand, gtk_tree_model_iter_has_child(model, &iter));
gtk_widget_set_sensitive(s_popup_menu.remove_external_dir, topmost_selected(model, &iter, FALSE));
+ path = build_path(&iter);
+ SETPTR(path, utils_get_locale_from_utf8(path));
+ if (g_file_test(path, G_FILE_TEST_IS_DIR))
+ {
+ GDir *dir = g_dir_open(path, 0, NULL);
+
+ delete_enabled = FALSE;
+ if (dir)
+ {
+ delete_enabled = g_dir_read_name(dir) == NULL;
+ g_dir_close(dir);
+ }
+ }
+ g_free(path);
+
+ gtk_widget_set_sensitive(s_popup_menu.delete, delete_enabled);
+
gtk_menu_popup(GTK_MENU(s_popup_menu.widget), NULL, NULL, NULL, NULL,
event->button, event->time);
return TRUE;
Modified: projectorganizer/src/prjorg-utils.c
3 lines changed, 1 insertions(+), 2 deletions(-)
===================================================================
@@ -111,9 +111,8 @@ void open_file(gchar *utf8_name)
void close_file(gchar *utf8_name)
{
- GeanyDocument *doc;
+ GeanyDocument *doc = document_find_by_filename(utf8_name);
- doc = document_find_by_filename(utf8_name);
if (doc)
{
document_set_text_changed(doc, FALSE);
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Plugins-Commits
mailing list