Highlight completion matches while preserving the case

This commit is contained in:
Dale Whittaker 2008-11-18 03:01:33 +01:00 committed by Christian Dywan
parent c72977974d
commit e505942314

View file

@ -405,8 +405,11 @@ midori_location_entry_render_text_cb (GtkCellLayout* layout,
gchar* desc_title; gchar* desc_title;
GtkWidget* entry; GtkWidget* entry;
gchar* key; gchar* key;
gchar* start;
gchar* skey;
gchar* temp; gchar* temp;
gchar** parts; gchar** parts;
glong len;
gtk_tree_model_get (model, iter, URI_COL, &uri, TITLE_COL, &title, -1); gtk_tree_model_get (model, iter, URI_COL, &uri, TITLE_COL, &title, -1);
@ -419,24 +422,40 @@ midori_location_entry_render_text_cb (GtkCellLayout* layout,
if (data && uri) if (data && uri)
{ {
temp = g_utf8_strdown (uri, -1); temp = g_utf8_strdown (uri, -1);
parts = g_strsplit (temp, key, 2); start = strstr (temp, key);
g_free (temp); g_free (temp);
if (start)
{
len = g_utf8_strlen (key, -1);
skey = g_malloc0 (len);
g_utf8_strncpy (skey, uri + (start - temp), len);
parts = g_strsplit (uri, skey, 2);
if (parts && parts[0] && parts[1]) if (parts && parts[0] && parts[1])
desc_uri = g_markup_printf_escaped ("%s<b>%s</b>%s", desc_uri = g_markup_printf_escaped ("%s<b>%s</b>%s",
parts[0], key, parts[1]); parts[0], skey, parts[1]);
g_strfreev (parts); g_strfreev (parts);
g_free (skey);
}
} }
if (uri && !desc_uri) if (uri && !desc_uri)
desc_uri = g_markup_escape_text (uri, -1); desc_uri = g_markup_escape_text (uri, -1);
if (data && title) if (data && title)
{ {
temp = g_utf8_strdown (title, -1); temp = g_utf8_strdown (title, -1);
parts = g_strsplit (temp, key, 2); start = strstr (temp, key);
g_free (temp); g_free (temp);
if (start)
{
len = g_utf8_strlen (key, -1);
skey = g_malloc0 (len);
g_utf8_strncpy (skey, title + (start - temp), len);
parts = g_strsplit (title, skey, 2);
if (parts && parts[0] && parts[1]) if (parts && parts[0] && parts[1])
desc_title = g_markup_printf_escaped ("%s<b>%s</b>%s", desc_title = g_markup_printf_escaped ("%s<b>%s</b>%s",
parts[0], key, parts[1]); parts[0], skey, parts[1]);
g_strfreev (parts); g_strfreev (parts);
g_free (skey);
}
} }
if (title && !desc_title) if (title && !desc_title)
desc_title = g_markup_escape_text (title, -1); desc_title = g_markup_escape_text (title, -1);