+++ /dev/null
---- src/lxlauncher.c 2009-07-07 15:48:19.000000000 +0300
-+++ src/lxlauncher.c.new 2010-06-09 21:09:24.000000000 +0300
-@@ -311,6 +311,7 @@
- {
- // Dirty hacks used to force pseudo-transparent background
- gtk_widget_queue_draw( data->table );
-+ return TRUE;
- }
-
- // Dirty hacks used to reduce unnecessary redrew during scroll
-@@ -662,18 +663,38 @@
- 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)
-@@ -695,13 +716,14 @@
- 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);
-@@ -711,21 +733,23 @@
- // Add application specific properties
- gtk_settings_install_property(g_param_spec_boolean("lxlauncher-enable-key",
- _("Enable key navigation"),
-- _("Allow users to use up/down/left/right/tab/enter keys to operate the lxlaucher"),
-+ _("Allow users to use up/down/left/right/tab/enter keys to operate the lxlauncher"),
- FALSE,GTK_ARG_READWRITE));
- // set up themes for notebook
- 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 );
-
-@@ -756,9 +780,14 @@
- 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();
-