diff options
author | Tim Janik <timj@gtk.org> | 2001-06-19 12:54:10 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 2001-06-19 12:54:10 +0000 |
commit | 5ebd1d022ac2fa4f32f4cdf218efd62c7ffaf323 (patch) | |
tree | 7591b5b7e706dde79cd2f8bd62f2eb98d0c3baa6 /gtk/gtktable.c | |
parent | 07ddd35c5710631b349c4517b4be4705b4438d08 (diff) | |
download | gtk+-5ebd1d022ac2fa4f32f4cdf218efd62c7ffaf323.tar.gz |
fix PROP_EVENTS.
Mon Jun 18 02:00:49 2001 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_get_property): fix PROP_EVENTS.
* gtk/Makefile.am:
* gtk/gtk.h: disabled GtkPacker compilation.
* gtk/gtkarg.[hc], gtk/gtkargcollector.c: got rid of these.
* gtk/gtknotebook.c:
* gtk/gtktable.c:
* gtk/gtkbox.c: ported this over to child properties.
* gtk/gtksettings.c: fetch class properties via
g_object_class_list_properties().
* gtk/gtkcontainer.[hc]: implemented child properties, got rid of the
child arg interface. use gobjectnotifyqueue.c for child property
notification.
* gtk/gtkwidget.[hc]: provide necessary means for container child
properties, i.e. ::child_notify signal,
gtk_widget_freeze_child_notify(),
gtk_widget_child_notify(),
gtk_widget_thaw_child_notify().
* tests/testgtk.c: removed inferior property handling code, for
property editing, a generic module should be used, and GLE
coincidentally fullfills that purpose.
* docs/reference/Makefile.am: disabled gtk docs building, gtk-doc
needs to be adapted to g_object_class_list_properties() before this
builds again.
Diffstat (limited to 'gtk/gtktable.c')
-rw-r--r-- | gtk/gtktable.c | 246 |
1 files changed, 136 insertions, 110 deletions
diff --git a/gtk/gtktable.c b/gtk/gtktable.c index 98e7709fe8..aa7206390c 100644 --- a/gtk/gtktable.c +++ b/gtk/gtktable.c @@ -39,15 +39,15 @@ enum enum { - CHILD_ARG_0, - CHILD_ARG_LEFT_ATTACH, - CHILD_ARG_RIGHT_ATTACH, - CHILD_ARG_TOP_ATTACH, - CHILD_ARG_BOTTOM_ATTACH, - CHILD_ARG_X_OPTIONS, - CHILD_ARG_Y_OPTIONS, - CHILD_ARG_X_PADDING, - CHILD_ARG_Y_PADDING + CHILD_PROP_0, + CHILD_PROP_LEFT_ATTACH, + CHILD_PROP_RIGHT_ATTACH, + CHILD_PROP_TOP_ATTACH, + CHILD_PROP_BOTTOM_ATTACH, + CHILD_PROP_X_OPTIONS, + CHILD_PROP_Y_OPTIONS, + CHILD_PROP_X_PADDING, + CHILD_PROP_Y_PADDING }; @@ -76,14 +76,16 @@ static void gtk_table_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); -static void gtk_table_set_child_arg (GtkContainer *container, - GtkWidget *child, - GtkArg *arg, - guint arg_id); -static void gtk_table_get_child_arg (GtkContainer *container, - GtkWidget *child, - GtkArg *arg, - guint arg_id); +static void gtk_table_set_child_property (GtkContainer *container, + GtkWidget *child, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void gtk_table_get_child_property (GtkContainer *container, + GtkWidget *child, + guint property_id, + GValue *value, + GParamSpec *pspec); static GtkType gtk_table_child_type (GtkContainer *container); @@ -129,15 +131,10 @@ static void gtk_table_class_init (GtkTableClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); + GtkContainerClass *container_class = GTK_CONTAINER_CLASS (class); - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - container_class = (GtkContainerClass*) class; - - parent_class = gtk_type_class (gtk_container_get_type ()); + parent_class = g_type_class_peek_parent (class); gobject_class->finalize = gtk_table_finalize; @@ -153,8 +150,8 @@ gtk_table_class_init (GtkTableClass *class) container_class->remove = gtk_table_remove; container_class->forall = gtk_table_forall; container_class->child_type = gtk_table_child_type; - container_class->set_child_arg = gtk_table_set_child_arg; - container_class->get_child_arg = gtk_table_get_child_arg; + container_class->set_child_property = gtk_table_set_child_property; + container_class->get_child_property = gtk_table_get_child_property; g_object_class_install_property (gobject_class, @@ -166,7 +163,6 @@ gtk_table_class_init (GtkTableClass *class) G_MAXUINT, 0, G_PARAM_READWRITE)); - g_object_class_install_property (gobject_class, PROP_N_COLUMNS, g_param_spec_uint ("n_columns", @@ -176,7 +172,6 @@ gtk_table_class_init (GtkTableClass *class) G_MAXUINT, 0, G_PARAM_READWRITE)); - g_object_class_install_property (gobject_class, PROP_ROW_SPACING, g_param_spec_uint ("row_spacing", @@ -186,7 +181,6 @@ gtk_table_class_init (GtkTableClass *class) G_MAXUINT, 0, G_PARAM_READWRITE)); - g_object_class_install_property (gobject_class, PROP_COLUMN_SPACING, g_param_spec_uint ("column_spacing", @@ -196,7 +190,6 @@ gtk_table_class_init (GtkTableClass *class) G_MAXUINT, 0, G_PARAM_READWRITE)); - g_object_class_install_property (gobject_class, PROP_HOMOGENEOUS, g_param_spec_boolean ("homogeneous", @@ -205,14 +198,46 @@ gtk_table_class_init (GtkTableClass *class) FALSE, G_PARAM_READWRITE)); - gtk_container_add_child_arg_type ("GtkTable::left_attach", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_LEFT_ATTACH); - gtk_container_add_child_arg_type ("GtkTable::right_attach", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_RIGHT_ATTACH); - gtk_container_add_child_arg_type ("GtkTable::top_attach", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_TOP_ATTACH); - gtk_container_add_child_arg_type ("GtkTable::bottom_attach", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_BOTTOM_ATTACH); - gtk_container_add_child_arg_type ("GtkTable::x_options", GTK_TYPE_ATTACH_OPTIONS, GTK_ARG_READWRITE, CHILD_ARG_X_OPTIONS); - gtk_container_add_child_arg_type ("GtkTable::y_options", GTK_TYPE_ATTACH_OPTIONS, GTK_ARG_READWRITE, CHILD_ARG_Y_OPTIONS); - gtk_container_add_child_arg_type ("GtkTable::x_padding", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_X_PADDING); - gtk_container_add_child_arg_type ("GtkTable::y_padding", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_Y_PADDING); + gtk_container_class_install_child_property (container_class, + CHILD_PROP_LEFT_ATTACH, + g_param_spec_uint ("left_attach", NULL, NULL, + 0, 65535, 0, + G_PARAM_READWRITE)); + gtk_container_class_install_child_property (container_class, + CHILD_PROP_RIGHT_ATTACH, + g_param_spec_uint ("right_attach", NULL, NULL, + 1, 65535, 1, + G_PARAM_READWRITE)); + gtk_container_class_install_child_property (container_class, + CHILD_PROP_TOP_ATTACH, + g_param_spec_uint ("top_attach", NULL, NULL, + 0, 65535, 0, + G_PARAM_READWRITE)); + gtk_container_class_install_child_property (container_class, + CHILD_PROP_BOTTOM_ATTACH, + g_param_spec_uint ("bottom_attach", NULL, NULL, + 1, 65535, 1, + G_PARAM_READWRITE)); + gtk_container_class_install_child_property (container_class, + CHILD_PROP_X_OPTIONS, + g_param_spec_flags ("x_options", NULL, NULL, + GTK_TYPE_ATTACH_OPTIONS, GTK_EXPAND | GTK_FILL, + G_PARAM_READWRITE)); + gtk_container_class_install_child_property (container_class, + CHILD_PROP_Y_OPTIONS, + g_param_spec_flags ("y_options", NULL, NULL, + GTK_TYPE_ATTACH_OPTIONS, GTK_EXPAND | GTK_FILL, + G_PARAM_READWRITE)); + gtk_container_class_install_child_property (container_class, + CHILD_PROP_X_PADDING, + g_param_spec_uint ("x_padding", NULL, NULL, + 0, 65535, 0, + G_PARAM_READWRITE)); + gtk_container_class_install_child_property (container_class, + CHILD_PROP_Y_PADDING, + g_param_spec_uint ("y_padding", NULL, NULL, + 0, 65535, 0, + G_PARAM_READWRITE)); } static GtkType @@ -288,16 +313,16 @@ gtk_table_set_property (GObject *object, } static void -gtk_table_set_child_arg (GtkContainer *container, - GtkWidget *child, - GtkArg *arg, - guint arg_id) +gtk_table_set_child_property (GtkContainer *container, + GtkWidget *child, + guint property_id, + const GValue *value, + GParamSpec *pspec) { - GtkTable *table; + GtkTable *table = GTK_TABLE (container); GtkTableChild *table_child; GList *list; - table = GTK_TABLE (container); table_child = NULL; for (list = table->children; list; list = list->next) { @@ -307,61 +332,59 @@ gtk_table_set_child_arg (GtkContainer *container, break; } if (!list) - return; + { + GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); + return; + } - switch (arg_id) + switch (property_id) { - case CHILD_ARG_LEFT_ATTACH: - table_child->left_attach = GTK_VALUE_UINT (*arg); + case CHILD_PROP_LEFT_ATTACH: + table_child->left_attach = g_value_get_uint (value); if (table_child->right_attach <= table_child->left_attach) table_child->right_attach = table_child->left_attach + 1; if (table_child->right_attach >= table->ncols) gtk_table_resize (table, table->ncols, table_child->right_attach); break; - case CHILD_ARG_RIGHT_ATTACH: - if (GTK_VALUE_UINT (*arg) > 0) - { - table_child->right_attach = GTK_VALUE_UINT (*arg); - if (table_child->right_attach <= table_child->left_attach) - table_child->left_attach = table_child->right_attach - 1; - if (table_child->right_attach >= table->ncols) - gtk_table_resize (table, table->ncols, table_child->right_attach); - } + case CHILD_PROP_RIGHT_ATTACH: + table_child->right_attach = g_value_get_uint (value); + if (table_child->right_attach <= table_child->left_attach) + table_child->left_attach = table_child->right_attach - 1; + if (table_child->right_attach >= table->ncols) + gtk_table_resize (table, table->ncols, table_child->right_attach); break; - case CHILD_ARG_TOP_ATTACH: - table_child->top_attach = GTK_VALUE_UINT (*arg); + case CHILD_PROP_TOP_ATTACH: + table_child->top_attach = g_value_get_uint (value); if (table_child->bottom_attach <= table_child->top_attach) table_child->bottom_attach = table_child->top_attach + 1; if (table_child->bottom_attach >= table->nrows) gtk_table_resize (table, table_child->bottom_attach, table->ncols); break; - case CHILD_ARG_BOTTOM_ATTACH: - if (GTK_VALUE_UINT (*arg) > 0) - { - table_child->bottom_attach = GTK_VALUE_UINT (*arg); - if (table_child->bottom_attach <= table_child->top_attach) - table_child->top_attach = table_child->bottom_attach - 1; - if (table_child->bottom_attach >= table->nrows) - gtk_table_resize (table, table_child->bottom_attach, table->ncols); - } + case CHILD_PROP_BOTTOM_ATTACH: + table_child->bottom_attach = g_value_get_uint (value); + if (table_child->bottom_attach <= table_child->top_attach) + table_child->top_attach = table_child->bottom_attach - 1; + if (table_child->bottom_attach >= table->nrows) + gtk_table_resize (table, table_child->bottom_attach, table->ncols); break; - case CHILD_ARG_X_OPTIONS: - table_child->xexpand = (GTK_VALUE_FLAGS (*arg) & GTK_EXPAND) != 0; - table_child->xshrink = (GTK_VALUE_FLAGS (*arg) & GTK_SHRINK) != 0; - table_child->xfill = (GTK_VALUE_FLAGS (*arg) & GTK_FILL) != 0; + case CHILD_PROP_X_OPTIONS: + table_child->xexpand = (g_value_get_flags (value) & GTK_EXPAND) != 0; + table_child->xshrink = (g_value_get_flags (value) & GTK_SHRINK) != 0; + table_child->xfill = (g_value_get_flags (value) & GTK_FILL) != 0; break; - case CHILD_ARG_Y_OPTIONS: - table_child->yexpand = (GTK_VALUE_FLAGS (*arg) & GTK_EXPAND) != 0; - table_child->yshrink = (GTK_VALUE_FLAGS (*arg) & GTK_SHRINK) != 0; - table_child->yfill = (GTK_VALUE_FLAGS (*arg) & GTK_FILL) != 0; + case CHILD_PROP_Y_OPTIONS: + table_child->yexpand = (g_value_get_flags (value) & GTK_EXPAND) != 0; + table_child->yshrink = (g_value_get_flags (value) & GTK_SHRINK) != 0; + table_child->yfill = (g_value_get_flags (value) & GTK_FILL) != 0; break; - case CHILD_ARG_X_PADDING: - table_child->xpadding = GTK_VALUE_UINT (*arg); + case CHILD_PROP_X_PADDING: + table_child->xpadding = g_value_get_uint (value); break; - case CHILD_ARG_Y_PADDING: - table_child->ypadding = GTK_VALUE_UINT (*arg); + case CHILD_PROP_Y_PADDING: + table_child->ypadding = g_value_get_uint (value); break; default: + GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); break; } if (GTK_WIDGET_VISIBLE (child) && GTK_WIDGET_VISIBLE (table)) @@ -369,16 +392,16 @@ gtk_table_set_child_arg (GtkContainer *container, } static void -gtk_table_get_child_arg (GtkContainer *container, - GtkWidget *child, - GtkArg *arg, - guint arg_id) +gtk_table_get_child_property (GtkContainer *container, + GtkWidget *child, + guint property_id, + GValue *value, + GParamSpec *pspec) { - GtkTable *table; + GtkTable *table = GTK_TABLE (container); GtkTableChild *table_child; GList *list; - table = GTK_TABLE (container); table_child = NULL; for (list = table->children; list; list = list->next) { @@ -388,40 +411,43 @@ gtk_table_get_child_arg (GtkContainer *container, break; } if (!list) - return; + { + GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); + return; + } - switch (arg_id) + switch (property_id) { - case CHILD_ARG_LEFT_ATTACH: - GTK_VALUE_UINT (*arg) = table_child->left_attach; + case CHILD_PROP_LEFT_ATTACH: + g_value_set_uint (value, table_child->left_attach); break; - case CHILD_ARG_RIGHT_ATTACH: - GTK_VALUE_UINT (*arg) = table_child->right_attach; + case CHILD_PROP_RIGHT_ATTACH: + g_value_set_uint (value, table_child->right_attach); break; - case CHILD_ARG_TOP_ATTACH: - GTK_VALUE_UINT (*arg) = table_child->top_attach; + case CHILD_PROP_TOP_ATTACH: + g_value_set_uint (value, table_child->top_attach); break; - case CHILD_ARG_BOTTOM_ATTACH: - GTK_VALUE_UINT (*arg) = table_child->bottom_attach; + case CHILD_PROP_BOTTOM_ATTACH: + g_value_set_uint (value, table_child->bottom_attach); break; - case CHILD_ARG_X_OPTIONS: - GTK_VALUE_FLAGS (*arg) = (table_child->xexpand * GTK_EXPAND | - table_child->xshrink * GTK_SHRINK | - table_child->xfill * GTK_FILL); + case CHILD_PROP_X_OPTIONS: + g_value_set_flags (value, (table_child->xexpand * GTK_EXPAND | + table_child->xshrink * GTK_SHRINK | + table_child->xfill * GTK_FILL)); break; - case CHILD_ARG_Y_OPTIONS: - GTK_VALUE_FLAGS (*arg) = (table_child->yexpand * GTK_EXPAND | - table_child->yshrink * GTK_SHRINK | - table_child->yfill * GTK_FILL); + case CHILD_PROP_Y_OPTIONS: + g_value_set_flags (value, (table_child->yexpand * GTK_EXPAND | + table_child->yshrink * GTK_SHRINK | + table_child->yfill * GTK_FILL)); break; - case CHILD_ARG_X_PADDING: - GTK_VALUE_UINT (*arg) = table_child->xpadding; + case CHILD_PROP_X_PADDING: + g_value_set_uint (value, table_child->xpadding); break; - case CHILD_ARG_Y_PADDING: - GTK_VALUE_UINT (*arg) = table_child->ypadding; + case CHILD_PROP_Y_PADDING: + g_value_set_uint (value, table_child->ypadding); break; default: - arg->type = GTK_TYPE_INVALID; + GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); break; } } |