[mousetrap/gnome3-wip: 109/240] Don't fire clicks if the mouse is moving



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]