St: add :disabled pseudo class when a button is not reactive

The :reactive property is used on StButton to like the :sensitive
property on GtkWidgets, that is, to indicate that the user is not
(yet) expected to click the button, and therefore should affect
styling too.
This allows to remove some code at the JS layer.

https://bugzilla.gnome.org/show_bug.cgi?id=619955
This commit is contained in:
Giovanni Campagna 2012-07-18 13:59:26 +02:00
parent 2c073fb005
commit a29507e452
2 changed files with 12 additions and 4 deletions

View File

@ -166,10 +166,6 @@ const NetworkSecretDialog = new Lang.Class({
this._okButton.button.reactive = valid;
this._okButton.button.can_focus = valid;
if (valid)
this._okButton.button.remove_style_pseudo_class('disabled');
else
this._okButton.button.add_style_pseudo_class('disabled');
},
_onOk: function() {

View File

@ -446,6 +446,15 @@ st_button_class_init (StButtonClass *klass)
G_TYPE_INT);
}
static void
notify_reactive_cb (StWidget *button)
{
if (clutter_actor_get_reactive (CLUTTER_ACTOR (button)))
st_widget_remove_style_pseudo_class (button, "disabled");
else
st_widget_add_style_pseudo_class (button, "disabled");
}
static void
st_button_init (StButton *button)
{
@ -455,6 +464,9 @@ st_button_init (StButton *button)
clutter_actor_set_reactive (CLUTTER_ACTOR (button), TRUE);
st_widget_set_track_hover (ST_WIDGET (button), TRUE);
g_signal_connect(button, "notify::reactive",
G_CALLBACK (notify_reactive_cb), NULL);
}
/**