Tweak location match rendering by reducing conditions

This commit is contained in:
Christian Dywan 2009-12-26 14:22:25 +01:00
parent 138e837457
commit 0f988af446

View file

@ -643,11 +643,14 @@ midori_location_entry_render_text_cb (GtkCellLayout* layout,
gtk_tree_model_get (model, iter, URI_COL, &uri, TITLE_COL, &title, gtk_tree_model_get (model, iter, URI_COL, &uri, TITLE_COL, &title,
FAVICON_COL, &icon, -1); FAVICON_COL, &icon, -1);
if (G_UNLIKELY (!icon) && uri) if (G_UNLIKELY (!icon))
{
if (uri)
{ {
#if !HAVE_HILDON #if !HAVE_HILDON
MidoriLocationAction* action MidoriLocationAction* action;
= g_object_get_data (G_OBJECT (renderer), "location-action");
action = g_object_get_data (G_OBJECT (renderer), "location-action");
if ((icon = katze_load_cached_icon (uri, NULL))) if ((icon = katze_load_cached_icon (uri, NULL)))
{ {
midori_location_action_set_icon_for_uri (action, icon, uri); midori_location_action_set_icon_for_uri (action, icon, uri);
@ -657,62 +660,64 @@ midori_location_entry_render_text_cb (GtkCellLayout* layout,
midori_location_action_set_icon_for_uri (action, action->default_icon, uri); midori_location_action_set_icon_for_uri (action, action->default_icon, uri);
#endif #endif
} }
else if (icon) }
else
g_object_unref (icon); g_object_unref (icon);
desc = desc_uri = desc_title = key = NULL; desc = desc_uri = desc_title = key = NULL;
key = title ? g_utf8_strdown (gtk_entry_get_text (GTK_ENTRY (entry)), -1) key = g_ascii_strdown (gtk_entry_get_text (GTK_ENTRY (entry)), -1);
: g_ascii_strdown (gtk_entry_get_text (GTK_ENTRY (entry)), -1);
len = 0; len = 0;
/* g_uri_unescape_segment () sometimes produces garbage */ if (G_LIKELY (uri))
if (G_UNLIKELY (uri && !g_utf8_validate (uri, -1, (const gchar **)&temp)))
temp[0]='\0';
else if (G_LIKELY (uri))
{ {
/* g_uri_unescape_segment () sometimes produces garbage */
if (!g_utf8_validate (uri, -1, (const gchar **)&temp))
temp[0] = '\0';
temp = g_utf8_strdown (uri, -1); temp = g_utf8_strdown (uri, -1);
if (key && *key && (start = strstr (temp, key))) if ((start = strstr (temp, key)) && (start - temp))
{ {
len = strlen (key); len = strlen (key);
skey = g_malloc0 (len + 1); skey = g_strndup (uri + (start - temp), len);
strncpy (skey, uri + (start - temp), len); parts = g_strsplit (uri, skey, 2);
if (skey && *skey && (parts = g_strsplit (uri, skey, 2)))
{
if (parts[0] && parts[1]) if (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], skey, parts[1]); parts[0], skey, parts[1]);
else
desc_uri = g_markup_escape_text (uri, -1);
g_strfreev (parts); g_strfreev (parts);
}
g_free (skey); g_free (skey);
} }
else
desc_uri = g_markup_escape_text (uri, -1);
g_free (temp); g_free (temp);
} }
if (uri && !desc_uri)
desc_uri = g_markup_escape_text (uri, -1);
/* g_uri_unescape_segment () sometimes produces garbage */ if (G_LIKELY (title))
if (G_UNLIKELY (title && !g_utf8_validate (title, -1, (const gchar **)&temp)))
temp[0]='\0';
else if (G_LIKELY (title))
{ {
/* g_uri_unescape_segment () sometimes produces garbage */
if (!g_utf8_validate (title, -1, (const gchar **)&temp))
temp[0] = '\0';
temp = g_utf8_strdown (title, -1); temp = g_utf8_strdown (title, -1);
if (key && *key && (start = strstr (temp, key))) if ((start = strstr (temp, key)) && (start - temp))
{ {
if (!len) if (!len)
len = strlen (key); len = strlen (key);
skey = g_malloc0 (len + 1); skey = g_strndup (title + (start - temp), len);
strncpy (skey, title + (start - temp), len);
parts = g_strsplit (title, skey, 2); 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], skey, parts[1]); parts[0], skey, parts[1]);
else
desc_title = g_markup_escape_text (title, -1);
g_strfreev (parts); g_strfreev (parts);
g_free (skey); g_free (skey);
} }
else
desc_title = g_markup_escape_text (title, -1);
g_free (temp); g_free (temp);
} }
if (title && !desc_title)
desc_title = g_markup_escape_text (title, -1);
if (desc_title) if (desc_title)
{ {