summaryrefslogtreecommitdiff
path: root/gtk/gtkcellrenderercombo.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2004-10-25 03:57:25 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2004-10-25 03:57:25 +0000
commit2b4ef0648abbc50db56ca367004153f6ce3f10ba (patch)
tree4fd7d34bec4ea956b82cc506c17b5b0b879c50c2 /gtk/gtkcellrenderercombo.c
parent4614cffc738198cde882cdea50fa169de7f161ef (diff)
downloadgtk+-2b4ef0648abbc50db56ca367004153f6ce3f10ba.tar.gz
Use G_DEFINE_TYPE, intialize the has_entry property, ref the model and add
2004-10-24 Matthias Clasen <mclasen@redhat.com> * gtk/gtkcellrenderercombo.c: Use G_DEFINE_TYPE, intialize the has_entry property, ref the model and add a finalizer. (#156325, Olivier Andrieu)
Diffstat (limited to 'gtk/gtkcellrenderercombo.c')
-rw-r--r--gtk/gtkcellrenderercombo.c68
1 files changed, 34 insertions, 34 deletions
diff --git a/gtk/gtkcellrenderercombo.c b/gtk/gtkcellrenderercombo.c
index eea0f06198..ce7b6d1757 100644
--- a/gtk/gtkcellrenderercombo.c
+++ b/gtk/gtkcellrenderercombo.c
@@ -32,6 +32,7 @@
static void gtk_cell_renderer_combo_class_init (GtkCellRendererComboClass *klass);
static void gtk_cell_renderer_combo_init (GtkCellRendererCombo *self);
+static void gtk_cell_renderer_combo_finalize (GObject *object);
static void gtk_cell_renderer_combo_get_property (GObject *object,
guint prop_id,
GValue *value,
@@ -57,37 +58,9 @@ enum {
PROP_HAS_ENTRY
};
-static GObjectClass *parent_class = NULL;
-
#define GTK_CELL_RENDERER_COMBO_PATH "gtk-cell-renderer-combo-path"
-GType
-gtk_cell_renderer_combo_get_type (void)
-{
- static GType gtk_cell_renderer_combo_type = 0;
-
- if (!gtk_cell_renderer_combo_type)
- {
- static const GTypeInfo gtk_cell_renderer_combo_info =
- {
- sizeof (GtkCellRendererComboClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) gtk_cell_renderer_combo_class_init,
- NULL,
- NULL,
- sizeof (GtkCellRendererCombo),
- 0,
- (GInstanceInitFunc) gtk_cell_renderer_combo_init
- };
- gtk_cell_renderer_combo_type =
- g_type_register_static (GTK_TYPE_CELL_RENDERER_TEXT,
- "GtkCellRendererCombo",
- &gtk_cell_renderer_combo_info,
- 0);
- }
- return gtk_cell_renderer_combo_type;
-}
+G_DEFINE_TYPE (GtkCellRendererCombo, gtk_cell_renderer_combo, GTK_TYPE_CELL_RENDERER_TEXT);
static void
gtk_cell_renderer_combo_class_init (GtkCellRendererComboClass *klass)
@@ -95,8 +68,7 @@ gtk_cell_renderer_combo_class_init (GtkCellRendererComboClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS (klass);
- parent_class = g_type_class_peek_parent (klass);
-
+ object_class->finalize = gtk_cell_renderer_combo_finalize;
object_class->get_property = gtk_cell_renderer_combo_get_property;
object_class->set_property = gtk_cell_renderer_combo_set_property;
@@ -143,7 +115,7 @@ gtk_cell_renderer_combo_class_init (GtkCellRendererComboClass *klass)
/**
* GtkCellRendererCombo:has_entry:
*
- * If the :has_entry property is %TRUe, the cell renderer will
+ * If the :has_entry property is %TRUE, the cell renderer will
* include an entry and allow to enter values other than the ones
* in the popup list.
*
@@ -164,6 +136,7 @@ gtk_cell_renderer_combo_init (GtkCellRendererCombo *self)
{
self->model = NULL;
self->text_column = -1;
+ self->has_entry = TRUE;
self->focus_out_id = 0;
}
@@ -189,6 +162,20 @@ gtk_cell_renderer_combo_new (void)
}
static void
+gtk_cell_renderer_combo_finalize (GObject *object)
+{
+ GtkCellRendererCombo *cell = GTK_CELL_RENDERER_COMBO (object);
+
+ if (cell->model)
+ {
+ g_object_unref (cell->model);
+ cell->model = NULL;
+ }
+
+ G_OBJECT_CLASS (gtk_cell_renderer_combo_parent_class)->finalize (object);
+}
+
+static void
gtk_cell_renderer_combo_get_property (GObject *object,
guint prop_id,
GValue *value,
@@ -231,8 +218,21 @@ gtk_cell_renderer_combo_set_property (GObject *object,
switch (prop_id)
{
case PROP_MODEL:
- cell->model = g_value_get_object (value);
- break;
+ {
+ GObject *object;
+
+ object = g_value_get_object (value);
+ g_return_if_fail (GTK_IS_TREE_MODEL (object));
+ g_object_ref (object);
+
+ if (cell->model)
+ {
+ g_object_unref (cell->model);
+ cell->model = NULL;
+ }
+ cell->model = GTK_TREE_MODEL (object);
+ break;
+ }
case PROP_TEXT_COLUMN:
cell->text_column = g_value_get_int (value);
break;