]> spindle.queued.net Git - midori/commitdiff
Implement 'Close other tabs' menu item in tab context menu
authorChristian Dywan <christian@twotoasts.de>
Thu, 14 Jan 2010 01:49:19 +0000 (02:49 +0100)
committerChristian Dywan <christian@twotoasts.de>
Thu, 14 Jan 2010 01:49:19 +0000 (02:49 +0100)
midori/midori-view.c

index 22a035718651a9308386169f804cdc33a5f3c2e5..b2415811b404bc6102fcd2bad6d34d7ee4d269a0 100644 (file)
@@ -3617,6 +3617,23 @@ midori_view_tab_label_menu_duplicate_tab_cb (GtkWidget*  menuitem,
     g_signal_emit (view, signals[NEW_VIEW], 0, new_view, where);
 }
 
+static void
+midori_view_browser_close_tabs_cb (GtkWidget* view,
+                                   gpointer   data)
+{
+    GtkWidget* remaining_view = data;
+    if (view != remaining_view)
+        gtk_widget_destroy (view);
+}
+
+static void
+midori_view_tab_label_menu_close_other_tabs_cb (GtkWidget* menuitem,
+                                                GtkWidget* view)
+{
+    MidoriBrowser* browser = midori_browser_get_for_widget (view);
+    midori_browser_foreach (browser, midori_view_browser_close_tabs_cb, view);
+}
+
 static void
 midori_view_tab_label_menu_minimize_tab_cb (GtkWidget*  menuitem,
                                             MidoriView* view)
@@ -3683,6 +3700,10 @@ midori_view_get_tab_menu (MidoriView* view)
         G_CALLBACK (midori_view_tab_label_menu_minimize_tab_cb), view);
     menuitem = gtk_separator_menu_item_new ();
     gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
+    menuitem = gtk_menu_item_new_with_mnemonic (_("Close ot_her Tabs"));
+    gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
+    g_signal_connect (menuitem, "activate",
+        G_CALLBACK (midori_view_tab_label_menu_close_other_tabs_cb), view);
     menuitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLOSE, NULL);
     gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
     g_signal_connect (menuitem, "activate",