[gnome-shell] XDND: Don't reset switch timeout when pointer is over the same window
- From: Adel Gadllah <agadllah src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] XDND: Don't reset switch timeout when pointer is over the same window
- Date: Thu, 20 Jan 2011 08:58:33 +0000 (UTC)
commit ee6a852996b1fed57c524906c6f06d1169315bcb
Author: Adel Gadllah <adel gadllah gmail com>
Date: Fri Jan 7 11:12:00 2011 +0100
XDND: Don't reset switch timeout when pointer is over the same window
Currently we reset the timeout on every mouse movement which means
the user has to keep the mouse at the exact same position for 1.25
seconds.
Be more tolerant and allow the user to move the mouse over the
window without reseting the timeout, which should make activating
windows easier.
https://bugzilla.gnome.org/show_bug.cgi?id=638896
js/ui/overview.js | 19 +++++++++++++++----
1 files changed, 15 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/overview.js b/js/ui/overview.js
index 353d769..7aa2423 100644
--- a/js/ui/overview.js
+++ b/js/ui/overview.js
@@ -167,6 +167,7 @@ Overview.prototype = {
this._windowSwitchTimeoutId = 0;
this._windowSwitchTimestamp = 0;
this._lastActiveWorkspaceIndex = -1;
+ this._lastHoveredWindow = null;
this._needsFakePointerEvent = false;
this.workspaces = null;
@@ -186,7 +187,7 @@ Overview.prototype = {
global.screen.get_workspace_by_index(this._lastActiveWorkspaceIndex).activate(time);
this.hideTemporarily();
}
-
+ this._lastHoveredWindow = null;
DND.removeMonitor(this._dragMonitor);
},
@@ -200,15 +201,24 @@ Overview.prototype = {
},
_onDragMotion: function(dragEvent) {
+ let targetIsWindow = dragEvent.targetActor &&
+ dragEvent.targetActor._delegate &&
+ dragEvent.targetActor._delegate.metaWindow;
+
+ if (targetIsWindow &&
+ dragEvent.targetActor._delegate.metaWindow == this._lastHoveredWindow)
+ return;
+ else
+ this._lastHoveredWindow = null;
+
if (this._windowSwitchTimeoutId != 0) {
Mainloop.source_remove(this._windowSwitchTimeoutId);
this._windowSwitchTimeoutId = 0;
this._needsFakePointerEvent = false;
}
- if (dragEvent.targetActor &&
- dragEvent.targetActor._delegate &&
- dragEvent.targetActor._delegate.metaWindow) {
+ if (targetIsWindow) {
+ this._lastHoveredWindow = dragEvent.targetActor._delegate.metaWindow;
this._windowSwitchTimestamp = global.get_current_time();
this._windowSwitchTimeoutId = Mainloop.timeout_add(DND_WINDOW_SWITCH_TIMEOUT,
Lang.bind(this, function() {
@@ -216,6 +226,7 @@ Overview.prototype = {
Main.activateWindow(dragEvent.targetActor._delegate.metaWindow,
this._windowSwitchTimestamp);
this.hideTemporarily();
+ this._lastHoveredWindow = null;
}));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]