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);
|
g_free (current_dir);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
uri_ready = sokoke_magic_uri (uri, NULL);
|
uri_ready = sokoke_magic_uri (uri, NULL, NULL);
|
||||||
katze_item_set_uri (item, uri_ready);
|
katze_item_set_uri (item, uri_ready);
|
||||||
g_free (uri_ready);
|
g_free (uri_ready);
|
||||||
katze_array_add_item (_session, item);
|
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);
|
first = (open_external_pages_in == MIDORI_NEW_PAGE_CURRENT);
|
||||||
while (*uris)
|
while (*uris)
|
||||||
{
|
{
|
||||||
gchar* fixed_uri = sokoke_magic_uri (*uris, NULL);
|
gchar* fixed_uri = sokoke_magic_uri (*uris, NULL, NULL);
|
||||||
if (first)
|
if (first)
|
||||||
{
|
{
|
||||||
midori_browser_set_current_uri (browser, fixed_uri);
|
midori_browser_set_current_uri (browser, fixed_uri);
|
||||||
|
|
|
@ -198,6 +198,11 @@ static void
|
||||||
midori_browser_add_download_item (MidoriBrowser* browser,
|
midori_browser_add_download_item (MidoriBrowser* browser,
|
||||||
WebKitDownload* download);
|
WebKitDownload* download);
|
||||||
|
|
||||||
|
GdkPixbuf*
|
||||||
|
midori_search_action_get_icon (KatzeItem* item,
|
||||||
|
GtkWidget* widget,
|
||||||
|
const gchar** icon_name);
|
||||||
|
|
||||||
static GtkAction*
|
static GtkAction*
|
||||||
_action_by_name (MidoriBrowser* browser,
|
_action_by_name (MidoriBrowser* browser,
|
||||||
const gchar* name)
|
const gchar* name)
|
||||||
|
@ -2918,7 +2923,7 @@ midori_browser_open_bookmark (MidoriBrowser* browser,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Imported bookmarks may lack a protocol */
|
/* 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 */
|
/* FIXME: Use the same binary that is running right now */
|
||||||
if (katze_item_get_meta_integer (item, "app") != -1)
|
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);
|
midori_location_action_set_uri (MIDORI_LOCATION_ACTION (action), uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_action_location_submit_uri (GtkAction* action,
|
_action_location_submit_uri (GtkAction* action,
|
||||||
const gchar* uri,
|
const gchar* uri,
|
||||||
|
@ -3715,15 +3722,38 @@ _action_location_submit_uri (GtkAction* action,
|
||||||
{
|
{
|
||||||
gchar* stripped_uri;
|
gchar* stripped_uri;
|
||||||
gchar* new_uri;
|
gchar* new_uri;
|
||||||
|
KatzeItem* item;
|
||||||
gint n;
|
gint n;
|
||||||
|
|
||||||
stripped_uri = g_strdup (uri);
|
stripped_uri = g_strdup (uri);
|
||||||
g_strstrip (stripped_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)
|
if (!new_uri)
|
||||||
new_uri = sokoke_search_uri (browser->location_entry_search, stripped_uri);
|
new_uri = sokoke_search_uri (browser->location_entry_search, stripped_uri);
|
||||||
g_free (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)
|
if (new_tab)
|
||||||
{
|
{
|
||||||
n = midori_browser_add_uri (browser, new_uri);
|
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')
|
while (uri[i++] != '\0')
|
||||||
if (uri[i] == '\n' || uri[i] == '\r')
|
if (uri[i] == '\n' || uri[i] == '\r')
|
||||||
uri[i] = ' ';
|
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);
|
g_object_unref (empty_array);
|
||||||
if (!new_uri)
|
if (!new_uri)
|
||||||
{
|
{
|
||||||
|
@ -1554,7 +1554,7 @@ midori_web_view_menu_new_tab_activate_cb (GtkWidget* widget,
|
||||||
}
|
}
|
||||||
else
|
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,
|
g_signal_emit (view, signals[NEW_TAB], 0, uri,
|
||||||
view->open_tabs_in_the_background);
|
view->open_tabs_in_the_background);
|
||||||
g_free (uri);
|
g_free (uri);
|
||||||
|
|
|
@ -526,15 +526,19 @@ gchar* sokoke_search_uri (const gchar* uri,
|
||||||
* sokoke_magic_uri:
|
* sokoke_magic_uri:
|
||||||
* @uri: a string typed by a user
|
* @uri: a string typed by a user
|
||||||
* @search_engines: search engines
|
* @search_engines: search engines
|
||||||
|
* @item: the location to store a #KatzeItem
|
||||||
*
|
*
|
||||||
* Takes a string that was typed by a user,
|
* Takes a string that was typed by a user,
|
||||||
* guesses what it is, and returns an URI.
|
* guesses what it is, and returns an URI.
|
||||||
*
|
*
|
||||||
|
* If it was a search, @item will contain the engine.
|
||||||
|
*
|
||||||
* Return value: a newly allocated URI
|
* Return value: a newly allocated URI
|
||||||
**/
|
**/
|
||||||
gchar*
|
gchar*
|
||||||
sokoke_magic_uri (const gchar* uri,
|
sokoke_magic_uri (const gchar* uri,
|
||||||
KatzeArray* search_engines)
|
KatzeArray* search_engines,
|
||||||
|
KatzeItem** found_item)
|
||||||
{
|
{
|
||||||
gchar** parts;
|
gchar** parts;
|
||||||
gchar* search;
|
gchar* search;
|
||||||
|
@ -593,6 +597,8 @@ sokoke_magic_uri (const gchar* uri,
|
||||||
{
|
{
|
||||||
search_uri = katze_item_get_uri (item);
|
search_uri = katze_item_get_uri (item);
|
||||||
search = sokoke_search_uri (search_uri, parts[1] ? parts[1] : "");
|
search = sokoke_search_uri (search_uri, parts[1] ? parts[1] : "");
|
||||||
|
if (found_item)
|
||||||
|
*found_item = item;
|
||||||
}
|
}
|
||||||
g_strfreev (parts);
|
g_strfreev (parts);
|
||||||
return search;
|
return search;
|
||||||
|
|
|
@ -61,7 +61,8 @@ sokoke_uri_to_ascii (const gchar* uri);
|
||||||
|
|
||||||
gchar*
|
gchar*
|
||||||
sokoke_magic_uri (const gchar* uri,
|
sokoke_magic_uri (const gchar* uri,
|
||||||
KatzeArray* search_engines);
|
KatzeArray* search_engines,
|
||||||
|
KatzeItem** found_item);
|
||||||
|
|
||||||
gchar*
|
gchar*
|
||||||
sokoke_format_uri_for_display (const gchar* uri);
|
sokoke_format_uri_for_display (const gchar* uri);
|
||||||
|
|
|
@ -55,7 +55,7 @@ test_input (const gchar* input,
|
||||||
g_object_unref (item);
|
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);
|
sokoke_assert_str_equal (input, uri, expected);
|
||||||
g_free (uri);
|
g_free (uri);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue