XDND: Remove the switch timeout in _onDragEnd

When the user cancels the drag while hovering over a window the timeout
handler will throw an exception because the drag actor will be destroyed
at this point.

Fix that by removing the timeout in _onDragEnd.
This commit is contained in:
Adel Gadllah 2011-02-24 11:30:46 +01:00
parent 8d78c3a2ab
commit 6d6ec46f25

View File

@ -213,10 +213,19 @@ Overview.prototype = {
global.screen.get_workspace_by_index(this._lastActiveWorkspaceIndex).activate(time); global.screen.get_workspace_by_index(this._lastActiveWorkspaceIndex).activate(time);
this.hideTemporarily(); this.hideTemporarily();
} }
this._resetWindowSwitchTimeout();
this._lastHoveredWindow = null; this._lastHoveredWindow = null;
DND.removeMonitor(this._dragMonitor); DND.removeMonitor(this._dragMonitor);
}, },
_resetWindowSwitchTimeout: function() {
if (this._windowSwitchTimeoutId != 0) {
Mainloop.source_remove(this._windowSwitchTimeoutId);
this._windowSwitchTimeoutId = 0;
this._needsFakePointerEvent = false;
}
},
_fakePointerEvent: function() { _fakePointerEvent: function() {
let display = Gdk.Display.get_default(); let display = Gdk.Display.get_default();
let deviceManager = display.get_device_manager(); let deviceManager = display.get_device_manager();
@ -239,11 +248,7 @@ Overview.prototype = {
this._lastHoveredWindow = null; this._lastHoveredWindow = null;
if (this._windowSwitchTimeoutId != 0) { this._resetWindowSwitchTimeout();
Mainloop.source_remove(this._windowSwitchTimeoutId);
this._windowSwitchTimeoutId = 0;
this._needsFakePointerEvent = false;
}
if (targetIsWindow) { if (targetIsWindow) {
this._lastHoveredWindow = dragEvent.targetActor._delegate.metaWindow; this._lastHoveredWindow = dragEvent.targetActor._delegate.metaWindow;