summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2012-03-09 14:29:28 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2012-03-14 08:46:46 +1000
commit70b4e983c6626b9b20bdf59324f64b3fd99c5202 (patch)
tree5688cd7aa3e5f1ad88b5b9e2c42b6ff0967c2051
parentf6c1efbc6d22f41fb8a4abd2f57db173a2ac3171 (diff)
Only handle ClickFingers on left button press events
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@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r--src/synaptics.c10
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);