]> spindle.queued.net Git - midori/commitdiff
Implement Open new pages in: New window preference
authorChristian Dywan <christian@twotoasts.de>
Sun, 17 May 2009 18:29:31 +0000 (20:29 +0200)
committerChristian Dywan <christian@twotoasts.de>
Sun, 17 May 2009 18:29:31 +0000 (20:29 +0200)
midori/midori-app.c
midori/midori-browser.c
midori/midori-view.c

index 124527908461918c404a472606f8768a4eb4fd1d..f9a430c02058d978a5352d2a38d6acb2ff70bb0b 100644 (file)
@@ -135,13 +135,18 @@ midori_browser_focus_in_event_cb (MidoriBrowser* browser,
 
 static void
 midori_browser_new_window_cb (MidoriBrowser* browser,
-                              const gchar*   uri,
+                              MidoriBrowser* new_browser,
                               MidoriApp*     app)
 {
-    MidoriBrowser* new_browser = midori_app_create_browser (app);
-    midori_app_add_browser (app, new_browser);
+    g_object_set (new_browser,
+                  "settings", app->settings,
+                  "bookmarks", app->bookmarks,
+                  "trash", app->trash,
+                  "search-engines", app->search_engines,
+                  "history", app->history,
+                  NULL);
 
-    midori_browser_add_uri (new_browser, uri);
+    midori_app_add_browser (app, new_browser);
     gtk_widget_show (GTK_WIDGET (new_browser));
 }
 
index 691151152ad51752416fd569636e1528464b4df7..3a0dd568be9dcd845468216c63b8873cb225316a 100644 (file)
@@ -1109,7 +1109,9 @@ midori_view_new_window_cb (GtkWidget*     view,
                            const gchar*   uri,
                            MidoriBrowser* browser)
 {
-    g_signal_emit (browser, signals[NEW_WINDOW], 0, uri);
+    MidoriBrowser* new_browser = g_object_new (MIDORI_TYPE_BROWSER, NULL);
+    midori_browser_add_uri (new_browser, uri);
+    g_signal_emit (browser, signals[NEW_WINDOW], 0, new_browser);
 }
 
 static void
@@ -1120,12 +1122,10 @@ midori_view_new_view_cb (GtkWidget*     view,
 {
     if (where == MIDORI_NEW_VIEW_WINDOW)
     {
-        /* MidoriBrowser* new_browser = g_object_new (MIDORI_TYPE_BROWSER,
-            NULL);
-        g_signal_emit (browser, signals[NEW_BROWSER], 0, new_browser); */
-        g_debug ("Opening all pages in new windows not implemented");
-        midori_browser_set_current_page (browser,
-            midori_browser_add_tab (browser, new_view));
+        MidoriBrowser* new_browser = g_object_new (MIDORI_TYPE_BROWSER, NULL);
+        midori_browser_add_tab (new_browser, new_view);
+        midori_browser_set_current_tab (new_browser, new_view);
+        g_signal_emit (browser, signals[NEW_WINDOW], 0, new_browser);
     }
     else
     {
@@ -1525,6 +1525,15 @@ midori_browser_class_init (MidoriBrowserClass* class)
     GObjectClass* gobject_class;
     GParamFlags flags;
 
+    /**
+     * MidoriBrowser::new-window:
+     * @browser: the object on which the signal is emitted
+     * @window: a new browser window
+     *
+     * Emitted when a new browser window was created.
+     *
+     * Note: Before 0.1.7 the second argument was an URI string.
+     */
     signals[NEW_WINDOW] = g_signal_new (
         "new-window",
         G_TYPE_FROM_CLASS (class),
@@ -1532,9 +1541,9 @@ midori_browser_class_init (MidoriBrowserClass* class)
         G_STRUCT_OFFSET (MidoriBrowserClass, new_window),
         0,
         NULL,
-        g_cclosure_marshal_VOID__STRING,
+        g_cclosure_marshal_VOID__OBJECT,
         G_TYPE_NONE, 1,
-        G_TYPE_STRING);
+        MIDORI_TYPE_BROWSER);
 
     signals[ADD_TAB] = g_signal_new (
         "add-tab",
@@ -1849,7 +1858,9 @@ static void
 _action_window_new_activate (GtkAction*     action,
                              MidoriBrowser* browser)
 {
-    g_signal_emit (browser, signals[NEW_WINDOW], 0, "");
+    MidoriBrowser* new_browser = g_object_new (MIDORI_TYPE_BROWSER, NULL);
+    midori_browser_add_uri (new_browser, "");
+    g_signal_emit (browser, signals[NEW_WINDOW], 0, new_browser);
 }
 
 static void
@@ -3174,7 +3185,11 @@ midori_browser_bookmark_open_in_window_activate_cb (GtkWidget*     menuitem,
     uri = katze_item_get_uri (item);
 
     if (uri && *uri)
-        g_signal_emit (browser, signals[NEW_WINDOW], 0, uri);
+    {
+        MidoriBrowser* new_browser = g_object_new (MIDORI_TYPE_BROWSER, NULL);
+        midori_browser_add_uri (new_browser, uri);
+        g_signal_emit (browser, signals[NEW_WINDOW], 0, new_browser);
+    }
 }
 
 static void
index 2e5466a36bf78c16b482e40e95f2a8df4f31fb36..8097c3b5fac98306772edd9ab99f92f3cd368a0f 100644 (file)
@@ -42,6 +42,9 @@ midori_search_action_get_icon (KatzeNet*  net,
                                KatzeItem* item,
                                GtkWidget* widget);
 
+static void
+midori_view_construct_web_view (MidoriView* view);
+
 struct _MidoriView
 {
     GtkScrolledWindow parent_instance;
@@ -1387,7 +1390,7 @@ webkit_web_view_create_web_view_cb (GtkWidget*      web_view,
         "net", view->net,
         "settings", view->settings,
         NULL);
-    midori_view_set_uri (MIDORI_VIEW (new_view), "");
+    midori_view_construct_web_view (MIDORI_VIEW (new_view));
     g_signal_connect (MIDORI_VIEW (new_view)->web_view, "web-view-ready",
       G_CALLBACK (webkit_web_view_web_view_ready_cb), view);
     return MIDORI_VIEW (new_view)->web_view;
@@ -1916,6 +1919,8 @@ midori_view_construct_web_view (MidoriView* view)
     WebKitWebFrame* web_frame;
     gpointer inspector;
 
+    g_return_if_fail (!view->web_view);
+
     view->web_view = webkit_web_view_new ();
 
     /* Load something to avoid a bug where WebKit might not set a main frame */