summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJannis Pohlmann <jannis@xfce.org>2010-08-30 15:29:35 +0200
committerJannis Pohlmann <jannis@xfce.org>2010-08-30 15:29:35 +0200
commitf184e60d6561668180bcff62ff2f96a24cdc40d0 (patch)
tree3bcdbcb4150a42b46db84319b41838857b95ec22
parent25864bee17ba4394e2db8c91ff38d91e8f063971 (diff)
downloadgarcon-f184e60d6561668180bcff62ff2f96a24cdc40d0.tar.gz
Squashme
-rw-r--r--garcon/garcon-menu.c54
1 files changed, 37 insertions, 17 deletions
diff --git a/garcon/garcon-menu.c b/garcon/garcon-menu.c
index 930c938..ef162b9 100644
--- a/garcon/garcon-menu.c
+++ b/garcon/garcon-menu.c
@@ -2150,7 +2150,7 @@ garcon_menu_find_file_item (GarconMenu *menu,
static void
-garcon_menu_update_item_file (GarconMenu *menu,
+garcon_menu_update_file_item (GarconMenu *menu,
const gchar *desktop_id,
GFile *file)
{
@@ -2586,7 +2586,6 @@ garcon_menu_app_dir_changed (GarconMenu *menu,
GList *menus = NULL;
GList *lp;
gchar *desktop_id;
- gchar *uri;
g_return_if_fail (GARCON_IS_MENU (menu));
@@ -2647,7 +2646,18 @@ garcon_menu_app_dir_changed (GarconMenu *menu,
/* determine the desktop ID for this file */
if (garcon_menu_collect_file (menu, file, NULL, NULL, &desktop_id))
{
- garcon_menu_update_file_item (menu, desktop_id, file);
+ if (garcon_menu_collect_file (menu, NULL, desktop_id, &replacement_file, NULL))
+ {
+ if (g_file_equal (file, replacement_file))
+ {
+ /* TODO we need to handle the app dir priority here */
+ garcon_menu_update_file_item (menu, desktop_id, file);
+ }
+ else
+ {
+ g_debug ("ignoring the changed file as it is overriden");
+ }
+ }
g_free (desktop_id);
}
}
@@ -2662,19 +2672,29 @@ garcon_menu_app_dir_changed (GarconMenu *menu,
garcon_menu_element_get_name (GARCON_MENU_ELEMENT (menu)),
g_file_get_path (file), event_type);
- /* TODO
- * 1) the new file is a directory
- * - collect files from the newly created directory
- * - add files to the correct menus (make sure to emit
- * 'item-added' signals)
- * - monitor the newly created directory
- * 2) the new file is a regular file
- * - remove items with the same desktop id
- * - load it into a GarconMenuItem
- * - find the correct menu(s) for it
- * - add it to those menus (make sure to emit 'item-added'
- * signals)
- */
+ /* 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)
+ {
+ /* TODO
+ * the new file is a directory
+ * - collect files from the newly created directory
+ * - add files to the correct menus (make sure to emit
+ * 'item-added' signals)
+ * - monitor the newly created directory */
+ }
+ else
+ {
+ /* TODO
+ * the new file is a regular file
+ * - remove items with the same desktop id and lower app dir priority
+ * - load it into a GarconMenuItem
+ * - find the correct menu(s) for it
+ * - add it to those menus (make sure to emit 'item-added'
+ * signals)
+ */
+ }
}
else if (event_type == G_FILE_MONITOR_EVENT_DELETED)
{
@@ -2736,7 +2756,7 @@ garcon_menu_app_dir_changed (GarconMenu *menu,
/* determine the next-priority desktop file with the same desktop ID */
if (garcon_menu_collect_file (menu, NULL, desktop_id, &replacement_file, NULL))
{
- garcon_menu_update_item_file (menu, desktop_id, file);
+ garcon_menu_update_file_item (menu, desktop_id, file);
g_object_unref (replacement_file);
}