static void clutter_rectangle_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ClutterRectangle *rectangle = CLUTTER_RECTANGLE(object); ClutterColor color; switch (prop_id) { case PROP_COLOR: clutter_rectangle_get_color (rectangle, &color); g_value_set_boxed (value, &color); break; case PROP_BORDER_COLOR: clutter_rectangle_get_border_color (rectangle, &color); g_value_set_boxed (value, &color); break; case PROP_BORDER_WIDTH: g_value_set_uint (value, rectangle->priv->border_width); break; case PROP_HAS_BORDER: g_value_set_boolean (value, rectangle->priv->has_border); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static gboolean button_press_color_cb(ClutterActor *actor, ClutterEvent *event, gpointer user_data) { App *app = (App *) user_data; ClutterColor color; clutter_rectangle_get_color(CLUTTER_RECTANGLE(actor), &color); int r = color.red; int g = color.green; int b = color.blue; app->setColor(r, g, b); app->setSelectionPosition(clutter_actor_get_x(actor), clutter_actor_get_y(actor)); return TRUE; // handled. Do not propagate to stage }