extensions-app: Reset switch handle when it becomes insensitive

Currently the switches handle position reflects the requested
extension state (as in: the user (de)activated the switch),
while the actual extension state is reflected by the underlying
state.

That doesn't work well when the switch is insensitive though (for
example on error), because the desaturation neuters the color
that reflects the state.

Address this by resetting the switch handle to the state when
making it insensitive.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1263
This commit is contained in:
Florian Müllner 2020-05-18 14:24:16 +02:00 committed by Georges Basile Stavracas Neto
parent 0ab34fe21f
commit d2583aa47b
2 changed files with 5 additions and 1 deletions

View File

@ -54,7 +54,7 @@
</object> </object>
</child> </child>
<child> <child>
<object class="GtkSwitch"> <object class="GtkSwitch" id="switch">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="valign">center</property> <property name="valign">center</property>

View File

@ -332,6 +332,7 @@ var ExtensionRow = GObject.registerClass({
'versionLabel', 'versionLabel',
'authorLabel', 'authorLabel',
'updatesIcon', 'updatesIcon',
'switch',
'revealButton', 'revealButton',
'revealer', 'revealer',
], ],
@ -451,6 +452,9 @@ var ExtensionRow = GObject.registerClass({
action.set_state(new GLib.Variant('b', state)); action.set_state(new GLib.Variant('b', state));
action.enabled = this._canToggle(); action.enabled = this._canToggle();
if (!action.enabled)
this._switch.active = state;
this._updatesIcon.visible = this.hasUpdate; this._updatesIcon.visible = this.hasUpdate;
this._versionLabel.label = this.version.toString(); this._versionLabel.label = this.version.toString();