From a5301bdaf82ca9eb86acb8f3251fa17a63918b8f Mon Sep 17 00:00:00 2001 From: g Date: Thu, 15 Jul 2004 20:02:28 +0000 Subject: [PATCH] Bug fixed in "Open current image folder", make sure every image has its directory in the hash table. git-svn-id: file:///srv/svn/gliv/trunk@308 dbf4865f-1ec6-0310-8412-f61adeb1ccb1 committer: g --- src/dirty_gtk.c | 8 ++++++++ src/images_menus.c | 20 ++++++-------------- src/include/dirty_gtk.h | 2 ++ 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/dirty_gtk.c b/src/dirty_gtk.c index 4c0978a..63beb4a 100644 --- a/src/dirty_gtk.c +++ b/src/dirty_gtk.c @@ -14,6 +14,9 @@ DirtyGtkMenu *dirty_gtk_menu_new(void) menu->gtk_menu_shell = GTK_MENU_SHELL(gtk_menu_new()); menu->last_child = NULL; + menu->tearoff = GTK_TEAROFF_MENU_ITEM(gtk_tearoff_menu_item_new()); + + dirty_gtk_menu_append(menu, GTK_WIDGET(menu->tearoff)); return menu; } @@ -30,6 +33,11 @@ void dirty_gtk_menu_append(DirtyGtkMenu * menu, GtkWidget * item) menu->gtk_menu_shell->children = children; } +GtkTearoffMenuItem *dirty_gtk_menu_get_tearoff(DirtyGtkMenu * menu) +{ + return menu->tearoff; +} + void dirty_gtk_menu_release(DirtyGtkMenu * menu) { g_free(menu); diff --git a/src/images_menus.c b/src/images_menus.c index 4152292..7f42fc2 100644 --- a/src/images_menus.c +++ b/src/images_menus.c @@ -184,6 +184,7 @@ static void add_file_from_tree(DirtyGtkMenu * menu, tree_item * item) { static gchar *directories = NULL; static gint number = 0, percent = 0; + gchar *dirname; if (canceled_using_tree()) return; @@ -200,30 +201,25 @@ static void add_file_from_tree(DirtyGtkMenu * menu, tree_item * item) return; } + dirname = g_path_get_dirname(item->path); + g_hash_table_insert(dir_menu_hash, dirname, + dirty_gtk_menu_get_tearoff(menu)); add_menu_item(menu, item, MENU_FILE); set_progress(directories, &percent, number); number++; } -static DirtyGtkMenu *add_sub_menu(DirtyGtkMenu * parent, tree_item * item, - GtkTearoffMenuItem ** tearoff) +static DirtyGtkMenu *add_sub_menu(DirtyGtkMenu * parent, tree_item * item) { DirtyGtkMenu *menu; GtkMenuItem *menu_item; - GtkTearoffMenuItem *tear; menu_item = add_menu_item(parent, item, MENU_SUBMENU); menu = dirty_gtk_menu_new(); gtk_menu_item_set_submenu(menu_item, GTK_WIDGET(menu->gtk_menu_shell)); - tear = GTK_TEAROFF_MENU_ITEM(gtk_tearoff_menu_item_new()); - dirty_gtk_menu_append(menu, GTK_WIDGET(tear)); - - if (tearoff) - *tearoff = tear; - return menu; } @@ -231,7 +227,6 @@ static void make_menu_from_tree_rec(GNode * tree, DirtyGtkMenu * parent) { tree_item *item; DirtyGtkMenu *menu; - GtkTearoffMenuItem *tearoff; if (canceled_using_tree()) return; @@ -242,15 +237,13 @@ static void make_menu_from_tree_rec(GNode * tree, DirtyGtkMenu * parent) } item = tree->data; - menu = add_sub_menu(parent, item, &tearoff); + menu = add_sub_menu(parent, item); push_mnemonics(); g_node_children_foreach(tree, G_TRAVERSE_ALL, (GNodeForeachFunc) make_menu_from_tree_rec, menu); - g_hash_table_insert(dir_menu_hash, g_strdup(item->path), tearoff); - dirty_gtk_menu_release(menu); pop_mnemonics(); } @@ -338,7 +331,6 @@ static DirtyGtkMenu *begin_rebuild(GtkMenuItem * root, GCallback func) gtk_menu_item_deselect(root); menu = dirty_gtk_menu_new(); - dirty_gtk_menu_append(menu, gtk_tearoff_menu_item_new()); rebuilder = gtk_menu_item_new_with_mnemonic(add_mnemonic(_("Rebuild this menu"))); diff --git a/src/include/dirty_gtk.h b/src/include/dirty_gtk.h index 48a32c0..347a02d 100644 --- a/src/include/dirty_gtk.h +++ b/src/include/dirty_gtk.h @@ -6,10 +6,12 @@ typedef struct { GtkMenuShell *gtk_menu_shell; GList *last_child; + GtkTearoffMenuItem *tearoff; } DirtyGtkMenu; DirtyGtkMenu *dirty_gtk_menu_new(void); void dirty_gtk_menu_append(DirtyGtkMenu * menu, GtkWidget * item); +GtkTearoffMenuItem *dirty_gtk_menu_get_tearoff(DirtyGtkMenu * menu); void dirty_gtk_menu_release(DirtyGtkMenu * menu); #endif -- 2.11.4.GIT