]> spindle.queued.net Git - midori/commitdiff
Store searches with tokens in the completion as a distinct item
authorChristian Dywan <christian@twotoasts.de>
Fri, 1 Jan 2010 21:47:24 +0000 (22:47 +0100)
committerChristian Dywan <christian@twotoasts.de>
Fri, 1 Jan 2010 21:47:24 +0000 (22:47 +0100)
Currently searches won't be stored persistently in the database.

midori/main.c
midori/midori-app.c
midori/midori-browser.c
midori/midori-view.c
midori/sokoke.c
midori/sokoke.h
tests/magic-uri.c

index d74728226140c4f9555e93e9ef690c866d85c860..077bc6afada3a6d6ce15caacb4dc82bf37ae1067 100644 (file)
@@ -2035,7 +2035,7 @@ main (int    argc,
                 g_free (current_dir);
             }
             else
-                uri_ready = sokoke_magic_uri (uri, NULL);
+                uri_ready = sokoke_magic_uri (uri, NULL, NULL);
             katze_item_set_uri (item, uri_ready);
             g_free (uri_ready);
             katze_array_add_item (_session, item);
index 057425942c7cc6d8687f91c9b2aa55f09d105e59..c1df59e4f91a71bf6a1f3bad1b887dafb96a652e 100644 (file)
@@ -454,7 +454,7 @@ 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);
+                gchar* fixed_uri = sokoke_magic_uri (*uris, NULL, NULL);
                 if (first)
                 {
                     midori_browser_set_current_uri (browser, fixed_uri);
index 13f069675ddf097d8e310934a5c8966d0803a614..62667dbbe30a755eafc454d1b2064b1c8a239c11 100644 (file)
@@ -198,6 +198,11 @@ static void
 midori_browser_add_download_item (MidoriBrowser*  browser,
                                   WebKitDownload* download);
 
+GdkPixbuf*
+midori_search_action_get_icon (KatzeItem*    item,
+                               GtkWidget*    widget,
+                               const gchar** icon_name);
+
 static GtkAction*
 _action_by_name (MidoriBrowser* browser,
                  const gchar*   name)
@@ -2918,7 +2923,7 @@ midori_browser_open_bookmark (MidoriBrowser* browser,
         return;
 
     /* Imported bookmarks may lack a protocol */
-    uri_fixed = sokoke_magic_uri (uri, NULL);
+    uri_fixed = sokoke_magic_uri (uri, NULL, NULL);
 
     /* FIXME: Use the same binary that is running right now */
     if (katze_item_get_meta_integer (item, "app") != -1)
@@ -3707,6 +3712,8 @@ _action_location_reset_uri (GtkAction*     action,
     midori_location_action_set_uri (MIDORI_LOCATION_ACTION (action), uri);
 }
 
+
+
 static void
 _action_location_submit_uri (GtkAction*     action,
                              const gchar*   uri,
@@ -3715,15 +3722,38 @@ _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);
-    new_uri = sokoke_magic_uri (stripped_uri, browser->search_engines);
+    item = NULL;
+    new_uri = sokoke_magic_uri (stripped_uri, browser->search_engines, &item);
     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;
+
+        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)
+        {
+            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);
+        }
+        midori_location_action_add_item (MIDORI_LOCATION_ACTION (action),
+                                         uri, icon, title);
+        if (icon)
+            g_object_unref (icon);
+        g_free (title);
+    }
+
     if (new_tab)
     {
         n = midori_browser_add_uri (browser, new_uri);
index 4abd75c6c5b5f53be14e4927de2fc9fac546593e..5a2e43d75412e1de2d7a93459554d72a72292cbf 100644 (file)
@@ -1303,7 +1303,7 @@ gtk_widget_button_press_event_cb (WebKitWebView*  web_view,
                 while (uri[i++] != '\0')
                     if (uri[i] == '\n' || uri[i] == '\r')
                         uri[i] = ' ';
-                new_uri = sokoke_magic_uri (g_strstrip (uri), empty_array);
+                new_uri = sokoke_magic_uri (g_strstrip (uri), empty_array, NULL);
                 g_object_unref (empty_array);
                 if (!new_uri)
                 {
@@ -1554,7 +1554,7 @@ midori_web_view_menu_new_tab_activate_cb (GtkWidget*  widget,
         }
         else
         {
-            gchar* uri = sokoke_magic_uri (data, NULL);
+            gchar* uri = sokoke_magic_uri (data, NULL, NULL);
             g_signal_emit (view, signals[NEW_TAB], 0, uri,
                            view->open_tabs_in_the_background);
             g_free (uri);
index 89dd0b3ae27eaa7881c68bf968d882c57376d97d..15e5504babce764b9d9dd5af2d6aa4fffd6fbaf3 100644 (file)
@@ -526,15 +526,19 @@ 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.
+ *
  * Return value: a newly allocated URI
  **/
 gchar*
 sokoke_magic_uri (const gchar* uri,
-                  KatzeArray*  search_engines)
+                  KatzeArray*  search_engines,
+                  KatzeItem**  found_item)
 {
     gchar** parts;
     gchar* search;
@@ -593,6 +597,8 @@ sokoke_magic_uri (const gchar* uri,
         {
             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;
index acf91ef7763d24aa7d8daa6ee859f5827052a98b..85c11ff8e1b20ec65fe38ef8f6cc0c1b83801c24 100644 (file)
@@ -61,7 +61,8 @@ sokoke_uri_to_ascii                     (const gchar*    uri);
 
 gchar*
 sokoke_magic_uri                        (const gchar*    uri,
-                                         KatzeArray*     search_engines);
+                                         KatzeArray*     search_engines,
+                                         KatzeItem**     found_item);
 
 gchar*
 sokoke_format_uri_for_display           (const gchar*    uri);
index 5733927e1293436e93e0ae8e0d77f6e35765f148..35c6fdb54bdacefa445d2a8c986cc33467c1f413 100644 (file)
@@ -55,7 +55,7 @@ test_input (const gchar* input,
         g_object_unref (item);
     }
 
-    gchar* uri = sokoke_magic_uri (input, search_engines);
+    gchar* uri = sokoke_magic_uri (input, search_engines, NULL);
     sokoke_assert_str_equal (input, uri, expected);
     g_free (uri);
 }