switcherPopup: Show immediately on second key press
We slightly delay showing the switcher popup to avoid flashing it briefly in the common case of quickly switching back-and-forth between two windows. However some users perceive this delay as slowness. Address this by showing the popup immediately when another key press is consumed (that is, a key like Tab is pressed). https://gitlab.gnome.org/GNOME/gnome-shell/issues/1928
This commit is contained in:
parent
d5e8f8cdf7
commit
9132063b87
@ -139,15 +139,24 @@ var SwitcherPopup = GObject.registerClass({
|
|||||||
GLib.PRIORITY_DEFAULT,
|
GLib.PRIORITY_DEFAULT,
|
||||||
POPUP_DELAY_TIMEOUT,
|
POPUP_DELAY_TIMEOUT,
|
||||||
() => {
|
() => {
|
||||||
Main.osdWindowManager.hideAll();
|
this._showImmediately();
|
||||||
this.opacity = 255;
|
|
||||||
this._initialDelayTimeoutId = 0;
|
|
||||||
return GLib.SOURCE_REMOVE;
|
return GLib.SOURCE_REMOVE;
|
||||||
});
|
});
|
||||||
GLib.Source.set_name_by_id(this._initialDelayTimeoutId, '[gnome-shell] Main.osdWindow.cancel');
|
GLib.Source.set_name_by_id(this._initialDelayTimeoutId, '[gnome-shell] Main.osdWindow.cancel');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_showImmediately() {
|
||||||
|
if (this._initialDelayTimeoutId === 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
GLib.source_remove(this._initialDelayTimeoutId);
|
||||||
|
this._initialDelayTimeoutId = 0;
|
||||||
|
|
||||||
|
Main.osdWindowManager.hideAll();
|
||||||
|
this.opacity = 255;
|
||||||
|
}
|
||||||
|
|
||||||
_next() {
|
_next() {
|
||||||
return mod(this._selectedIndex + 1, this._items.length);
|
return mod(this._selectedIndex + 1, this._items.length);
|
||||||
}
|
}
|
||||||
@ -167,8 +176,10 @@ var SwitcherPopup = GObject.registerClass({
|
|||||||
|
|
||||||
this._disableHover();
|
this._disableHover();
|
||||||
|
|
||||||
if (this._keyPressHandler(keysym, action) != Clutter.EVENT_PROPAGATE)
|
if (this._keyPressHandler(keysym, action) != Clutter.EVENT_PROPAGATE) {
|
||||||
|
this._showImmediately();
|
||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
|
}
|
||||||
|
|
||||||
// Note: pressing one of the below keys will destroy the popup only if
|
// Note: pressing one of the below keys will destroy the popup only if
|
||||||
// that key is not used by the active popup's keyboard shortcut
|
// that key is not used by the active popup's keyboard shortcut
|
||||||
|
Loading…
Reference in New Issue
Block a user