[PATCH synaptics v5 07/18] Only handle ClickFingers on left button press events

Peter Hutterer peter.hutterer at who-t.net
Mon Mar 12 23:37:34 PDT 2012


ClickFingers doesn't need to be handled on every state, only when the actual
button state changes.

This is a break from the previous behaviour which allowed pressing the
button followed by a two-finger tap to trigger the ClickFinger2 action.
Let's see if anyone complains.

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 src/synaptics.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/synaptics.c b/src/synaptics.c
index 13f1378..e360238 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -2481,7 +2481,7 @@ adjust_state_from_scrollbuttons(const InputInfoPtr pInfo, struct SynapticsHwStat
 
 static void
 update_hw_button_state(const InputInfoPtr pInfo, struct SynapticsHwState *hw,
-                       CARD32 now, int *delay)
+                       struct SynapticsHwState *old, CARD32 now, int *delay)
 {
     SynapticsPrivate *priv = (SynapticsPrivate *) (pInfo->private);
     SynapticsParameters *para = &priv->synpara;
@@ -2493,8 +2493,10 @@ update_hw_button_state(const InputInfoPtr pInfo, struct SynapticsHwState *hw,
     /* 3rd button emulation */
     hw->middle |= HandleMidButtonEmulation(priv, hw, now, delay);
 
-    /* Fingers emulate other buttons */
-    if(hw->left && hw->numFingers >= 1){
+    /* Fingers emulate other buttons. ClickFinger can only be
+       triggered on transition, when left is pressed
+     */
+    if(hw->left && !old->left && hw->numFingers >= 1) {
         handle_clickfinger(para, hw);
     }
 
@@ -2824,7 +2826,7 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
     }
 
     /* these two just update hw->left, right, etc. */
-    update_hw_button_state(pInfo, hw, now, &delay);
+    update_hw_button_state(pInfo, hw, priv->old_hw_state, now, &delay);
     if (priv->has_scrollbuttons)
 	double_click = adjust_state_from_scrollbuttons(pInfo, hw);
 
-- 
1.7.7.6



More information about the xorg-devel mailing list