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)
This commit is contained in:
Matthias Clasen 2004-10-25 03:57:25 +00:00 committed by Matthias Clasen
parent 4614cffc73
commit 2b4ef0648a
5 changed files with 58 additions and 34 deletions

View File

@ -1,3 +1,9 @@
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)
Sun Oct 24 02:56:43 2004 Jonathan Blandford <jrb@redhat.com>
* docs/tools/widgets.c: Update GtkFileChooserButton doc shot.

View File

@ -1,3 +1,9 @@
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)
Sun Oct 24 02:56:43 2004 Jonathan Blandford <jrb@redhat.com>
* docs/tools/widgets.c: Update GtkFileChooserButton doc shot.

View File

@ -1,3 +1,9 @@
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)
Sun Oct 24 02:56:43 2004 Jonathan Blandford <jrb@redhat.com>
* docs/tools/widgets.c: Update GtkFileChooserButton doc shot.

View File

@ -1,3 +1,9 @@
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)
Sun Oct 24 02:56:43 2004 Jonathan Blandford <jrb@redhat.com>
* docs/tools/widgets.c: Update GtkFileChooserButton doc shot.

View File

@ -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;
}
@ -188,6 +161,20 @@ gtk_cell_renderer_combo_new (void)
return g_object_new (GTK_TYPE_CELL_RENDERER_COMBO, NULL);
}
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,
@ -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;