Updating branch refs/heads/jannis/basic-monitoring to 2d3750233542f9252fd0802e3438896d759f9fd3 (commit) from 2be335a2c9332d9b2c9f649245a764afb7140257 (commit)
commit 2d3750233542f9252fd0802e3438896d759f9fd3 Author: Jannis Pohlmann <jan...@xfce.org> Date: Sun Sep 5 21:39:11 2010 +0200 Properly react on delete events. They are not included in CHANGES_DONE. Too bad, here we have our first exception. Delete events don't seem to be included in the events closed by G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT. garcon/garcon-menu.c | 36 ++++++++++++++++++++++++++++++++++++ 1 files changed, 36 insertions(+), 0 deletions(-) diff --git a/garcon/garcon-menu.c b/garcon/garcon-menu.c index 4f40c2e..85c8ffc 100644 --- a/garcon/garcon-menu.c +++ b/garcon/garcon-menu.c @@ -2185,6 +2185,42 @@ garcon_menu_app_dir_changed (GarconMenu *menu, g_free (path); } } + else if (event_type == G_FILE_MONITOR_EVENT_DELETED) + { + /* query the type of the changed file */ + file_type = g_file_query_file_type (file, G_FILE_QUERY_INFO_NONE, NULL); + + if (file_type == G_FILE_TYPE_DIRECTORY) + { + /* an existing app dir (or a subdirectory) has been deleted. we + * could remove all the items that are in use and reside inside + * this root directory. but for now... enforce a menu reload! */ + g_signal_emit (menu, menu_signals[RELOAD_REQUIRED], 0); + } + else + { + /* a regular file was deleted, try to find the corresponding menu item */ + item = garcon_menu_find_file_item (menu, file); + if (item != NULL) + { + /* remove the item from the desktop item cache so we are forced + * to reload it from disk the next time */ + garcon_menu_item_cache_invalidate_file (menu->priv->cache, file); + + /* ok, so a .desktop file was removed. of course we don't know + * yet whether there is a replacement in another app dir + * with lower priority. we could try to find out but for now + * it's easier to simply enforce a menu reload */ + g_signal_emit (menu, menu_signals[RELOAD_REQUIRED], 0); + } + else + { + /* the deleted file hasn't been in use anyway, so removing it + * doesn't change anything. so we have nothing to do for a + * change, no f****ing menu reload! */ + } + } + } } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits