From 414fe75d02d83dbfebffa75db29a8ac74681c1e3 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sun, 22 Jul 2012 20:46:48 -0300 Subject: [PATCH] st-widget: Move reactivity tracking to StWidget, use "insensitive" This lets use remove another few pieces of code that do the tracking manually. https://bugzilla.gnome.org/show_bug.cgi?id=680426 --- data/theme/gnome-shell.css | 4 ++-- js/ui/messageTray.js | 4 ---- js/ui/popupMenu.js | 13 ------------- src/st/st-button.c | 12 ------------ src/st/st-widget.c | 12 ++++++++++++ 5 files changed, 14 insertions(+), 31 deletions(-) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index f2b5f3326..189b417d0 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -202,7 +202,7 @@ StScrollBar StButton#vhandle:hover background-color: #4c4c4c; } -.popup-menu-item:insensitive { +StButton.popup-menu-item:insensitive { color: #9f9f9f; } @@ -1630,7 +1630,7 @@ StScrollBar StButton#vhandle:hover padding: 4px 32px 5px; } -.modal-dialog-button:disabled { +.modal-dialog-button:insensitive { color: rgb(60, 60, 60); } diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index d1c726de8..d7b764742 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -799,10 +799,6 @@ const Notification = new Lang.Class({ return; button.reactive = sensitive; - if (sensitive) - button.remove_style_pseudo_class('insensitive'); - else - button.add_style_pseudo_class('insensitive'); }, setUrgency: function(urgency) { diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 7570d6ebc..0517837d6 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -135,10 +135,6 @@ const PopupBaseMenuItem = new Lang.Class({ this.sensitive = sensitive; this.actor.reactive = sensitive; - if (sensitive) - this.actor.remove_style_pseudo_class('insensitive'); - else - this.actor.add_style_pseudo_class('insensitive'); this.emit('sensitive-changed', sensitive); }, @@ -1900,10 +1896,6 @@ const RemoteMenu = new Lang.Class({ } item.actor.reactive = action.enabled; - if (action.enabled) - item.actor.remove_style_pseudo_class('insensitive'); - else - item.actor.add_style_pseudo_class('insensitive'); destroyId = item.connect('destroy', Lang.bind(this, function() { item.disconnect(destroyId); @@ -2036,11 +2028,6 @@ const RemoteMenu = new Lang.Class({ for (let i = 0; i < action.items.length; i++) { let item = action.items[i]; item.actor.reactive = action.enabled; - - if (action.enabled) - item.actor.remove_style_pseudo_class('insensitive'); - else - item.actor.add_style_pseudo_class('insensitive'); } } } diff --git a/src/st/st-button.c b/src/st/st-button.c index e3c46f9fb..a4edbe75a 100644 --- a/src/st/st-button.c +++ b/src/st/st-button.c @@ -446,15 +446,6 @@ 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) { @@ -464,9 +455,6 @@ 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); } /** diff --git a/src/st/st-widget.c b/src/st/st-widget.c index 6d6539378..767808239 100644 --- a/src/st/st-widget.c +++ b/src/st/st-widget.c @@ -1404,6 +1404,17 @@ st_widget_name_notify (StWidget *widget, st_widget_style_changed (widget); } +static void +st_widget_reactive_notify (StWidget *widget, + GParamSpec *pspec, + gpointer data) +{ + if (clutter_actor_get_reactive (CLUTTER_ACTOR (widget))) + st_widget_remove_style_pseudo_class (widget, "insensitive"); + else + st_widget_add_style_pseudo_class (widget, "insensitive"); +} + static void st_widget_first_child_notify (StWidget *widget, GParamSpec *pspec, @@ -1466,6 +1477,7 @@ st_widget_init (StWidget *actor) /* connect style changed */ g_signal_connect (actor, "notify::name", G_CALLBACK (st_widget_name_notify), NULL); + g_signal_connect (actor, "notify::reactive", G_CALLBACK (st_widget_reactive_notify), NULL); g_signal_connect (actor, "notify::first-child", G_CALLBACK (st_widget_first_child_notify), NULL); g_signal_connect (actor, "notify::last-child", G_CALLBACK (st_widget_last_child_notify), NULL);