--- /home/zoe/work/kazehakase-0.1.7/src/kz-bookmark-item.c 2004-06-14 22:44:15.000000000 +0900 +++ kz-bookmark-item.c 2004-07-01 00:36:02.000000000 +0900 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * $Id: kz-bookmark-item.c,v 1.19 2004/06/14 13:44:15 ikezoe Exp $ + * $Id: kz-bookmark-item.c,v 1.20 2004/06/30 15:36:02 ikezoe Exp $ */ #include "kz-bookmark-item.h" @@ -491,7 +491,7 @@ kz = menu->kz; event_button = (GdkEventButton *)event; - + switch(event_button->button) { case 1: @@ -503,7 +503,7 @@ gtk_menu_popup(GTK_MENU(menu->sub_menu), NULL, NULL, gtkutil_menu_position_under_widget, GTK_WIDGET(menu), - event_button->button, event_button->time); + 0, event_button->time); } else { @@ -535,6 +535,8 @@ event->button, event->time); break; + default: + break; } return TRUE; --- /home/zoe/work/kazehakase-0.1.7/src/kz-bookmark-menu.c 2004-06-14 14:43:08.000000000 +0900 +++ kz-bookmark-menu.c 2004-07-01 00:30:40.000000000 +0900 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * $Id: kz-bookmark-menu.c,v 1.33 2004/06/14 05:43:08 ikezoe Exp $ + * $Id: kz-bookmark-menu.c,v 1.36 2004/06/30 02:24:35 ikezoe Exp $ */ #include "kz-bookmark-menu.h" @@ -35,6 +35,7 @@ #define KZ_BOOKMARK_MENU_TOOLTIP_KEY "KzBookmarkMenu::ToolTips" #define KZ_BOOKMARK_MENU_EMPTY_KEY "KzBookmarkMEnu::Empty" #define KZ_BOOKMARK_MENU_PROXY_KEY "KzBookmarkMenu::IsFolderProxy" +#define KZ_BOOKMARK_MENU_BUTTON_KEY "KzBookmarkMenu::MouseButton" static gboolean cb_menu_item_button_press (GtkWidget *widget, @@ -167,7 +168,6 @@ kz_bookmark_menu_create_submenu (KzBookmark *folder, KzWindow *kz) { GtkWidget *submenu, *menu_item; - const gchar *link, *title; g_return_val_if_fail(KZ_IS_BOOKMARK(folder), NULL); g_return_val_if_fail(kz_bookmark_is_folder(folder), NULL); @@ -176,11 +176,6 @@ /* create submenu */ submenu = gtk_menu_new(); - /* channel link */ - link = kz_bookmark_get_link(folder); - title = kz_bookmark_get_document_title(folder); - if (!title || !* title) title = kz_bookmark_get_title(folder); - menu_item = kz_bookmark_menu_create_menuitem(folder, kz, TRUE); if (menu_item) { @@ -423,6 +418,8 @@ { KzBookmark *item; const gchar *uri; + gint button; + gboolean is_folder_proxy; g_return_if_fail(KZ_IS_WINDOW(kz)); @@ -430,14 +427,54 @@ KZ_BOOKMARK_MENU_BOOKMARK_KEY); g_return_if_fail(item); - if (kz_bookmark_is_folder(item)) return; + button = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), + KZ_BOOKMARK_MENU_BUTTON_KEY)); - uri = kz_bookmark_get_link(item); + is_folder_proxy = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), + KZ_BOOKMARK_MENU_PROXY_KEY)); - if (uri) + if (kz_bookmark_is_folder(item) && !is_folder_proxy) + return; + + uri = kz_bookmark_get_link(item); + + switch (button) { - kz_window_load_url(kz, uri); + case 2: + if (kz_bookmark_is_folder(item)) + { + EggAction *action; + kz_actions_set_bookmark_for_action(kz, item); + action = egg_action_group_get_action(kz->actions, + "OpenAllBookmarks"); + if (action) + egg_action_activate(action); + kz_actions_set_bookmark_for_action(kz, NULL); + } + else if (uri) + kz_window_open_new_tab(kz, uri); + break; + default: + if (uri) + { + kz_window_load_url(kz, uri); + } + else if (kz_bookmark_is_folder(item)) + { + GtkWidget *editor; + + editor = kz_bookmark_editor_new(kz_bookmarks->menu); + kz_bookmark_editor_folder_view_select + (KZ_BOOKMARK_EDITOR(editor), item); + gtk_widget_show(editor); + } + break; } + + button = 0; + g_object_set_data(G_OBJECT(widget), + KZ_BOOKMARK_MENU_BUTTON_KEY, + GINT_TO_POINTER(button)); } @@ -446,7 +483,7 @@ cb_menu_item_button_press (GtkWidget *widget, GdkEventButton *event, KzWindow *kz) { - return FALSE; + return FALSE; } @@ -457,6 +494,7 @@ KzBookmark *item; const gchar *uri; gboolean keep = FALSE; + gint button = event->button; g_return_val_if_fail(KZ_IS_WINDOW(kz), FALSE); @@ -466,24 +504,17 @@ uri = kz_bookmark_get_link(item); - switch (event->button) - { - case 1: - if (uri) - { - kz_window_load_url(kz, uri); - } - else if (kz_bookmark_is_folder(item)) - { - GtkWidget *editor; + g_object_set_data(G_OBJECT(widget), + KZ_BOOKMARK_MENU_BUTTON_KEY, + GINT_TO_POINTER(button)); - editor = kz_bookmark_editor_new(kz_bookmarks->menu); - kz_bookmark_editor_folder_view_select - (KZ_BOOKMARK_EDITOR(editor), item); - gtk_widget_show(editor); - } - break; + switch (button) + { case 2: + KZ_CONF_GET("Global", "keep_bookmark_menu", keep, BOOL); + if (!keep) + return FALSE; + if (kz_bookmark_is_folder(item)) { EggAction *action; @@ -496,10 +527,13 @@ } else if (uri) kz_window_open_new_tab(kz, uri); - KZ_CONF_GET("Global", "keep_bookmark_menu", keep, BOOL); - if (keep) - return TRUE; - return FALSE; + /* reset release button state */ + button = 0; + g_object_set_data(G_OBJECT(widget), + KZ_BOOKMARK_MENU_BUTTON_KEY, + GINT_TO_POINTER(button)); + + return TRUE; break; case 3: kz_actions_popup_bookmark_menu_modal(kz, item,