[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