diff options
author | Diego Escalante Urrelo <diegoe@src.gnome.org> | 2007-09-30 20:58:24 +0800 |
---|---|---|
committer | Diego Escalante Urrelo <diegoe@src.gnome.org> | 2007-09-30 20:58:24 +0800 |
commit | 8c8b026fc6c22677eb05255eb4e1bbf1bda7dae3 (patch) | |
tree | ce0a92a20c03fd5fba25611a231cb99ba78ad546 /lib | |
parent | d09bb750b80c245545bb8e97ce9070d9f3d31310 (diff) | |
download | gsoc2013-epiphany-8c8b026fc6c22677eb05255eb4e1bbf1bda7dae3.tar.gz gsoc2013-epiphany-8c8b026fc6c22677eb05255eb4e1bbf1bda7dae3.tar.zst gsoc2013-epiphany-8c8b026fc6c22677eb05255eb4e1bbf1bda7dae3.zip |
Make the location entry completion cells smarter, now bookmarks take the full
width of the popup. Also make the extracell (titles of history entries) align
to the left so it's less messy and easier to browse a lot of entries with
similar titles.
Almost-fixes bug #419475.
svn path=/trunk/; revision=7508
Diffstat (limited to 'lib')
-rw-r--r-- | lib/widgets/ephy-location-entry.c | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/lib/widgets/ephy-location-entry.c b/lib/widgets/ephy-location-entry.c index a7f670add..08843166e 100644 --- a/lib/widgets/ephy-location-entry.c +++ b/lib/widgets/ephy-location-entry.c @@ -122,6 +122,12 @@ static void ephy_location_entry_class_init (EphyLocationEntryClass *klass); static void ephy_location_entry_init (EphyLocationEntry *le); static gboolean ephy_location_entry_reset_internal (EphyLocationEntry *, gboolean); +static void extracell_data_func (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gpointer data); + static GObjectClass *parent_class = NULL; enum signalsEnum @@ -1006,6 +1012,29 @@ cursor_on_match_cb (GtkEntryCompletion *completion, return TRUE; } +static void +extracell_data_func (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gpointer data) +{ + char *cdata; + GValue visible = { 0, }; + GValue text = { 0, }; + + gtk_tree_model_get (tree_model, iter, GPOINTER_TO_UINT(data), &cdata, -1); + + g_value_init (&text, G_TYPE_STRING); + g_value_init (&visible, G_TYPE_BOOLEAN); + + g_value_set_string (&text, cdata); + g_value_set_boolean (&visible, (cdata != NULL)); + + g_object_set_property (G_OBJECT (cell), "text", &text); + g_object_set_property (G_OBJECT (cell), "visible", &visible); +} + void ephy_location_entry_set_completion (EphyLocationEntry *le, GtkTreeModel *model, @@ -1066,13 +1095,16 @@ ephy_location_entry_set_completion (EphyLocationEntry *le, g_object_set (le->priv->extracell, "ellipsize", PANGO_ELLIPSIZE_END, "ellipsize-set", TRUE, - "alignment", PANGO_ALIGN_RIGHT, + "alignment", PANGO_ALIGN_LEFT, NULL); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (completion), le->priv->extracell, TRUE); - gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (completion), - le->priv->extracell, "text", extra_col); + + gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (completion), + le->priv->extracell, extracell_data_func, + GUINT_TO_POINTER (extra_col), + NULL); g_object_set (completion, "inline-selection", TRUE, NULL); g_signal_connect (completion, "cursor-on-match", |