static void gd_stack_set_child_property (GtkContainer *container, GtkWidget *child, guint property_id, const GValue *value, GParamSpec *pspec) { GdStack *stack = GD_STACK (container); GdStackPrivate *priv = stack->priv; GdStackChildInfo *info; info = find_child_info_for_widget (stack, child); if (info == NULL) { GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); return; } switch (property_id) { case CHILD_PROP_NAME: g_free (info->name); info->name = g_value_dup_string (value); gtk_container_child_notify (container, child, "name"); if (priv->visible_child == info) g_object_notify (G_OBJECT (stack), "visible-child-name"); break; case CHILD_PROP_TITLE: g_free (info->title); info->title = g_value_dup_string (value); gtk_container_child_notify (container, child, "title"); break; case CHILD_PROP_SYMBOLIC_ICON_NAME: g_free (info->symbolic_icon_name); info->symbolic_icon_name = g_value_dup_string (value); gtk_container_child_notify (container, child, "symbolic-icon-name"); break; case CHILD_PROP_POSITION: reorder_child (stack, child, g_value_get_int (value)); break; default: GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); break; } }
static void gd_stack_get_child_property (GtkContainer *container, GtkWidget *child, guint property_id, GValue *value, GParamSpec *pspec) { GdStack *stack = GD_STACK (container); GdStackChildInfo *info; GList *list; guint i; info = find_child_info_for_widget (stack, child); if (info == NULL) { GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); return; } switch (property_id) { case CHILD_PROP_NAME: g_value_set_string (value, info->name); break; case CHILD_PROP_TITLE: g_value_set_string (value, info->title); break; case CHILD_PROP_SYMBOLIC_ICON_NAME: g_value_set_string (value, info->symbolic_icon_name); break; case CHILD_PROP_POSITION: i = 0; for (list = stack->priv->children; list != NULL; list = g_list_next (list)) { if (info == list->data) break; ++i; } g_value_set_int (value, i); break; default: GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); break; } }
static void gb_slider_set_child_property (GtkContainer *container, GtkWidget *child, guint prop_id, const GValue *value, GParamSpec *pspec) { GbSlider *self = (GbSlider *)container; switch (prop_id) { case CHILD_PROP_POSITION: gb_slider_child_set_position (self, child, g_value_get_enum (value)); break; default: GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, prop_id, pspec); } }