diff options
Diffstat (limited to 'community/lxlauncher/lxlauncher-0.2.1-fix-for-the-new-behavior-of-libmenu-cache-0.3-series.patch')
-rw-r--r-- | community/lxlauncher/lxlauncher-0.2.1-fix-for-the-new-behavior-of-libmenu-cache-0.3-series.patch | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/community/lxlauncher/lxlauncher-0.2.1-fix-for-the-new-behavior-of-libmenu-cache-0.3-series.patch b/community/lxlauncher/lxlauncher-0.2.1-fix-for-the-new-behavior-of-libmenu-cache-0.3-series.patch new file mode 100644 index 000000000..1720d3e62 --- /dev/null +++ b/community/lxlauncher/lxlauncher-0.2.1-fix-for-the-new-behavior-of-libmenu-cache-0.3-series.patch @@ -0,0 +1,125 @@ +From a7dad81b883a783bc1ac4f8092a1571b7f843914 Mon Sep 17 00:00:00 2001 +From: Hong Jen Yee (PCMan) <pcman.tw@gmail.com> +Date: Wed, 17 Feb 2010 22:42:01 +0800 +Subject: [PATCH 50/50] Fix for the new behavior of libmenu-cache 0.3 series. + +--- + src/lxlauncher.c | 67 +++++++++++++++++++++++++++++++++++++---------------- + 1 files changed, 47 insertions(+), 20 deletions(-) + +diff --git a/src/lxlauncher.c b/src/lxlauncher.c +index 6dfbbc9..3a39bc6 100644 +--- a/src/lxlauncher.c ++++ b/src/lxlauncher.c +@@ -663,21 +663,40 @@ gchar* get_xdg_config_file(const char *name) { + gchar *file; + + file = g_build_filename(user_dir, name, NULL); +- if (g_file_test(file, G_FILE_TEST_EXISTS) == TRUE) { +- return file; +- } ++ if (g_file_test(file, G_FILE_TEST_EXISTS) == TRUE) ++ return file; + free(file); + + for (dir = system_dirs; *dir; ++dir ) { +- file = g_build_filename(*dir, name, NULL); +- if (g_file_test(file, G_FILE_TEST_EXISTS) == TRUE) { +- return file; +- } +- free(file); ++ file = g_build_filename(*dir, name, NULL); ++ if (g_file_test(file, G_FILE_TEST_EXISTS) == TRUE) ++ return file; ++ free(file); + } + return NULL; + } + ++static void on_menu_cache_reload(MenuCache* mc, gpointer user_data) ++{ ++ GMainLoop* mainloop = (GMainLoop*)user_data; ++ g_main_loop_quit(mainloop); ++} ++ ++MenuCache* _menu_cache_lookup_sync( const char* menu_name ) ++{ ++ MenuCache* mc = menu_cache_lookup(menu_name); ++ /* ensure that the menu cache is loaded */ ++ if(! menu_cache_get_root_dir(mc)) /* if it's not yet loaded */ ++ { ++ GMainLoop* mainloop = g_main_loop_new(NULL, FALSE); ++ gpointer notify_id = menu_cache_add_reload_notify(mc, on_menu_cache_reload, mainloop); ++ g_main_loop_run(mainloop); ++ g_main_loop_unref(mainloop); ++ menu_cache_remove_reload_notify(mc, notify_id); ++ } ++ return mc; ++} ++ + int main(int argc, char** argv) + { + int i; +@@ -697,13 +716,14 @@ int main(int argc, char** argv) + GError *error = NULL; + gchar *config_file = get_xdg_config_file(CONFIG_FILE); + if (config_file && +- g_key_file_load_from_file(key_file, +- config_file, +- G_KEY_FILE_NONE, +- &error)) { +- printf("Loaded %s\n", config_file); +- } else { +- perror("Error loading " CONFIG_FILE); ++ g_key_file_load_from_file(key_file, ++ config_file, ++ G_KEY_FILE_NONE, ++ &error)) { ++ printf("Loaded %s\n", config_file); ++ } ++ else { ++ perror("Error loading " CONFIG_FILE); + } + if (config_file) + free(config_file); +@@ -719,15 +739,17 @@ int main(int argc, char** argv) + gchar* gtkrc_file = get_xdg_config_file("lxlauncher/gtkrc"); + gtk_rc_parse(gtkrc_file); + if (gtkrc_file) { +- free(gtkrc_file); ++ free(gtkrc_file); + } + + button_size = g_key_file_get_integer(key_file, "Main", "BUTTON_SIZE", NULL); + img_size = g_key_file_get_integer(key_file, "Main", "IMG_SIZE", NULL); + + // to prevent from going without configure file +- if(!button_size) button_size = BUTTON_SIZE_FALLBACK; +- if(!img_size) img_size = IMG_SIZE_FALLBACK; ++ if(!button_size) ++ button_size = BUTTON_SIZE_FALLBACK; ++ if(!img_size) ++ img_size = IMG_SIZE_FALLBACK; + + icon_size = gtk_icon_size_register( "ALIcon", img_size, img_size ); + +@@ -758,9 +780,14 @@ int main(int argc, char** argv) + gtk_container_add( (GtkContainer*)main_window, notebook ); + + g_setenv("XDG_MENU_PREFIX", "lxlauncher-", TRUE); +- menu_tree = menu_cache_lookup( "applications.menu" ); ++ menu_tree = _menu_cache_lookup_sync( "applications.menu" ); ++ if(!menu_tree) ++ { ++ g_print("Unable to load application menu\n"); ++ return 1; ++ } ++ root_dir = menu_cache_item_ref(menu_cache_get_root_dir( menu_tree )); + reload_notify_id = menu_cache_add_reload_notify( menu_tree, on_menu_tree_changed, NULL ); +- root_dir = menu_cache_ref(menu_cache_get_root_dir( menu_tree )); + + create_notebook_pages(); + +-- +1.6.6 + |