diff --git a/js/ui/overview.js b/js/ui/overview.js index 40cd85272..351ba7c58 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -24,6 +24,7 @@ const PlaceDisplay = imports.ui.placeDisplay; const Tweener = imports.ui.tweener; const ViewSelector = imports.ui.viewSelector; const WorkspacesView = imports.ui.workspacesView; +const WorkspaceThumbnail = imports.ui.workspaceThumbnail; // Time for initial animation going into Overview mode const ANIMATION_TIME = 0.25; @@ -243,7 +244,8 @@ Overview.prototype = { _onDragMotion: function(dragEvent) { let targetIsWindow = dragEvent.targetActor && dragEvent.targetActor._delegate && - dragEvent.targetActor._delegate.metaWindow; + dragEvent.targetActor._delegate.metaWindow && + !(dragEvent.targetActor._delegate instanceof WorkspaceThumbnail.WindowClone); this._windowSwitchTimestamp = global.get_current_time(); diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js index d6334c6b3..9d92f7b10 100644 --- a/js/ui/workspaceThumbnail.js +++ b/js/ui/workspaceThumbnail.js @@ -379,6 +379,11 @@ WorkspaceThumbnail.prototype = { // Draggable target interface handleDragOver : function(source, actor, x, y, time) { + if (source == Main.xdndHandler) { + this.metaWorkspace.activate(time); + return DND.DragMotionResult.CONTINUE; + } + if (this.state > ThumbnailState.NORMAL) return DND.DragMotionResult.CONTINUE; diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index f7250c649..f791f9fb4 100644 --- a/js/ui/workspacesView.js +++ b/js/ui/workspacesView.js @@ -598,6 +598,14 @@ WorkspacesDisplay.prototype = { this._updateAlwaysZoom(); global.screen.connect('monitors-changed', Lang.bind(this, this._updateAlwaysZoom)); + Main.xdndHandler.connect('drag-begin', Lang.bind(this, function(){ + this._alwaysZoomOut = true; + })); + + Main.xdndHandler.connect('drag-end', Lang.bind(this, function(){ + this._alwaysZoomOut = false; + this._updateAlwaysZoom(); + })); this._nWorkspacesNotifyId = 0; this._switchWorkspaceNotifyId = 0;