[PATCH synaptics] Use cumulative relative touch movements while scrolling

Gabriele Mazzotta gabriele.mzt at gmail.com
Thu Aug 14 11:03:42 PDT 2014


Signed-off-by: Gabriele Mazzotta <gabriele.mzt at gmail.com>
---
 src/eventcomm.c | 8 +++++---
 src/synaptics.c | 8 +++++---
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/eventcomm.c b/src/eventcomm.c
index 1f440b8..54421bb 100644
--- a/src/eventcomm.c
+++ b/src/eventcomm.c
@@ -665,9 +665,11 @@ EventReadHwState(InputInfoPtr pInfo,
 
     SynapticsResetTouchHwState(hw, FALSE);
 
-    /* Reset cumulative values if buttons were not previously pressed,
-     * or no finger was previously present. */
-    if ((!hw->left && !hw->right && !hw->middle) || hw->z < para->finger_low) {
+    /* Reset cumulative values if buttons were not previously pressed and no
+     * two-finger scrolling is ongoing, or no finger was previously present. */
+    if (((!hw->left && !hw->right && !hw->middle) &&
+        !(priv->vert_scroll_twofinger_on || priv->vert_scroll_twofinger_on)) ||
+        hw->z < para->finger_low) {
         hw->cumulative_dx = hw->x;
         hw->cumulative_dy = hw->y;
         sync_cumulative = TRUE;
diff --git a/src/synaptics.c b/src/synaptics.c
index b1dbe03..a84536b 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -3187,9 +3187,11 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
         }
     }
 
-    /* If a physical button is pressed on a clickpad, use cumulative relative
-     * touch movements for motion */
-    if (para->clickpad && (priv->lastButtons & 7) &&
+    /* If a physical button is pressed on a clickpad or a two-finger scrolling
+     * is ongoing, use cumulative relative touch movements for motion */
+    if (para->clickpad &&
+        ((priv->lastButtons & 7) ||
+        (priv->vert_scroll_twofinger_on || priv->horiz_scroll_twofinger_on)) &&
         priv->last_button_area != TOP_BUTTON_AREA) {
         hw->x = hw->cumulative_dx;
         hw->y = hw->cumulative_dy;
-- 
2.1.0.rc1



More information about the xorg-devel mailing list