Fix: do not show empty directories with libmenu-cache >= 1.0.0.
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Mon, 29 Sep 2014 19:11:07 +0000 (22:11 +0300)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Mon, 29 Sep 2014 19:16:27 +0000 (22:16 +0300)
ChangeLog
plugins/launchtaskbar.c
plugins/menu.c
src/gtk-run.c

index fcf7c27..db11818 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,8 @@
 * Fixed unhiding panel if it becomes empty and height_when_hidden is 0.
+* Fixed invalid X protocol word size: despite of stating it 32 bit, the X
+    server uses unsigned long which is 64 bit on 64-bit architectures.
+* Adapted to use libmenu-cache >= 1.0.0 - it could show empty folders in
+    the desktop menu.
 
 0.7.1
 -------------------------------------------------------------------------
index 89c9a0b..fc8e464 100644 (file)
@@ -260,6 +260,7 @@ static FmFileInfo *f_find_menu_launchbutton_recursive(const char *exec_bin)
 
     /* FIXME: cache it in Task object */
     mc = panel_menu_cache_new(&flags);
+    /* FIXME: if menu plugin wasn't loaded yet we'll get NULL list here */
     apps = menu_cache_list_all_apps(mc);
     short_exec = strrchr(exec_bin, '/');
     if (short_exec != NULL)
index ad7d6f7..75163cd 100644 (file)
@@ -471,9 +471,17 @@ static int load_menu(menup* m, MenuCacheDir* dir, GtkWidget* menu, int pos )
     gint count = 0;
 #if MENU_CACHE_CHECK_VERSION(0, 4, 0)
     GSList *children;
-#if MENU_CACHE_CHECK_VERSION(0, 5, 0)
-    char *kfpath = menu_cache_item_get_file_path(MENU_CACHE_ITEM(dir));
-    GKeyFile *kf = g_key_file_new();
+# if MENU_CACHE_CHECK_VERSION(0, 5, 0)
+#  if !MENU_CACHE_CHECK_VERSION(1, 0, 0)
+    char *kfpath;
+    GKeyFile *kf;
+#  endif
+    if (!menu_cache_dir_is_visible(dir)) /* directory is hidden, ignore children */
+        return 0;
+#  if !MENU_CACHE_CHECK_VERSION(1, 0, 0)
+    /* version 1.0.0 has NoDisplay checked internally */
+    kfpath = menu_cache_item_get_file_path(MENU_CACHE_ITEM(dir));
+    kf = g_key_file_new();
     /* for version 0.5.0 we enable hidden so should test NoDisplay flag */
     if (kfpath && g_key_file_load_from_file(kf, kfpath, 0, NULL) &&
         g_key_file_get_boolean(kf, "Desktop Entry", "NoDisplay", NULL))
@@ -482,10 +490,11 @@ static int load_menu(menup* m, MenuCacheDir* dir, GtkWidget* menu, int pos )
     g_key_file_free(kf);
     if (count < 0) /* directory is hidden, ignore children */
         return 0;
-#endif
+#  endif /* < 1.0.0 */
+# endif /* < 0.5.0 */
     children = menu_cache_dir_list_children(dir);
     for (l = children; l; l = l->next)
-#else
+#else /* < 0.4.0 */
     for( l = menu_cache_dir_get_children(dir); l; l = l->next )
 #endif
     {
index aca1324..dc225c9 100644 (file)
@@ -258,7 +258,7 @@ static void reload_apps(MenuCache* cache, gpointer user_data)
         g_slist_foreach(app_list, (GFunc)menu_cache_item_unref, NULL);
         g_slist_free(app_list);
     }
-    app_list = (GSList*)menu_cache_list_all_apps(cache);
+    app_list = menu_cache_list_all_apps(cache);
 }
 #endif
 
@@ -409,11 +409,10 @@ void gtk_run()
         g_signal_connect(entry ,"changed", G_CALLBACK(on_entry_changed), img);
 
         /* get all apps */
-        menu_cache = menu_cache_lookup(g_getenv("XDG_MENU_PREFIX") ? "applications.menu" : "lxde-applications.menu" );
+        menu_cache = menu_cache_lookup_sync(g_getenv("XDG_MENU_PREFIX") ? "applications.menu" : "lxde-applications.menu" );
         if( menu_cache )
         {
-            menu_cache_reload(menu_cache);
-            app_list = (GSList*)menu_cache_list_all_apps(menu_cache);
+            app_list = menu_cache_list_all_apps(menu_cache);
             reload_notify_id = menu_cache_add_reload_notify(menu_cache, reload_apps, NULL);
         }
 #endif