]> spindle.queued.net Git - midori/commitdiff
Handle search engines in MidoriBrowser and simplify sokoke_magic_uri
authorChristian Dywan <christian@twotoasts.de>
Tue, 9 Feb 2010 17:13:47 +0000 (18:13 +0100)
committerChristian Dywan <christian@twotoasts.de>
Wed, 10 Feb 2010 18:52:12 +0000 (19:52 +0100)
midori/main.c
midori/midori-app.c
midori/midori-browser.c
midori/midori-view.c
midori/sokoke.c
midori/sokoke.h

index 8d49d7298212d81ad6f264b6fbed95aed088aab0..87f877eeee903d0f90e7617d78fa696b76a5718e 100644 (file)
@@ -1848,7 +1848,11 @@ main (int    argc,
                 g_free (current_dir);
             }
             else
-                uri_ready = sokoke_magic_uri (uri, NULL, NULL);
+            {
+                uri_ready = sokoke_magic_uri (uri);
+                if (!uri_ready)
+                    uri_ready = g_strdup (uri_ready);
+            }
             katze_item_set_uri (item, uri_ready);
             g_free (uri_ready);
             katze_array_add_item (_session, item);
index 297e25b60e210ac3d079fd2360a3e1607a30a362..0bf21b1e7c02a2fdc02b489e7befe2afc1444b12 100644 (file)
@@ -464,7 +464,9 @@ midori_app_command_received (MidoriApp*   app,
             first = (open_external_pages_in == MIDORI_NEW_PAGE_CURRENT);
             while (*uris)
             {
-                gchar* fixed_uri = sokoke_magic_uri (*uris, NULL, NULL);
+                gchar* fixed_uri = sokoke_magic_uri (*uris);
+                if (!fixed_uri)
+                    fixed_uri = g_strdup (*uris);
                 if (first)
                 {
                     midori_browser_set_current_uri (browser, fixed_uri);
index 09d56efa375a10d13e24f2392bc6eff614b06604..74530c79c3eb0e5118238877dedfec52f0f4ebe9 100644 (file)
@@ -2954,7 +2954,9 @@ midori_browser_open_bookmark (MidoriBrowser* browser,
         return;
 
     /* Imported bookmarks may lack a protocol */
-    uri_fixed = sokoke_magic_uri (uri, NULL, NULL);
+    uri_fixed = sokoke_magic_uri (uri);
+    if (!uri_fixed)
+        uri_fixed = g_strdup (uri);
 
     /* FIXME: Use the same binary that is running right now */
     if (katze_item_get_meta_integer (item, "app") != -1)
@@ -3770,37 +3772,43 @@ _action_location_submit_uri (GtkAction*     action,
 {
     gchar* stripped_uri;
     gchar* new_uri;
-    KatzeItem* item;
     gint n;
 
     stripped_uri = g_strdup (uri);
     g_strstrip (stripped_uri);
-    item = NULL;
-    new_uri = sokoke_magic_uri (stripped_uri, browser->search_engines, &item);
+    new_uri = sokoke_magic_uri (stripped_uri);
     if (!new_uri)
-        new_uri = sokoke_search_uri (browser->location_entry_search, stripped_uri);
-    g_free (stripped_uri);
-
-    if (item)
     {
-        gchar* title;
-        GdkPixbuf* icon;
-        const gchar* icon_name;
+        gchar** parts;
+        gchar* keywords = NULL;
+        const gchar* search_uri = NULL;
 
-        title = g_strdup_printf (_("Search with %s"), katze_item_get_name (item));
-        icon = midori_search_action_get_icon (item, GTK_WIDGET (browser), &icon_name);
-        if (!icon)
+        /* Do we have a keyword and a string? */
+        parts = g_strsplit (stripped_uri, " ", 2);
+        if (parts[0])
         {
-            GdkScreen* screen = gtk_widget_get_screen (GTK_WIDGET (browser));
-            GtkIconTheme* icon_theme = gtk_icon_theme_get_for_screen (screen);
-            icon = gtk_icon_theme_load_icon (icon_theme, icon_name, 16, 0, NULL);
+            KatzeItem* item;
+            if ((item = katze_array_find_token (browser->search_engines, parts[0])))
+            {
+                keywords = g_strdup (parts[1] ? parts[1] : "");
+                search_uri = katze_item_get_uri (item);
+            }
         }
-        midori_location_action_add_item (MIDORI_LOCATION_ACTION (action),
-                                         uri, icon, title);
-        if (icon)
-            g_object_unref (icon);
-        g_free (title);
+        g_strfreev (parts);
+
+        if (keywords)
+            g_free (stripped_uri);
+        else
+        {
+            keywords = stripped_uri;
+            search_uri = browser->location_entry_search;
+        }
+        new_uri = sokoke_search_uri (search_uri, keywords);
+
+        g_free (keywords);
     }
+    else
+        g_free (stripped_uri);
 
     if (new_tab)
     {
index 752e0a3bb2fc5c2a296f1bb145f2ea5d896a27f8..190b008ec8112221881336845f18e0526d114c8f 100644 (file)
@@ -1307,9 +1307,7 @@ gtk_widget_button_press_event_cb (WebKitWebView*  web_view,
                 /* Hold Alt to search for the selected word */
                 if (event->state & GDK_MOD1_MASK)
                 {
-                    KatzeArray* empty_array = katze_array_new (KATZE_TYPE_ITEM);
-                    new_uri = sokoke_magic_uri (uri, empty_array, NULL);
-                    g_object_unref (empty_array);
+                    new_uri = sokoke_magic_uri (uri);
                     if (!new_uri)
                     {
                         gchar* search;
@@ -1582,7 +1580,9 @@ midori_web_view_menu_new_tab_activate_cb (GtkWidget*  widget,
         }
         else
         {
-            gchar* uri = sokoke_magic_uri (data, NULL, NULL);
+            gchar* uri = sokoke_magic_uri (data);
+            if (!uri)
+                uri = g_strdup (data);
             g_signal_emit (view, signals[NEW_TAB], 0, uri,
                            view->open_tabs_in_the_background);
             g_free (uri);
index c497b2302a0942a9607afac68ac530aa32fe0243..2e5a3682be403a933b4ed037131dde75de91cb1d 100644 (file)
@@ -573,29 +573,21 @@ gchar* sokoke_search_uri (const gchar* uri,
 /**
  * sokoke_magic_uri:
  * @uri: a string typed by a user
- * @search_engines: search engines
- * @item: the location to store a #KatzeItem
  *
  * Takes a string that was typed by a user,
  * guesses what it is, and returns an URI.
  *
- * If it was a search, @item will contain the engine.
+ * If it was a search, %NULL will be returned.
  *
- * Return value: a newly allocated URI
+ * Return value: a newly allocated URI, or %NULL
  **/
 gchar*
-sokoke_magic_uri (const gchar* uri,
-                  KatzeArray*  search_engines,
-                  KatzeItem**  found_item)
+sokoke_magic_uri (const gchar* uri)
 {
     gchar** parts;
     gchar* search;
-    const gchar* search_uri;
-    KatzeItem* item;
 
     g_return_val_if_fail (uri, NULL);
-    g_return_val_if_fail (!search_engines ||
-        katze_array_is_a (search_engines, KATZE_TYPE_ITEM), NULL);
 
     /* Just return if it's a javascript: or mailto: uri */
     if (!strncmp (uri, "javascript:", 11)
@@ -637,26 +629,9 @@ sokoke_magic_uri (const gchar* uri,
         }
         g_strfreev (parts);
     }
-    /* We don't want to search? So return early. */
-    if (!search_engines)
-        return g_strdup (uri);
-    search = NULL;
-    search_uri = NULL;
-    /* Do we have a keyword and a string? */
-    parts = g_strsplit (uri, " ", 2);
-    if (parts[0])
-        if ((item = katze_array_find_token (search_engines, parts[0])))
-        {
-            search_uri = katze_item_get_uri (item);
-            search = sokoke_search_uri (search_uri, parts[1] ? parts[1] : "");
-            if (found_item)
-                *found_item = item;
-        }
-    g_strfreev (parts);
-    return search;
+    return NULL;
 }
 
-
 /**
  * sokoke_format_uri_for_display:
  * @uri: an URI string
index e8a6d7fc2f35f826cd1bb6654b55cb47907ab757..2e86bb9465bed33acf6cb4ab13ca9b561d606d69 100644 (file)
@@ -97,9 +97,7 @@ gchar*
 sokoke_uri_to_ascii                     (const gchar*    uri);
 
 gchar*
-sokoke_magic_uri                        (const gchar*    uri,
-                                         KatzeArray*     search_engines,
-                                         KatzeItem**     found_item);
+sokoke_magic_uri                        (const gchar*    uri);
 
 gchar*
 sokoke_format_uri_for_display           (const gchar*    uri);