diff --git a/midori/midori-locationentry.c b/midori/midori-locationentry.c
index 51997277..7add46bd 100644
--- a/midori/midori-locationentry.c
+++ b/midori/midori-locationentry.c
@@ -447,8 +447,7 @@ midori_location_entry_render_pixbuf_cb (GtkCellLayout* layout,
gtk_tree_model_get (model, iter, FAVICON_COL, &pixbuf, -1);
if (pixbuf)
{
- g_object_set (renderer, "pixbuf", pixbuf, NULL);
- g_object_set (renderer, "xpad", 5, "ypad", 5, "yalign", 0.0, NULL);
+ g_object_set (renderer, "pixbuf", pixbuf, "yalign", 0.25, NULL);
g_object_unref (pixbuf);
}
}
@@ -463,20 +462,61 @@ midori_location_entry_render_text_cb (GtkCellLayout* layout,
gchar* uri;
gchar* title;
gchar* desc;
+ gchar* desc_uri;
+ gchar* desc_title;
+ GtkWidget* entry;
+ gchar* key;
+ gchar* temp;
+ gchar** parts;
gtk_tree_model_get (model, iter, URI_COL, &uri, TITLE_COL, &title, -1);
- if (title)
- desc = g_markup_printf_escaped ("%s\n%s", title, uri);
+
+ desc_uri = desc_title = key = NULL;
+ if (data)
+ {
+ entry = gtk_entry_completion_get_entry (GTK_ENTRY_COMPLETION (data));
+ key = g_utf8_strdown (gtk_entry_get_text (GTK_ENTRY (entry)), -1);
+ }
+ if (data && uri)
+ {
+ temp = g_utf8_strdown (uri, -1);
+ parts = g_strsplit (temp, key, 2);
+ g_free (temp);
+ if (parts && parts[0] && parts[1])
+ desc_uri = g_markup_printf_escaped ("%s%s%s",
+ parts[0], key, parts[1]);
+ g_strfreev (parts);
+ }
+ if (uri && !desc_uri)
+ desc_uri = g_markup_escape_text (uri, -1);
+ if (data && title)
+ {
+ temp = g_utf8_strdown (title, -1);
+ parts = g_strsplit (temp, key, 2);
+ g_free (temp);
+ if (parts && parts[0] && parts[1])
+ desc_title = g_markup_printf_escaped ("%s%s%s",
+ parts[0], key, parts[1]);
+ g_strfreev (parts);
+ }
+ if (title && !desc_title)
+ desc_title = g_markup_escape_text (title, -1);
+
+ if (desc_title)
+ desc = g_strdup_printf ("%s\n%s",
+ desc_title, desc_uri);
else
- desc = g_markup_printf_escaped ("%s", uri);
+ desc = g_strdup_printf ("%s", desc_uri);
- g_object_set (renderer, "markup", desc, NULL);
- g_object_set (renderer, "ellipsize-set", TRUE,
- "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+ g_object_set (renderer, "markup", desc,
+ "ellipsize-set", TRUE, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
- katze_assign (uri, NULL);
- katze_assign (title, NULL);
- katze_assign (desc, NULL);
+ g_free (uri);
+ g_free (title);
+ g_free (key);
+ g_free (desc);
+ g_free (desc_uri);
+ g_free (desc_title);
}
static gboolean
@@ -488,12 +528,13 @@ midori_location_entry_completion_match_cb (GtkEntryCompletion* completion,
GtkTreeModel* model;
gchar* uri;
gchar* title;
- gboolean match = FALSE;
- gchar *temp;
+ gboolean match;
+ gchar* temp;
model = gtk_entry_completion_get_model (completion);
gtk_tree_model_get (model, iter, URI_COL, &uri, TITLE_COL, &title, -1);
+ match = FALSE;
if (uri)
{
temp = g_utf8_casefold (uri, -1);
@@ -509,6 +550,7 @@ midori_location_entry_completion_match_cb (GtkEntryCompletion* completion,
g_free (title);
}
}
+
return match;
}
@@ -537,7 +579,7 @@ midori_location_entry_completion_init (MidoriLocationEntry* location_entry)
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (completion), renderer, TRUE);
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (completion), renderer,
midori_location_entry_render_text_cb,
- NULL, NULL);
+ completion, NULL);
gtk_entry_completion_set_match_func (completion,
midori_location_entry_completion_match_cb, NULL, NULL);