]> spindle.queued.net Git - midori/commitdiff
Leave setting up windows to the app, which is a lot faster
authorChristian Dywan <christian@twotoasts.de>
Fri, 30 Oct 2009 22:43:28 +0000 (23:43 +0100)
committerChristian Dywan <christian@twotoasts.de>
Sat, 31 Oct 2009 03:29:15 +0000 (04:29 +0100)
With a mature history setting up a browser window can be slow, but
if it's setup at creation time it is extremely fast.

The signal prototype of MidoriBrowser::new-window had to change,
all call sites were adjusted.

extensions/feed-panel/feed-panel.c
midori/marshal.list
midori/midori-app.c
midori/midori-browser.c

index bbef14f647cf942ef8d7500760923ab75cd1c845..6e4d310c7bc29541f2ed941b511353f3da15f6c7 100644 (file)
@@ -509,8 +509,11 @@ feed_panel_open_in_window_activate_cb (GtkWidget* menuitem,
     if (uri && *uri)
     {
         MidoriBrowser* browser;
+        MidoriBrowser* new_browser;
+
         browser = midori_browser_get_for_widget (GTK_WIDGET (panel));
-        g_signal_emit_by_name (browser, "new-window", uri);
+        g_signal_emit_by_name (browser, "new-window", NULL, &new_browser);
+        midori_browser_add_uri (new_browser, uri);
     }
 }
 
index 5ca263beb369d2b0b081a03b7d0d31680bf0a1e7..8d27c7c662644d84b83268f30a4034e829679e94 100644 (file)
@@ -1,5 +1,6 @@
 BOOLEAN:OBJECT
 BOOLEAN:VOID
+OBJECT:OBJECT
 VOID:BOOLEAN,STRING
 VOID:OBJECT,ENUM
 VOID:STRING,BOOLEAN
index f5c1c522b01fbd7191c05ec96da0911a6a08c6bd..55bf2bd5a26a7628707e9b72e70b05285fcd4f33 100644 (file)
@@ -140,21 +140,26 @@ midori_browser_focus_in_event_cb (MidoriBrowser* browser,
     return FALSE;
 }
 
-static void
+static MidoriBrowser*
 midori_browser_new_window_cb (MidoriBrowser* browser,
                               MidoriBrowser* new_browser,
                               MidoriApp*     app)
 {
-    g_object_set (new_browser,
-                  "settings", app->settings,
-                  "bookmarks", app->bookmarks,
-                  "trash", app->trash,
-                  "search-engines", app->search_engines,
-                  "history", app->history,
-                  NULL);
+    if (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);
+    else
+        new_browser = midori_app_create_browser (app);
 
     midori_app_add_browser (app, new_browser);
     gtk_widget_show (GTK_WIDGET (new_browser));
+
+    return new_browser;
 }
 
 static gboolean
@@ -1003,6 +1008,9 @@ midori_app_add_browser (MidoriApp*     app,
  * Creates a #MidoriBrowser which inherits its settings,
  * bookmarks, trash, search engines and history from  @app.
  *
+ * Note that creating a browser this way can be a lot
+ * faster than setting it up manually.
+ *
  * Return value: a new #MidoriBrowser
  *
  * Since: 0.1.2
index 254a3dde1739110373bf73c8b96893c7a4edf464..2ef5c0a16bc37f3e5d4de276ad67352787b3b9db 100644 (file)
@@ -1194,8 +1194,8 @@ midori_view_new_window_cb (GtkWidget*     view,
                            const gchar*   uri,
                            MidoriBrowser* browser)
 {
-    MidoriBrowser* new_browser = g_object_new (MIDORI_TYPE_BROWSER, NULL);
-    g_signal_emit (browser, signals[NEW_WINDOW], 0, new_browser);
+    MidoriBrowser* new_browser;
+    g_signal_emit (browser, signals[NEW_WINDOW], 0, NULL, &new_browser);
     midori_browser_add_uri (new_browser, uri);
 }
 
@@ -1208,8 +1208,8 @@ midori_view_new_view_cb (GtkWidget*     view,
     midori_browser_view_copy_history (new_view, view, TRUE);
     if (where == MIDORI_NEW_VIEW_WINDOW)
     {
-        MidoriBrowser* new_browser = g_object_new (MIDORI_TYPE_BROWSER, NULL);
-        g_signal_emit (browser, signals[NEW_WINDOW], 0, new_browser);
+        MidoriBrowser* new_browser;
+        g_signal_emit (browser, signals[NEW_WINDOW], 0, NULL, &new_browser);
         midori_browser_add_tab (new_browser, new_view);
         midori_browser_set_current_tab (new_browser, new_view);
     }
@@ -1685,11 +1685,15 @@ midori_browser_class_init (MidoriBrowserClass* class)
     /**
      * MidoriBrowser::new-window:
      * @browser: the object on which the signal is emitted
-     * @window: a new browser window
+     * @window: a new browser window, or %NULL
      *
      * Emitted when a new browser window was created.
      *
      * Note: Before 0.1.7 the second argument was an URI string.
+     *
+     * Note: Since 0.2.1 the return value is a #MidoriBrowser
+     *
+     * Return value: a new #MidoriBrowser
      */
     signals[NEW_WINDOW] = g_signal_new (
         "new-window",
@@ -1698,8 +1702,8 @@ midori_browser_class_init (MidoriBrowserClass* class)
         G_STRUCT_OFFSET (MidoriBrowserClass, new_window),
         0,
         NULL,
-        g_cclosure_marshal_VOID__OBJECT,
-        G_TYPE_NONE, 1,
+        midori_cclosure_marshal_OBJECT__OBJECT,
+        MIDORI_TYPE_BROWSER, 1,
         MIDORI_TYPE_BROWSER);
 
     signals[ADD_TAB] = g_signal_new (
@@ -2061,8 +2065,8 @@ static void
 _action_window_new_activate (GtkAction*     action,
                              MidoriBrowser* browser)
 {
-    MidoriBrowser* new_browser = g_object_new (MIDORI_TYPE_BROWSER, NULL);
-    g_signal_emit (browser, signals[NEW_WINDOW], 0, new_browser);
+    MidoriBrowser* new_browser;
+    g_signal_emit (browser, signals[NEW_WINDOW], 0, NULL, &new_browser);
     midori_browser_add_uri (new_browser, "");
     midori_browser_activate_action (new_browser, "Location");
 }
@@ -3753,8 +3757,8 @@ midori_browser_bookmark_open_in_window_activate_cb (GtkWidget*     menuitem,
 
     if (uri && *uri)
     {
-        MidoriBrowser* new_browser = g_object_new (MIDORI_TYPE_BROWSER, NULL);
-        g_signal_emit (browser, signals[NEW_WINDOW], 0, new_browser);
+        MidoriBrowser* new_browser;
+        g_signal_emit (browser, signals[NEW_WINDOW], 0, NULL, &new_browser);
         midori_browser_add_uri (new_browser, uri);
     }
 }