]> Pileus Git - ~andy/gtk/commitdiff
Don't add a second cell renderer
authorMatthias Clasen <mclasen@redhat.com>
Mon, 18 Oct 2010 12:13:41 +0000 (08:13 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 18 Oct 2010 12:13:41 +0000 (08:13 -0400)
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

gtk/gtkcomboboxtext.c

index cd4a0b0725ad3d238db431902e90dd0d8218a540..2af9d3f608fa281b30d2855eadebc18d4246da0e 100644 (file)
 
 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:
  *