[Xfce4-commits] <midori:master> Introduce about:dial/ :new/ :search alias URLs

Christian Dywan noreply at xfce.org
Sun Mar 10 14:54:01 CET 2013


Updating branch refs/heads/master
         to 3897ce273c9085d2ea582e41c137f6e898260cc1 (commit)
       from bd7bf7b5b04172641bbbca5e32fb7d9ac1167c2d (commit)

commit 3897ce273c9085d2ea582e41c137f6e898260cc1
Author: Christian Dywan <christian at twotoasts.de>
Date:   Sun Mar 10 14:36:23 2013 +0100

    Introduce about:dial/ :new/ :search alias URLs

 midori/midori-browser.c     |   59 ++++++++++++++----------------------------
 midori/midori-session.c     |    2 +-
 midori/midori-settings.vala |    3 +-
 midori/midori-view.c        |   21 +++++++++++++--
 4 files changed, 41 insertions(+), 44 deletions(-)

diff --git a/midori/midori-browser.c b/midori/midori-browser.c
index 572a0a7..591c15e 100644
--- a/midori/midori-browser.c
+++ b/midori/midori-browser.c
@@ -96,9 +96,7 @@ struct _MidoriBrowser
     gboolean show_navigationbar;
     gboolean show_statusbar;
     guint maximum_history_age;
-    gchar* location_entry_search;
     guint last_web_search;
-    gchar* news_aggregator;
 };
 
 G_DEFINE_TYPE (MidoriBrowser, midori_browser, GTK_TYPE_WINDOW)
@@ -579,8 +577,7 @@ midori_view_notify_load_status_cb (GtkWidget*      widget,
         _midori_browser_update_interface (browser, view);
         _midori_browser_set_statusbar_text (browser, view, NULL);
 
-        /* This is a hack to ensure that the address entry is focussed
-           with speed dial open. */
+        /* Focus the urlbar on blank pages */
         if (midori_view_is_blank (view))
             midori_browser_activate_action (browser, "Location");
     }
@@ -1617,7 +1614,7 @@ midori_browser_disconnect_tab (MidoriBrowser* browser,
        which is indicated by the proxy array having been unset. */
     if (katze_array_is_empty (browser->proxy_array))
     {
-        midori_browser_add_uri (browser, "");
+        midori_browser_add_uri (browser, "about:new");
         midori_browser_set_current_page (browser, 0);
     }
 
@@ -2317,14 +2314,14 @@ static void
 _action_window_new_activate (GtkAction*     action,
                              MidoriBrowser* browser)
 {
-    midori_view_new_window_cb (NULL, "", browser);
+    midori_view_new_window_cb (NULL, "about:home", browser);
 }
 
 static void
 _action_tab_new_activate (GtkAction*     action,
                           MidoriBrowser* browser)
 {
-    GtkWidget* view = midori_browser_add_uri (browser, "");
+    GtkWidget* view = midori_browser_add_uri (browser, "about:new");
     midori_browser_set_current_tab (browser, view);
 }
 
@@ -2455,7 +2452,8 @@ static void
 midori_browser_subscribe_to_news_feed (MidoriBrowser* browser,
                                        const gchar*   uri)
 {
-    if (browser->news_aggregator && *browser->news_aggregator)
+    const gchar* news_aggregator = midori_settings_get_news_aggregator (MIDORI_SETTINGS (browser->settings));
+    if (news_aggregator && *news_aggregator)
     {
         /* Thunderbird only accepts feed://, Liferea doesn't mind */
         gchar* feed = g_strdup (uri);
@@ -2467,11 +2465,11 @@ midori_browser_subscribe_to_news_feed (MidoriBrowser* browser,
             feed[3] = 'd';
         }
         /* Special-case Liferea because a helper script may be required */
-        if (g_str_equal (browser->news_aggregator, "liferea")
+        if (g_str_equal (news_aggregator, "liferea")
          && g_find_program_in_path ("liferea-add-feed"))
             sokoke_spawn_program ("liferea-add-feed", FALSE, feed, TRUE, FALSE);
         else
-            sokoke_spawn_program (browser->news_aggregator, TRUE, feed, TRUE, FALSE);
+            sokoke_spawn_program (news_aggregator, TRUE, feed, TRUE, FALSE);
         g_free (feed);
     }
     else
@@ -3855,7 +3853,8 @@ _action_location_submit_uri (GtkAction*     action,
         if (keywords == NULL)
         {
             keywords = uri;
-            search_uri = browser->location_entry_search;
+            search_uri = midori_settings_get_location_entry_search (
+                MIDORI_SETTINGS (browser->settings));
         }
         new_uri = midori_uri_for_search (search_uri, keywords);
 
@@ -4004,7 +4003,7 @@ _action_search_submit (GtkAction*     action,
     if (item)
         url = katze_item_get_uri (item);
     else /* The location entry search is our fallback */
-        url = browser->location_entry_search;
+        url = midori_settings_get_location_entry_search (MIDORI_SETTINGS (browser->settings));
 
     search = midori_uri_for_search (url, keywords);
     if (item != NULL)
@@ -4026,9 +4025,6 @@ _action_search_activate (GtkAction*     action,
                          MidoriBrowser* browser)
 {
     GSList* proxies = gtk_action_get_proxies (action);
-    const gchar* uri;
-    gchar* search;
-
     for (; proxies != NULL; proxies = g_slist_next (proxies))
         if (GTK_IS_TOOL_ITEM (proxies->data))
         {
@@ -4037,12 +4033,8 @@ _action_search_activate (GtkAction*     action,
             return;
         }
 
-    /* Load default search engine in current tab */
-    uri = browser->location_entry_search;
-    search = midori_uri_for_search (uri ? uri : "", "");
-    midori_browser_set_current_uri (browser, search);
+    midori_browser_set_current_uri (browser, "about:search");
     gtk_widget_grab_focus (midori_browser_get_current_tab (browser));
-    g_free (search);
 }
 
 static void
@@ -5011,7 +5003,7 @@ midori_browser_notebook_tab_added_cb (GtkWidget*         notebook,
     GtkWidget* view = midori_view_new_with_item (NULL, browser->settings);
     midori_view_set_tab (MIDORI_VIEW (view), tab);
     midori_browser_connect_tab (browser, view);
-    midori_view_set_uri (MIDORI_VIEW (view), "");
+    midori_view_set_uri (MIDORI_VIEW (view), "about:new");
     /* FIXME: signal add-tab */
     _midori_browser_update_actions (browser);
     midori_browser_notebook_page_reordered_cb (GTK_WIDGET (notebook),
@@ -5170,7 +5162,7 @@ midori_browser_notebook_button_press_event_after_cb (GtkNotebook*    notebook,
     if (/*(event->type == GDK_2BUTTON_PRESS && event->button == 1)
     || */(event->type == GDK_BUTTON_PRESS && MIDORI_EVENT_NEW_TAB (event)))
     {
-        GtkWidget* view = midori_browser_add_uri (browser, "");
+        GtkWidget* view = midori_browser_add_uri (browser, "about:new");
         midori_browser_set_current_tab (browser, view);
 
         return TRUE;
@@ -6440,8 +6432,6 @@ midori_browser_finalize (GObject* object)
     katze_object_assign (browser->history, NULL);
     katze_object_assign (browser->dial, NULL);
 
-    katze_assign (browser->news_aggregator, NULL);
-
     G_OBJECT_CLASS (midori_browser_parent_class)->finalize (object);
 }
 
@@ -6760,9 +6750,6 @@ _midori_browser_update_settings (MidoriBrowser* browser)
     gboolean close_buttons_on_tabs;
     KatzeItem* item;
 
-    g_free (browser->location_entry_search);
-    g_free (browser->news_aggregator);
-
     g_object_get (browser->settings,
                   "remember-last-window-size", &remember_last_window_size,
                   "last-window-width", &browser->last_window_width,
@@ -6781,10 +6768,8 @@ _midori_browser_update_settings (MidoriBrowser* browser)
                   "show-statusbar", &browser->show_statusbar,
                   "toolbar-style", &toolbar_style,
                   "toolbar-items", &toolbar_items,
-                  "location-entry-search", &browser->location_entry_search,
                   "close-buttons-on-tabs", &close_buttons_on_tabs,
                   "maximum-history-age", &browser->maximum_history_age,
-                  "news-aggregator", &browser->news_aggregator,
                   NULL);
 
     #ifdef HAVE_GRANITE
@@ -6828,6 +6813,8 @@ _midori_browser_update_settings (MidoriBrowser* browser)
 
     if (browser->search_engines)
     {
+        const gchar* default_search = midori_settings_get_location_entry_search (
+            MIDORI_SETTINGS (browser->settings));
         item = katze_array_get_nth_item (browser->search_engines,
                                          browser->last_web_search);
         if (item)
@@ -6835,7 +6822,7 @@ _midori_browser_update_settings (MidoriBrowser* browser)
                 _action_by_name (browser, "Search")), item);
 
         KATZE_ARRAY_FOREACH_ITEM (item, browser->search_engines)
-            if (!g_strcmp0 (katze_item_get_uri (item), browser->location_entry_search))
+            if (!g_strcmp0 (item->uri, default_search))
             {
                 midori_search_action_set_default_item (MIDORI_SEARCH_ACTION (
                 _action_by_name (browser, "Search")), item);
@@ -6914,16 +6901,8 @@ midori_browser_settings_notify (MidoriWebSettings* web_settings,
         browser->show_statusbar = g_value_get_boolean (&value);
         _action_set_active (browser, "Statusbar", g_value_get_boolean (&value));
     }
-    else if (name == g_intern_string ("location-entry-search"))
-    {
-        katze_assign (browser->location_entry_search, g_value_dup_string (&value));
-    }
     else if (name == g_intern_string ("maximum-history-age"))
         browser->maximum_history_age = g_value_get_int (&value);
-    else if (name == g_intern_string ("news-aggregator"))
-    {
-        katze_assign (browser->news_aggregator, g_value_dup_string (&value));
-    }
     else if (name == g_intern_string ("close-buttons-left"))
     {
         midori_findbar_set_close_button_left (MIDORI_FINDBAR (browser->find),
@@ -7171,13 +7150,15 @@ midori_browser_set_property (GObject*      object,
 
         if (browser->search_engines)
         {
+            const gchar* default_search = midori_settings_get_location_entry_search (
+                MIDORI_SETTINGS (browser->settings));
             g_object_get (browser->settings, "last-web-search", &browser->last_web_search, NULL);
             item = katze_array_get_nth_item (browser->search_engines, browser->last_web_search);
             midori_search_action_set_current_item (MIDORI_SEARCH_ACTION (
                 _action_by_name (browser, "Search")), item);
 
             KATZE_ARRAY_FOREACH_ITEM (item, browser->search_engines)
-                if (!g_strcmp0 (katze_item_get_uri (item), browser->location_entry_search))
+                if (!g_strcmp0 (item->uri, default_search))
                 {
                     midori_search_action_set_default_item (MIDORI_SEARCH_ACTION (
                     _action_by_name (browser, "Search")), item);
diff --git a/midori/midori-session.c b/midori/midori-session.c
index 1df69c5..55dd878 100644
--- a/midori/midori-session.c
+++ b/midori/midori-session.c
@@ -482,7 +482,7 @@ midori_load_session (gpointer data)
     {
         item = katze_item_new ();
         if (load_on_startup == MIDORI_STARTUP_BLANK_PAGE)
-            katze_item_set_uri (item, "about:blank");
+            katze_item_set_uri (item, "about:new");
         else
             item->uri = g_strdup ("about:home");
         katze_array_add_item (saved_session, item);
diff --git a/midori/midori-settings.vala b/midori/midori-settings.vala
index 6617327..18ffe79 100644
--- a/midori/midori-settings.vala
+++ b/midori/midori-settings.vala
@@ -102,7 +102,8 @@ namespace Midori {
         public bool open_tabs_next_to_current { get; set; default = true; }
         public bool always_show_tabbar { get; set; default = true; }
 
-        public string homepage { get; set; default = "http://www.google.com"; }
+        public string homepage { get; set; default = "about:search"; }
+        public string tabhome { get; set; default = "about:dial"; }
         static string default_download_folder () {
             return Environment.get_user_special_dir (UserDirectory.DOWNLOAD)
                 ?? Environment.get_home_dir ();
diff --git a/midori/midori-view.c b/midori/midori-view.c
index 2c1a762..f776b7f 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -3999,11 +3999,14 @@ list_video_formats (MidoriView* view)
 }
 
 static const gchar* valid_about_uris[] = {
+    "about:dial",
     "about:geolocation",
     "about:home",
+    "about:new",
     "about:nodocs",
     "about:paths",
     "about:private",
+    "about:search",
     "about:widgets",
 };
 
@@ -4042,10 +4045,21 @@ midori_view_set_uri (MidoriView*  view,
 
     if (!midori_debug ("unarmed"))
     {
-        if (uri && !strcmp (uri, "about:home"))
+        gchar* temporary_uri = NULL;
+        if (uri == NULL || !strcmp (uri, ""))
+            uri = "about:blank";
+        else if (!strcmp (uri, "about:new"))
+            uri = midori_settings_get_tabhome (MIDORI_SETTINGS (view->settings));
+        if (!strcmp (uri, "about:home"))
             uri = midori_settings_get_homepage (MIDORI_SETTINGS (view->settings));
+        if (!strcmp (uri, "about:search"))
+        {
+            uri = midori_settings_get_location_entry_search (MIDORI_SETTINGS (view->settings));
+            temporary_uri = midori_uri_for_search (uri, "");
+            uri = temporary_uri;
+        }
 
-        if (!uri || !strcmp (uri, "") || !strcmp (uri, "about:blank"))
+        if (!strcmp (uri, "about:dial"))
         {
             MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (view));
             MidoriSpeedDial* dial = katze_object_get_object (browser, "speed-dial");
@@ -4282,6 +4296,7 @@ midori_view_set_uri (MidoriView*  view,
 #endif
             webkit_web_view_load_uri (WEBKIT_WEB_VIEW (view->web_view), uri);
         }
+        g_free (temporary_uri);
     }
 }
 
@@ -4376,7 +4391,7 @@ midori_view_get_icon_uri (MidoriView* view)
  *
  * Retrieves a string that is suitable for displaying.
  *
- * Note that "about:blank" is represented as "".
+ * Note that "about:blank" and "about:dial" are represented as "".
  *
  * You can assume that the string is not %NULL.
  *


More information about the Xfce4-commits mailing list