And use it to give the completion menu a layout, and icons next to the completion entries !
Signed-off-by: Niv Sardi <[email protected]> --- libempathy-gtk/empathy-presence-chooser.c | 39 +++++++++++++++++----------- 1 files changed, 24 insertions(+), 15 deletions(-) diff --git a/libempathy-gtk/empathy-presence-chooser.c b/libempathy-gtk/empathy-presence-chooser.c index 16e364c..7a2a52e 100644 --- a/libempathy-gtk/empathy-presence-chooser.c +++ b/libempathy-gtk/empathy-presence-chooser.c @@ -152,6 +152,27 @@ empathy_presence_chooser_class_init (EmpathyPresenceChooserClass *klass) } static void +empathy_chooser_setup_cell_layout (GtkCellLayout *layout) +{ + GtkCellRenderer *renderer; + + gtk_cell_layout_clear (layout); + + renderer = gtk_cell_renderer_pixbuf_new (); + gtk_cell_layout_pack_start (layout, renderer, FALSE); + gtk_cell_layout_set_attributes (layout, renderer, + "icon-name", COL_STATE_ICON_NAME, + NULL); + g_object_set (renderer, "stock-size", GTK_ICON_SIZE_MENU, NULL); + + renderer = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (layout, renderer, TRUE); + gtk_cell_layout_set_attributes (layout, renderer, + "markup", COL_DISPLAY_MARKUP, + NULL); +} + +static void presence_chooser_create_model (EmpathyPresenceChooser *self) { GtkListStore *store; @@ -237,6 +258,8 @@ presence_chooser_create_model (EmpathyPresenceChooser *self) gtk_entry_completion_set_model (completion, GTK_TREE_MODEL (store)); gtk_entry_completion_set_text_column (completion, COL_STATUS_TEXT); gtk_entry_completion_set_inline_completion(completion, TRUE); + + empathy_chooser_setup_cell_layout (GTK_CELL_LAYOUT (completion)); gtk_entry_set_completion (GTK_ENTRY (entry), completion); g_object_unref (store); @@ -722,7 +745,6 @@ empathy_presence_chooser_init (EmpathyPresenceChooser *chooser) EmpathyPresenceChooserPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (chooser, EMPATHY_TYPE_PRESENCE_CHOOSER, EmpathyPresenceChooserPriv); GtkWidget *entry; - GtkCellRenderer *renderer; chooser->priv = priv; @@ -752,20 +774,7 @@ empathy_presence_chooser_init (EmpathyPresenceChooser *chooser) G_CALLBACK (presence_chooser_entry_button_press_event_cb), chooser); - gtk_cell_layout_clear (GTK_CELL_LAYOUT (chooser)); - - renderer = gtk_cell_renderer_pixbuf_new (); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (chooser), renderer, FALSE); - gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (chooser), renderer, - "icon-name", COL_STATE_ICON_NAME, - NULL); - g_object_set (renderer, "stock-size", GTK_ICON_SIZE_MENU, NULL); - - renderer = gtk_cell_renderer_text_new (); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (chooser), renderer, TRUE); - gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (chooser), renderer, - "markup", COL_DISPLAY_MARKUP, - NULL); + empathy_chooser_setup_cell_layout (GTK_CELL_LAYOUT (chooser)); g_signal_connect (chooser, "notify::popup-shown", G_CALLBACK (presence_chooser_popup_shown_cb), NULL); -- 1.6.3.1 _______________________________________________ telepathy mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/telepathy
