From 05736ba0a1facaea873822fbc73221f2eed37414 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Fri, 4 Mar 2011 15:49:13 +0100 Subject: [PATCH] Always reserve space in all workspaces on a drag We used to do this only on automatic workspace switch, but that doesn't work for the multiple monitors case where we want to reserve space on the extra monitors. https://bugzilla.gnome.org/show_bug.cgi?id=609258 --- js/ui/workspacesView.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index e9b548a44..d288c2c14 100644 --- a/js/ui/workspacesView.js +++ b/js/ui/workspacesView.js @@ -385,6 +385,7 @@ WorkspacesView.prototype = { return; this._inDrag = true; + this._firstDragMotion = true; this._dragMonitor = { dragMotion: Lang.bind(this, this._onDragMotion) @@ -396,6 +397,14 @@ WorkspacesView.prototype = { if (Main.overview.animationInProgress) return DND.DragMotionResult.CONTINUE; + if (this._firstDragMotion) { + this._firstDragMotion = false; + for (let i = 0; i < this._workspaces.length; i++) + this._workspaces[i].setReservedSlot(dragEvent.dragActor._delegate); + for (let i = 0; i < this._extraWorkspaces.length; i++) + this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate); + } + let primary = global.get_primary_monitor(); let activeWorkspaceIndex = global.screen.get_active_workspace_index(); @@ -409,7 +418,6 @@ WorkspacesView.prototype = { let switchTop = (dragEvent.y <= topEdge && topWorkspace); if (switchTop && this._dragOverLastY != topEdge) { topWorkspace.metaWorkspace.activate(global.get_current_time()); - topWorkspace.setReservedSlot(dragEvent.dragActor._delegate); this._dragOverLastY = topEdge; return DND.DragMotionResult.CONTINUE; @@ -418,7 +426,6 @@ WorkspacesView.prototype = { let switchBottom = (dragEvent.y >= bottomEdge && bottomWorkspace); if (switchBottom && this._dragOverLastY != bottomEdge) { bottomWorkspace.metaWorkspace.activate(global.get_current_time()); - bottomWorkspace.setReservedSlot(dragEvent.dragActor._delegate); this._dragOverLastY = bottomEdge; return DND.DragMotionResult.CONTINUE; @@ -453,7 +460,6 @@ WorkspacesView.prototype = { this._timeoutId = Mainloop.timeout_add_seconds(1, Lang.bind(this, function() { hoverWorkspace.metaWorkspace.activate(global.get_current_time()); - hoverWorkspace.setReservedSlot(dragEvent.dragActor._delegate); return false; })); } else { @@ -476,6 +482,8 @@ WorkspacesView.prototype = { for (let i = 0; i < this._workspaces.length; i++) this._workspaces[i].setReservedSlot(null); + for (let i = 0; i < this._extraWorkspaces.length; i++) + this._extraWorkspaces[i].setReservedSlot(null); }, _swipeScrollBegin: function() {