diff --git a/scroll-workspaces/extension.js b/scroll-workspaces/extension.js index 801ab37..b609565 100644 --- a/scroll-workspaces/extension.js +++ b/scroll-workspaces/extension.js @@ -4,6 +4,7 @@ const Shell = imports.gi.Shell; const Meta = imports.gi.Meta; const Main = imports.ui.main; +const ViewSelector = imports.ui.viewSelector; const ExtensionUtils = imports.misc.extensionUtils; const Me = ExtensionUtils.getCurrentExtension(); @@ -16,6 +17,8 @@ const WorkspaceScroller = new Lang.Class({ Main.panel.actor.reactive = true; this._panelScrollEventId = Main.panel.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent)); this._lastScrollTime = new Date().getTime(); + // Add workaround for https://bugzilla.gnome.org/show_bug.cgi?id=737534 + this._onPageChangedId = Main.overview.viewSelector.connect('page-changed', Lang.bind(this, this._onPageChanged)); }, destroy: function() { @@ -23,6 +26,10 @@ const WorkspaceScroller = new Lang.Class({ Main.panel.actor.disconnect(this._panelScrollEventId); this._panelScrollEventId = 0; } + if (this._onPageChangedId) { + Main.overview.viewSelector.disconnect(this._onPageChangedId); + this._onPageChangedId = 0; + } }, get _delay() { @@ -39,6 +46,18 @@ const WorkspaceScroller = new Lang.Class({ toActivate.activate(global.get_current_time()); }, + _onPageChanged: function() { + let activePage = Main.overview.viewSelector.getActivePage(); + if (activePage != ViewSelector.ViewPage.WINDOWS) { + this._workspaceActivateFunc = Meta.Workspace.prototype.activate; + Meta.Workspace.prototype.activate = function() {}; + } + else if (this._workspaceActivateFunc) { + Meta.Workspace.prototype.activate = this._workspaceActivateFunc; + delete this._workspaceActivateFunc; + } + }, + _onScrollEvent: function(actor, event) { let source = event.get_source(); if (source.__proto__ != Shell.GenericContainer.prototype) {