keyboard: Create extended keys before updating hover state

We want extended keys to have the same size as their parent key,
but this is currently broken and the keys end up with their
parent key's preferred size (which is smaller than its allocated
size).

This is due to the way ClutterActor's width/height properties work,
which only return the "real" (i.e. allocated) size when the allocation
is valid, and fall back to the preferred size otherwise.

As changing an StWidget's hover state involves adding or removing
the `:hover` pseudo class, this is currently always the case.
Creating the extended keys first means the keyButton's allocation
is probably valid, so do that.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1976
This commit is contained in:
Florian Müllner 2019-12-04 20:01:41 +01:00
parent ff7dfa9259
commit 7fbdaadce2

View File

@ -328,9 +328,9 @@ var Key = GObject.registerClass({
if (this._extendedKeys.length > 0) { if (this._extendedKeys.length > 0) {
this._touchPressed = false; this._touchPressed = false;
this._ensureExtendedKeysPopup();
this.keyButton.set_hover(false); this.keyButton.set_hover(false);
this.keyButton.fake_release(); this.keyButton.fake_release();
this._ensureExtendedKeysPopup();
this._showSubkeys(); this._showSubkeys();
} }