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:
Adel Gadllah 2011-03-13 19:34:47 +01:00
parent 7ad89dc46b
commit 29d473f2fa
2 changed files with 4 additions and 0 deletions

View File

@ -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() {

View File

@ -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;