[Xfce4-commits] <midori:master> Handle URIs from command line in midori_load_session

Christian Dywan noreply at xfce.org
Mon Nov 26 19:06:04 CET 2012


Updating branch refs/heads/master
         to 69556adb42178b90f2834a75a3a7c9718300c8e2 (commit)
       from 114214bc5c13bfe79e436664dc2c1ddc20b2c557 (commit)

commit 69556adb42178b90f2834a75a3a7c9718300c8e2
Author: Christian Dywan <christian at twotoasts.de>
Date:   Mon Nov 26 18:57:35 2012 +0100

    Handle URIs from command line in midori_load_session
    
    This allows to cleanly ensure that position and state is
    exactly what it would be if opened remotely.

 midori/main.c           |   37 +++++++++++--------------------------
 midori/midori-session.c |   39 +++++++++++++++++++++++++++------------
 2 files changed, 38 insertions(+), 38 deletions(-)

diff --git a/midori/main.c b/midori/main.c
index febab2a..600014f 100644
--- a/midori/main.c
+++ b/midori/main.c
@@ -761,6 +761,10 @@ main (int    argc,
     midori_startup_timer ("Session read: \t%f");
 
     trash = katze_array_new (KATZE_TYPE_ITEM);
+    g_signal_connect_after (trash, "add-item",
+        G_CALLBACK (midori_trash_add_item_cb), NULL);
+    g_signal_connect_after (trash, "remove-item",
+        G_CALLBACK (midori_trash_remove_item_cb), NULL);
     katze_assign (config_file, g_build_filename (config, "tabtrash.xbel", NULL));
     error = NULL;
     if (!midori_array_from_file (trash, config_file, "xbel", &error))
@@ -804,36 +808,20 @@ main (int    argc,
     g_string_free (error_messages, TRUE);
 
     /* If -e or --execute was specified, "uris" refers to the command. */
-    if (!execute)
-    {
-        i = 0;
-        while (uris && uris[i])
-        {
-            item = katze_item_new ();
-            item->uri = sokoke_prepare_uri (uris[i]);
-            /* Never delay command line arguments */
-            katze_item_set_meta_integer (item, "delay", 0);
-            katze_array_add_item (session, item);
-        }
-        i++;
-    }
+    if (execute)
+        g_object_set_data (G_OBJECT (app), "execute-commands", uris);
+    else
+        g_object_set_data (G_OBJECT (app), "open-uris", uris);
+    g_object_set_data_full (G_OBJECT (app), "extensions", extensions, (GDestroyNotify)g_strfreev);
+    katze_item_set_parent (KATZE_ITEM (session), app);
 
     katze_assign (config_file, g_build_filename (config, "search", NULL));
     midori_search_engines_set_filename (search_engines, config_file);
 
-    g_signal_connect_after (trash, "add-item",
-        G_CALLBACK (midori_trash_add_item_cb), NULL);
-    g_signal_connect_after (trash, "remove-item",
-        G_CALLBACK (midori_trash_remove_item_cb), NULL);
-
-    katze_item_set_parent (KATZE_ITEM (session), app);
-    g_object_set_data_full (G_OBJECT (app), "extensions", extensions, (GDestroyNotify)g_strfreev);
-
     if (midori_app_get_crashed (app)
      && katze_object_get_boolean (settings, "show-crash-dialog")
-     && !katze_array_is_empty (session))
+     && uris && *uris && !execute)
         diagnostic_dialog = TRUE;
-
     if (diagnostic_dialog)
     {
         load_on_startup = midori_show_diagnostic_dialog (settings, session);
@@ -862,9 +850,6 @@ main (int    argc,
     g_idle_add (midori_load_extensions, app);
     g_idle_add (midori_load_session, session);
 
-    if (execute)
-        g_object_set_data (G_OBJECT (app), "execute-command", uris);
-
     gtk_main ();
 
     g_object_notify (G_OBJECT (settings), "load-on-startup");
diff --git a/midori/midori-session.c b/midori/midori-session.c
index dbdb425..4c480f3 100644
--- a/midori/midori-session.c
+++ b/midori/midori-session.c
@@ -16,6 +16,7 @@
 #include "midori-array.h"
 #include "midori-websettings.h"
 #include "midori-extension.h"
+#include "sokoke.h"
 
 #include <glib/gi18n-lib.h>
 
@@ -458,16 +459,17 @@ midori_browser_weak_notify_cb (MidoriBrowser* browser,
 gboolean
 midori_load_session (gpointer data)
 {
-    KatzeArray* _session = KATZE_ARRAY (data);
+    KatzeArray* saved_session = KATZE_ARRAY (data);
     MidoriBrowser* browser;
-    MidoriApp* app = katze_item_get_parent (KATZE_ITEM (_session));
+    MidoriApp* app = katze_item_get_parent (KATZE_ITEM (saved_session));
     MidoriWebSettings* settings = katze_object_get_object (app, "settings");
     MidoriStartup load_on_startup;
     gchar* config_file;
     KatzeArray* session;
     KatzeItem* item;
     gint64 current;
-    gchar** command = g_object_get_data (G_OBJECT (app), "execute-command");
+    gchar** open_uris = g_object_get_data (G_OBJECT (app), "open-uris");
+    gchar** execute_commands = g_object_get_data (G_OBJECT (app), "execute-commands");
     #ifdef G_ENABLE_DEBUG
     gboolean startup_timer = midori_debug ("startup");
     GTimer* timer = startup_timer ? g_timer_new () : NULL;
@@ -493,19 +495,19 @@ midori_load_session (gpointer data)
         G_CALLBACK (midori_session_accel_map_changed_cb), NULL);
 
     load_on_startup = (MidoriStartup)g_object_get_data (G_OBJECT (settings), "load-on-startup");
-    if (katze_array_is_empty (_session))
+    if (katze_array_is_empty (saved_session))
     {
         item = katze_item_new ();
         if (load_on_startup == MIDORI_STARTUP_BLANK_PAGE)
             katze_item_set_uri (item, "about:blank");
         else
             item->uri = katze_object_get_string (settings, "homepage");
-        katze_array_add_item (_session, item);
+        katze_array_add_item (saved_session, item);
         g_object_unref (item);
     }
 
     session = midori_browser_get_proxy_array (browser);
-    KATZE_ARRAY_FOREACH_ITEM (item, _session)
+    KATZE_ARRAY_FOREACH_ITEM (item, saved_session)
     {
         katze_item_set_meta_integer (item, "append", 1);
         katze_item_set_meta_integer (item, "dont-write-history", 1);
@@ -514,18 +516,31 @@ midori_load_session (gpointer data)
             katze_item_set_meta_integer (item, "delay", MIDORI_DELAY_DELAYED);
         midori_browser_add_item (browser, item);
     }
-    current = katze_item_get_meta_integer (KATZE_ITEM (_session), "current");
-    if (!(item = katze_array_get_nth_item (_session, current)))
+
+    current = katze_item_get_meta_integer (KATZE_ITEM (saved_session), "current");
+    if (!(item = katze_array_get_nth_item (saved_session, current)))
     {
         current = 0;
-        item = katze_array_get_nth_item (_session, 0);
+        item = katze_array_get_nth_item (saved_session, 0);
     }
     midori_browser_set_current_page (browser, current);
     if (midori_uri_is_blank (katze_item_get_uri (item)))
         midori_browser_activate_action (browser, "Location");
 
+    if (open_uris != NULL)
+    {
+        guint i = 0;
+        while (open_uris[i])
+        {
+            gchar* uri = sokoke_prepare_uri (open_uris[i]);
+            midori_browser_add_uri (browser, uri);
+            g_free (uri);
+            i++;
+        }
+    }
+
     g_object_unref (settings);
-    g_object_unref (_session);
+    g_object_unref (saved_session);
     g_free (config_file);
 
     g_signal_connect_after (browser, "add-tab",
@@ -537,8 +552,8 @@ midori_load_session (gpointer data)
     g_object_weak_ref (G_OBJECT (session),
         (GWeakNotify)(midori_browser_weak_notify_cb), browser);
 
-    if (command)
-        midori_app_send_command (app, command);
+    if (execute_commands != NULL)
+        midori_app_send_command (app, execute_commands);
 
     #ifdef G_ENABLE_DEBUG
     if (startup_timer)


More information about the Xfce4-commits mailing list