[gtk+] Don't add a second cell renderer



commit b613cc64786a95ea069d3d308906133165062315
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Oct 18 08:13:41 2010 -0400

    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

 gtk/gtkcomboboxtext.c |   39 ++++++++++++++++++++++++++++++---------
 1 files changed, 30 insertions(+), 9 deletions(-)
---
diff --git a/gtk/gtkcomboboxtext.c b/gtk/gtkcomboboxtext.c
index cd4a0b0..2af9d3f 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:
  *



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]