]> spindle.queued.net Git - midori/commitdiff
Support creating new windows by dragging tabs outside
authorChristian Dywan <christian@twotoasts.de>
Thu, 18 Aug 2011 16:06:34 +0000 (18:06 +0200)
committerChristian Dywan <christian@twotoasts.de>
Thu, 18 Aug 2011 16:06:34 +0000 (18:06 +0200)
midori/midori-browser.c

index 04042497ce854052cac43f1a0032142570eedcaa..5f111272eafe8c3d489bbc89f0b8e3c4ff5fc017 100644 (file)
@@ -5015,6 +5015,26 @@ midori_browser_notebook_reorder_tab_cb (GtkNotebook*     notebook,
     return TRUE;
 }
 
+static GtkWidget*
+midori_browser_notebook_create_window_cb (GtkNotebook*   notebook,
+                                          MidoriView*    view,
+                                          gint           x,
+                                          gint           y,
+                                          MidoriBrowser* browser)
+{
+    MidoriBrowser* new_browser;
+    g_signal_emit (browser, signals[NEW_WINDOW], 0, NULL, &new_browser);
+    if (new_browser)
+    {
+        GtkWidget* new_notebook = katze_object_get_object (new_browser, "notebook");
+        g_object_unref (new_notebook);
+        gtk_window_move (GTK_WINDOW (browser), x, y);
+        return new_notebook;
+    }
+    else /* No MidoriApp, so this is app or private mode */
+        return NULL;
+}
+
 static void
 midori_browser_switch_tab_cb (GtkWidget*     menuitem,
                               MidoriBrowser* browser)
@@ -6208,6 +6228,8 @@ midori_browser_init (MidoriBrowser* browser)
                       browser);
     g_signal_connect (browser->notebook, "reorder-tab",
                       G_CALLBACK (midori_browser_notebook_reorder_tab_cb), NULL);
+    g_signal_connect (browser->notebook, "create-window",
+                      G_CALLBACK (midori_browser_notebook_create_window_cb), browser);
     gtk_widget_show (browser->notebook);
 
     /* Inspector container */