From b66902ef7ab41d50a08890df24021554d645683a Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Thu, 16 Sep 2010 21:18:14 +0200 Subject: [PATCH] Make KatzeArrayAction::activate-item-alt fully autonomous Implementing the signal and returning TRUE makes it unneeded to implement activate-item as well now. --- katze/katze-arrayaction.c | 35 +++++++++++++++------ midori/midori-browser.c | 65 +++++++++++++++------------------------ 2 files changed, 50 insertions(+), 50 deletions(-) diff --git a/katze/katze-arrayaction.c b/katze/katze-arrayaction.c index c031a245..47fc08e9 100644 --- a/katze/katze-arrayaction.c +++ b/katze/katze-arrayaction.c @@ -133,6 +133,15 @@ katze_array_action_class_init (KatzeArrayActionClass* class) G_TYPE_BOOLEAN, 2, GTK_TYPE_MENU_SHELL, KATZE_TYPE_ITEM); + /** + * KatzeArrayAction::activate-item: + * @array: the object on which the signal is emitted + * @item: the item being activated + * + * An item was clicked with the first button. + * + * Deprecated: 0.2.8: Use "activate-item-alt" instead. + **/ signals[ACTIVATE_ITEM] = g_signal_new ("activate-item", G_TYPE_FROM_CLASS (class), (GSignalFlags) (G_SIGNAL_RUN_LAST), @@ -149,8 +158,7 @@ katze_array_action_class_init (KatzeArrayActionClass* class) * @item: the item being activated * @button: the mouse button pressed * - * An item was clicked with a particular button. Use this if you need - * to handle middle or right clicks specially. + * An item was clicked, with the specified @button. * * Return value: %TRUE if the event was handled. If %FALSE is returned, * the default "activate-item" signal is emitted. @@ -286,12 +294,24 @@ katze_array_action_activate (GtkAction* action) GTK_ACTION_CLASS (katze_array_action_parent_class)->activate (action); } +static void +katze_array_action_activate_item (KatzeArrayAction* action, + KatzeItem* item, + gint button) +{ + gboolean handled = FALSE; + g_signal_emit (action, signals[ACTIVATE_ITEM_ALT], 0, item, + button, &handled); + if (!handled) + g_signal_emit (action, signals[ACTIVATE_ITEM], 0, item); +} + static void katze_array_action_menu_activate_cb (GtkWidget* proxy, KatzeArrayAction* array_action) { KatzeItem* item = g_object_get_data (G_OBJECT (proxy), "KatzeItem"); - g_signal_emit (array_action, signals[ACTIVATE_ITEM], 0, item); + katze_array_action_activate_item (array_action, item, 1); } static gboolean @@ -300,13 +320,8 @@ katze_array_action_menu_button_press_cb (GtkWidget* proxy, KatzeArrayAction* array_action) { KatzeItem* item = g_object_get_data (G_OBJECT (proxy), "KatzeItem"); - gboolean handled; - g_signal_emit (array_action, signals[ACTIVATE_ITEM_ALT], 0, item, - event->button, &handled); - - if (!handled) - g_signal_emit (array_action, signals[ACTIVATE_ITEM], 0, item); + katze_array_action_activate_item (array_action, item, event->button); /* we need to block the 'activate' handler which would be called * otherwise as well */ @@ -458,7 +473,7 @@ katze_array_action_proxy_clicked_cb (GtkWidget* proxy, array = (KatzeArray*)g_object_get_data (G_OBJECT (proxy), "KatzeArray"); if (KATZE_IS_ITEM (array) && katze_item_get_uri ((KatzeItem*)array)) { - g_signal_emit (array_action, signals[ACTIVATE_ITEM], 0, array); + katze_array_action_activate_item (array_action, KATZE_ITEM (array), 1); return; } diff --git a/midori/midori-browser.c b/midori/midori-browser.c index 2edca995..b4db5b1f 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -2652,28 +2652,23 @@ midori_browser_menu_item_deselect_cb (GtkWidget* menuitem, _midori_browser_set_statusbar_text (browser, NULL); } -static void -midori_bookmarkbar_activate_item (GtkAction* action, - KatzeItem* item, - MidoriBrowser* browser) -{ - midori_browser_open_bookmark (browser, item); -} - static gboolean midori_bookmarkbar_activate_item_alt (GtkAction* action, KatzeItem* item, guint button, MidoriBrowser* browser) { - if (button == 2) + if (button == 1) + { + midori_browser_open_bookmark (browser, item); + } + else if (button == 2) { gint n = midori_browser_add_uri (browser, katze_item_get_uri (item)); midori_browser_set_current_page_smartly (browser, n); - return TRUE; } - return FALSE; + return TRUE; } static void @@ -2703,33 +2698,28 @@ _action_trash_populate_popup (GtkAction* action, gtk_widget_show (menuitem); } -static void -_action_trash_activate_item (GtkAction* action, - KatzeItem* item, - MidoriBrowser* browser) -{ - guint n = midori_browser_add_item (browser, item); - midori_browser_set_current_page (browser, n); - katze_array_remove_item (browser->trash, item); - _midori_browser_update_actions (browser); -} - static gboolean _action_trash_activate_item_alt (GtkAction* action, KatzeItem* item, guint button, MidoriBrowser* browser) { - if (button == 2) + if (button == 1) { - gint n = midori_browser_add_uri (browser, katze_item_get_uri (item)); + guint n = midori_browser_add_item (browser, item); + midori_browser_set_current_page (browser, n); + katze_array_remove_item (browser->trash, item); + _midori_browser_update_actions (browser); + } + else if (button == 2) + { + gint n = midori_browser_add_item (browser, item); midori_browser_set_current_page_smartly (browser, n); katze_array_remove_item (browser->trash, item); _midori_browser_update_actions (browser); - return TRUE; } - return FALSE; + return TRUE; } /* static */ void @@ -2899,16 +2889,17 @@ _action_window_populate_popup (GtkAction* action, } static void -_action_window_activate_item (GtkAction* action, - KatzeItem* item, - MidoriBrowser* browser) +_action_window_activate_item_alt (GtkAction* action, + KatzeItem* item, + gint button, + MidoriBrowser* browser) { - guint i, n; - GtkWidget* view; + guint i; + guint n = katze_array_get_length (browser->proxy_array); - n = katze_array_get_length (browser->proxy_array); for (i = 0; i < n; i++) { + GtkWidget* view; view = gtk_notebook_get_nth_page (GTK_NOTEBOOK (browser->notebook), i); if (midori_view_get_proxy_item (MIDORI_VIEW (view)) == item) gtk_notebook_set_current_page (GTK_NOTEBOOK (browser->notebook), i); @@ -5683,8 +5674,6 @@ midori_browser_init (MidoriBrowser* browser) g_object_connect (action, "signal::populate-popup", _action_trash_populate_popup, browser, - "signal::activate-item", - _action_trash_activate_item, browser, "signal::activate-item-alt", _action_trash_activate_item_alt, browser, NULL); @@ -5701,8 +5690,6 @@ midori_browser_init (MidoriBrowser* browser) g_object_connect (action, "signal::populate-folder", _action_bookmarks_populate_folder, browser, - "signal::activate-item", - midori_bookmarkbar_activate_item, browser, "signal::activate-item-alt", midori_bookmarkbar_activate_item_alt, browser, NULL); @@ -5718,8 +5705,6 @@ midori_browser_init (MidoriBrowser* browser) g_object_connect (action, "signal::populate-popup", _action_tools_populate_popup, browser, - "signal::activate-item", - midori_bookmarkbar_activate_item, browser, "signal::activate-item-alt", midori_bookmarkbar_activate_item_alt, browser, NULL); @@ -5736,8 +5721,8 @@ midori_browser_init (MidoriBrowser* browser) g_object_connect (action, "signal::populate-popup", _action_window_populate_popup, browser, - "signal::activate-item", - _action_window_activate_item, browser, + "signal::activate-item-alt", + _action_window_activate_item_alt, browser, NULL); gtk_action_group_add_action_with_accel (browser->action_group, action, ""); g_object_unref (action);