mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-18 07:34:54 +00:00
windowManager: Allow switching workspaces with super-scroll
So far, we couldn't allow workspace scrolling outside the overview because scroll events were always sent to clients. However mutter was changed recently to pass on scroll events when the mouse button modifier (usually super) is pressed, which allows us to enable the same workspace scrolling as in the overview now. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1612>
This commit is contained in:
parent
ac8246050d
commit
7aa36ad239
2 changed files with 19 additions and 1 deletions
|
|
@ -862,6 +862,16 @@ var WindowManager = class {
|
|||
Shell.ActionMode.OVERVIEW,
|
||||
this._switchToApplication.bind(this));
|
||||
|
||||
global.stage.connect('scroll-event', (stage, event) => {
|
||||
if (this._workspaceAnimation.canHandleScrollEvent(event))
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
if ((event.get_state() & global.display.compositor_modifiers) === 0)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
return this.handleWorkspaceScroll(event);
|
||||
});
|
||||
|
||||
global.display.connect('show-resize-popup', this._showResizePopup.bind(this));
|
||||
global.display.connect('show-pad-osd', this._showPadOsd.bind(this));
|
||||
global.display.connect('show-osd', (display, monitorIndex, iconName, label) => {
|
||||
|
|
|
|||
|
|
@ -284,11 +284,15 @@ var WorkspaceAnimationController = class {
|
|||
});
|
||||
|
||||
const swipeTracker = new SwipeTracker.SwipeTracker(global.stage,
|
||||
Shell.ActionMode.NORMAL, { allowDrag: false, allowScroll: false });
|
||||
Shell.ActionMode.NORMAL, { allowDrag: false });
|
||||
swipeTracker.connect('begin', this._switchWorkspaceBegin.bind(this));
|
||||
swipeTracker.connect('update', this._switchWorkspaceUpdate.bind(this));
|
||||
swipeTracker.connect('end', this._switchWorkspaceEnd.bind(this));
|
||||
this._swipeTracker = swipeTracker;
|
||||
|
||||
global.display.bind_property('compositor-modifiers',
|
||||
this._swipeTracker, 'scroll-modifiers',
|
||||
GObject.BindingFlags.SYNC_CREATE);
|
||||
}
|
||||
|
||||
_prepareWorkspaceSwitch(workspaceIndices) {
|
||||
|
|
@ -390,6 +394,10 @@ var WorkspaceAnimationController = class {
|
|||
}
|
||||
}
|
||||
|
||||
canHandleScrollEvent(event) {
|
||||
return this._swipeTracker.canHandleScrollEvent(event);
|
||||
}
|
||||
|
||||
_findMonitorGroup(monitorIndex) {
|
||||
return this._switchData.monitors.find(m => m.index === monitorIndex);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue