diff options
-rw-r--r-- | lib/widgets/ephy-location-entry.c | 42 | ||||
-rw-r--r-- | src/ephy-completion-model.c | 10 | ||||
-rw-r--r-- | src/ephy-location-action.c | 2 |
3 files changed, 46 insertions, 8 deletions
diff --git a/lib/widgets/ephy-location-entry.c b/lib/widgets/ephy-location-entry.c index 01eeccaa7..0d3d2d88b 100644 --- a/lib/widgets/ephy-location-entry.c +++ b/lib/widgets/ephy-location-entry.c @@ -92,6 +92,11 @@ static void textcell_data_func (GtkCellLayout *cell_layout, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data); +static void extracell_data_func (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gpointer data); enum signalsEnum { @@ -998,6 +1003,33 @@ textcell_data_func (GtkCellLayout *cell_layout, g_free (url); } +static void +extracell_data_func (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gpointer data) +{ + EphyLocationEntryPrivate *priv; + gboolean is_bookmark = FALSE; + GValue visible = { 0, }; + + priv = EPHY_LOCATION_ENTRY (data)->priv; + gtk_tree_model_get (tree_model, iter, + priv->extra_col, &is_bookmark, + -1); + + if (is_bookmark) + g_object_set (G_OBJECT (cell), + "stock-id", EPHY_STOCK_BOOKMARK, + NULL); + + g_value_init (&visible, G_TYPE_BOOLEAN); + g_value_set_boolean (&visible, is_bookmark); + g_object_set_property (G_OBJECT (cell), "visible", &visible); + g_value_unset (&visible); +} + /** * ephy_location_entry_set_match_func: * @entry: an #EphyLocationEntry widget @@ -1054,7 +1086,7 @@ ephy_location_entry_set_completion (EphyLocationEntry *entry, EphyLocationEntryPrivate *priv = entry->priv; GtkTreeModel *sort_model; GtkEntryCompletion *completion; - GtkCellRenderer *cell, *iconcell; + GtkCellRenderer *cell, *iconcell, *extracell; entry->priv->text_col = text_col; entry->priv->action_col = action_col; @@ -1103,6 +1135,14 @@ ephy_location_entry_set_completion (EphyLocationEntry *entry, entry, NULL); + extracell = gtk_cell_renderer_pixbuf_new (); + gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (completion), + extracell, FALSE); + gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (completion), + extracell, extracell_data_func, + entry, + NULL); + g_object_set (completion, "inline-selection", TRUE, NULL); g_signal_connect (completion, "cursor-on-match", G_CALLBACK (cursor_on_match_cb), entry); diff --git a/src/ephy-completion-model.c b/src/ephy-completion-model.c index 52c1b53c7..77ef7a4f7 100644 --- a/src/ephy-completion-model.c +++ b/src/ephy-completion-model.c @@ -243,9 +243,11 @@ ephy_completion_model_get_column_type (GtkTreeModel *tree_model, case EPHY_COMPLETION_TEXT_COL: case EPHY_COMPLETION_ACTION_COL: case EPHY_COMPLETION_KEYWORDS_COL: - case EPHY_COMPLETION_EXTRA_COL: type = G_TYPE_STRING; break; + case EPHY_COMPLETION_EXTRA_COL: + type = G_TYPE_BOOLEAN; + break; case EPHY_COMPLETION_FAVICON_COL: type = GDK_TYPE_PIXBUF; break; @@ -456,10 +458,8 @@ ephy_completion_model_get_value (GtkTreeModel *tree_model, switch (column) { case EPHY_COMPLETION_EXTRA_COL: - g_value_init (value, G_TYPE_STRING); - g_value_set_string (value, - ephy_node_get_property_string - (node, EPHY_NODE_PAGE_PROP_LOCATION)); + g_value_init (value, G_TYPE_BOOLEAN); + g_value_set_boolean (value, (group == BOOKMARKS_GROUP)); break; case EPHY_COMPLETION_TEXT_COL: g_value_init (value, G_TYPE_STRING); diff --git a/src/ephy-location-action.c b/src/ephy-location-action.c index 1fdace52d..486a4daea 100644 --- a/src/ephy-location-action.c +++ b/src/ephy-location-action.c @@ -133,13 +133,11 @@ match_func (GtkEntryCompletion *completion, ret = (g_regex_match (regex, item, G_REGEX_MATCH_NOTEMPTY, NULL) || g_regex_match (regex, url, G_REGEX_MATCH_NOTEMPTY, NULL) || g_regex_match (regex, keywords, G_REGEX_MATCH_NOTEMPTY, NULL) - || (extra && g_regex_match (regex, extra, G_REGEX_MATCH_NOTEMPTY, NULL)) ); g_free (item); g_free (url); g_free (keywords); - g_free (extra); return ret; } |