[mousetrap/gnome3-wip: 109/240] Don't fire clicks if the mouse is moving
- From: Heidi Ellis <heidiellis src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mousetrap/gnome3-wip: 109/240] Don't fire clicks if the mouse is moving
- Date: Mon, 8 Sep 2014 15:21:43 +0000 (UTC)
commit 860b50228b86b3faf47318e2bd1f20fc29d8fea7
Author: Kevin Brown <kbrown rediker com>
Date: Fri Jun 20 19:54:15 2014 -0400
Don't fire clicks if the mouse is moving
src/mousetrap/gui.py | 5 ++++-
src/mousetrap/plugins/eyes.py | 17 ++++++++++++++++-
2 files changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/src/mousetrap/gui.py b/src/mousetrap/gui.py
index 5606ef5..e69df67 100644
--- a/src/mousetrap/gui.py
+++ b/src/mousetrap/gui.py
@@ -78,11 +78,14 @@ class Pointer(object):
def set_position(self, position=None):
'''Move pointer to position (x, y). If position is None,
no change is made.'''
- LOGGER.debug('moving to %s', position)
self._moved = False
if position is not None:
+ LOGGER.debug('Moving pointer to %s', position)
+
self._pointer.warp(self._screen, position[0], position[1])
self._moved = True
+ else:
+ LOGGER.debug('Not moving the pointer')
def is_moving(self):
'''Returns True if last call to set_position passed a non-None value
diff --git a/src/mousetrap/plugins/eyes.py b/src/mousetrap/plugins/eyes.py
index a1fd947..ad5ae61 100644
--- a/src/mousetrap/plugins/eyes.py
+++ b/src/mousetrap/plugins/eyes.py
@@ -10,6 +10,7 @@ class EyesPlugin(interface.Plugin):
def __init__(self):
self._left_locator = LeftEyeLocator()
self._history = []
+ self._pointer_history = []
self._is_closed = False
def run(self, app):
@@ -19,7 +20,7 @@ class EyesPlugin(interface.Plugin):
except FeatureNotFoundException:
self._miss()
- if self._detect_closed():
+ if self._not_moving(app) and self._detect_closed():
self._history = []
app.pointer.click()
@@ -29,6 +30,20 @@ class EyesPlugin(interface.Plugin):
def _miss(self):
self._history.append(None)
+ def _not_moving(self, app):
+ self._pointer_history.append(app.pointer.get_position())
+
+ last_point = app.pointer.get_position()
+
+ while len(self._pointer_history) > 5:
+ del self._pointer_history[0]
+
+ for point in self._pointer_history:
+ if point != last_point:
+ return False
+
+ return True
+
def _detect_closed(self):
while len(self._history) > 15:
del self._history[0]
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]