static void st_button_set_property (GObject *gobject, guint prop_id, const GValue *value, GParamSpec *pspec) { StButton *button = ST_BUTTON (gobject); switch (prop_id) { case PROP_LABEL: st_button_set_label (button, g_value_get_string (value)); break; case PROP_BUTTON_MASK: st_button_set_button_mask (button, g_value_get_flags (value)); break; case PROP_TOGGLE_MODE: st_button_set_toggle_mode (button, g_value_get_boolean (value)); break; case PROP_CHECKED: st_button_set_checked (button, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } }
static void st_button_release (StButton *button, ClutterInputDevice *device, StButtonMask mask, int clicked_button, ClutterEventSequence *sequence) { StButtonPrivate *priv = st_button_get_instance_private (button); if ((device && priv->device != device) || (sequence && priv->press_sequence != sequence)) return; else if (!sequence) { priv->pressed &= ~mask; if (priv->pressed != 0) return; } priv->press_sequence = NULL; priv->device = NULL; st_widget_remove_style_pseudo_class (ST_WIDGET (button), "active"); if (clicked_button || sequence) { if (priv->is_toggle) st_button_set_checked (button, !priv->is_checked); g_signal_emit (button, button_signals[CLICKED], 0, clicked_button); } }
static void st_button_release (StButton *button, StButtonMask mask, int clicked_button) { button->priv->pressed &= ~mask; if (button->priv->pressed != 0) return; st_widget_remove_style_pseudo_class (ST_WIDGET (button), "active"); if (clicked_button) { if (button->priv->is_toggle) st_button_set_checked (button, !button->priv->is_checked); g_signal_emit (button, button_signals[CLICKED], 0, clicked_button); } }