diff options
author | Matthias Clasen <mclasen@redhat.com> | 2010-10-18 08:13:41 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2010-10-18 08:13:41 -0400 |
commit | b613cc64786a95ea069d3d308906133165062315 (patch) | |
tree | e55cfc80af181b7c4eb706ed76c3d706b57e0536 | |
parent | 8d456e3c505d7665deaedbeb4c343f9aa51d78f6 (diff) | |
download | gtk+-b613cc64786a95ea069d3d308906133165062315.tar.gz |
Don't add a second cell renderer
When has-entry is TRUE, GtkComboBox already adds a cell renderer
for the text column, so avoid adding a second one in GtkComboBoxText.
https://bugzilla.gnome.org/show_bug.cgi?id=632381
-rw-r--r-- | gtk/gtkcomboboxtext.c | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/gtk/gtkcomboboxtext.c b/gtk/gtkcomboboxtext.c index cd4a0b0725..2af9d3f608 100644 --- a/gtk/gtkcomboboxtext.c +++ b/gtk/gtkcomboboxtext.c @@ -43,28 +43,50 @@ G_DEFINE_TYPE (GtkComboBoxText, gtk_combo_box_text, GTK_TYPE_COMBO_BOX); -static void -gtk_combo_box_text_class_init (GtkComboBoxTextClass *klass) +static GObject * +gtk_combo_box_text_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties) { + GObject *object; + + object = G_OBJECT_CLASS (gtk_combo_box_text_parent_class)->constructor + (type, n_construct_properties, construct_properties); + + if (!gtk_combo_box_get_has_entry (GTK_COMBO_BOX (object))) + { + GtkCellRenderer *cell; + + cell = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (object), cell, TRUE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (object), cell, + "text", 0, + NULL); + } + + return object; } static void gtk_combo_box_text_init (GtkComboBoxText *combo_box) { GtkListStore *store; - GtkCellRenderer *cell; store = gtk_list_store_new (1, G_TYPE_STRING); gtk_combo_box_set_model (GTK_COMBO_BOX (combo_box), GTK_TREE_MODEL (store)); g_object_unref (store); +} - cell = gtk_cell_renderer_text_new (); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), cell, TRUE); - gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), cell, - "text", 0, - NULL); +static void +gtk_combo_box_text_class_init (GtkComboBoxTextClass *klass) +{ + GObjectClass *object_class; + + object_class = (GObjectClass *)klass; + object_class->constructor = gtk_combo_box_text_constructor; } + /** * gtk_combo_box_text_new: * @@ -83,7 +105,6 @@ gtk_combo_box_text_new (void) NULL); } - /** * gtk_combo_box_text_new_with_entry: * |