shell: Don't repeat the item title when searching

https://bugzilla.gnome.org/show_bug.cgi?id=657020
This commit is contained in:
Bastien Nocera 2011-08-26 13:59:23 +01:00
parent 760522d02c
commit 93d7d6b6ea
3 changed files with 19 additions and 17 deletions

View file

@ -161,7 +161,6 @@ cc_shell_model_add_item (CcShellModel *model,
const gchar *comment = g_app_info_get_description (appinfo); const gchar *comment = g_app_info_get_description (appinfo);
gchar *id; gchar *id;
GdkPixbuf *pixbuf = NULL; GdkPixbuf *pixbuf = NULL;
gchar *search_target;
GKeyFile *key_file; GKeyFile *key_file;
gchar **keywords; gchar **keywords;
@ -199,23 +198,17 @@ cc_shell_model_add_item (CcShellModel *model,
pixbuf = load_pixbuf_for_gicon (icon); pixbuf = load_pixbuf_for_gicon (icon);
if (comment && comment[0])
search_target = g_strconcat (name, " - ", comment, NULL);
else
search_target = g_strdup (name);
gtk_list_store_insert_with_values (GTK_LIST_STORE (model), NULL, 0, gtk_list_store_insert_with_values (GTK_LIST_STORE (model), NULL, 0,
COL_NAME, name, COL_NAME, name,
COL_DESKTOP_FILE, desktop, COL_DESKTOP_FILE, desktop,
COL_ID, id, COL_ID, id,
COL_PIXBUF, pixbuf, COL_PIXBUF, pixbuf,
COL_CATEGORY, category_name, COL_CATEGORY, category_name,
COL_SEARCH_TARGET, search_target, COL_DESCRIPTION, comment,
COL_GICON, icon, COL_GICON, icon,
COL_KEYWORDS, keywords, COL_KEYWORDS, keywords,
-1); -1);
g_free (id); g_free (id);
g_free (search_target);
g_strfreev (keywords); g_strfreev (keywords);
} }

View file

@ -60,7 +60,7 @@ enum
COL_ID, COL_ID,
COL_PIXBUF, COL_PIXBUF,
COL_CATEGORY, COL_CATEGORY,
COL_SEARCH_TARGET, COL_DESCRIPTION,
COL_GICON, COL_GICON,
COL_KEYWORDS, COL_KEYWORDS,

View file

@ -399,29 +399,39 @@ model_filter_func (GtkTreeModel *model,
GtkTreeIter *iter, GtkTreeIter *iter,
GnomeControlCenterPrivate *priv) GnomeControlCenterPrivate *priv)
{ {
gchar *name, *target; gchar *name, *description;
gchar *needle, *haystack; gchar *needle, *haystack;
gboolean result; gboolean result;
gchar **keywords; gchar **keywords;
gtk_tree_model_get (model, iter, COL_NAME, &name, gtk_tree_model_get (model, iter,
COL_SEARCH_TARGET, &target, COL_NAME, &name,
COL_DESCRIPTION, &description,
COL_KEYWORDS, &keywords, COL_KEYWORDS, &keywords,
-1); -1);
if (!priv->filter_string || !name || !target) if (!priv->filter_string || !name)
{ {
g_free (name); g_free (name);
g_free (target); g_free (description);
g_strfreev (keywords); g_strfreev (keywords);
return FALSE; return FALSE;
} }
needle = g_utf8_casefold (priv->filter_string, -1); needle = g_utf8_casefold (priv->filter_string, -1);
haystack = g_utf8_casefold (target, -1); haystack = g_utf8_casefold (name, -1);
result = (strstr (haystack, needle) != NULL); result = (strstr (haystack, needle) != NULL);
if (!result && description)
{
gchar *folded;
folded = g_utf8_casefold (description, -1);
result = (strstr (folded, needle) != NULL);
g_free (folded);
}
if (!result && keywords) if (!result && keywords)
{ {
gint i; gint i;
@ -436,7 +446,6 @@ model_filter_func (GtkTreeModel *model,
} }
g_free (name); g_free (name);
g_free (target);
g_free (haystack); g_free (haystack);
g_free (needle); g_free (needle);
g_strfreev (keywords); g_strfreev (keywords);
@ -582,7 +591,7 @@ setup_search (GnomeControlCenter *shell)
"title", COL_NAME); "title", COL_NAME);
gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (search_view), gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (search_view),
priv->search_renderer, priv->search_renderer,
"search-target", COL_SEARCH_TARGET); "search-target", COL_DESCRIPTION);
/* connect the activated signal */ /* connect the activated signal */
g_signal_connect (search_view, "desktop-item-activated", g_signal_connect (search_view, "desktop-item-activated",