Store searches with tokens in the completion as a distinct item
Currently searches won't be stored persistently in the database.
This commit is contained in:
parent
3aff0a34d0
commit
311a5a8a1b
7 changed files with 46 additions and 9 deletions
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue