XDND: Fix dragMonitor leak in WorkspacesDisplay
WorkspacesDisplay removes its dragMonitor in _dragEnd, but this was never called in when a xdnd drag ended causing dragMonitors to stack up and handling events multiple times. Fix that by making sure that _dragEnd is called when xdnd ends. https://bugzilla.gnome.org/show_bug.cgi?id=644642
This commit is contained in:
parent
7ad89dc46b
commit
29d473f2fa
@ -220,6 +220,7 @@ Overview.prototype = {
|
|||||||
this._resetWindowSwitchTimeout();
|
this._resetWindowSwitchTimeout();
|
||||||
this._lastHoveredWindow = null;
|
this._lastHoveredWindow = null;
|
||||||
DND.removeMonitor(this._dragMonitor);
|
DND.removeMonitor(this._dragMonitor);
|
||||||
|
this.endItemDrag();
|
||||||
},
|
},
|
||||||
|
|
||||||
_resetWindowSwitchTimeout: function() {
|
_resetWindowSwitchTimeout: function() {
|
||||||
|
@ -320,6 +320,9 @@ WorkspacesView.prototype = {
|
|||||||
Main.overview.disconnect(this._overviewShownId);
|
Main.overview.disconnect(this._overviewShownId);
|
||||||
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
|
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
|
||||||
|
|
||||||
|
if (this._inDrag)
|
||||||
|
this._dragEnd();
|
||||||
|
|
||||||
if (this._timeoutId) {
|
if (this._timeoutId) {
|
||||||
Mainloop.source_remove(this._timeoutId);
|
Mainloop.source_remove(this._timeoutId);
|
||||||
this._timeoutId = 0;
|
this._timeoutId = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user