overviewControls: Support double-super when animations are off
When super is pressed again during the overview transition, we shift up to the app grid. That means that the feature currently doesn't work when animations are disabled (like in a VM), because there is no transition in that case. Address this by adding a time-based fallback in that case, i.e. shift up when a second super-press occurs within 250ms after the first one. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4121 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1811>
This commit is contained in:
parent
d823141360
commit
28723ac088
@ -1,7 +1,7 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
/* exported ControlsManager */
|
||||
|
||||
const { Clutter, Gio, GObject, Meta, Shell, St } = imports.gi;
|
||||
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
|
||||
|
||||
const AppDisplay = imports.ui.appDisplay;
|
||||
const Dash = imports.ui.dash;
|
||||
@ -407,6 +407,7 @@ class ControlsManager extends St.Widget {
|
||||
|
||||
this._a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA });
|
||||
|
||||
this._lastOverlayKeyTime = 0;
|
||||
global.display.connect('overlay-key', () => {
|
||||
if (this._a11ySettings.get_boolean('stickykeys-enable'))
|
||||
return;
|
||||
@ -414,7 +415,15 @@ class ControlsManager extends St.Widget {
|
||||
const { initialState, finalState, transitioning } =
|
||||
this._stateAdjustment.getStateTransitionParams();
|
||||
|
||||
if (transitioning && finalState > initialState)
|
||||
const time = GLib.get_monotonic_time() / 1000;
|
||||
const timeDiff = time - this._lastOverlayKeyTime;
|
||||
this._lastOverlayKeyTime = time;
|
||||
|
||||
const shouldShift = St.Settings.get().enable_animations
|
||||
? transitioning && finalState > initialState
|
||||
: Main.overview.visible && timeDiff < Overview.ANIMATION_TIME;
|
||||
|
||||
if (shouldShift)
|
||||
this._shiftState(Meta.MotionDirection.UP);
|
||||
else
|
||||
Main.overview.toggle();
|
||||
|
Loading…
Reference in New Issue
Block a user