summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--man/synaptics.man15
-rw-r--r--src/synaptics.c11
2 files changed, 14 insertions, 12 deletions
diff --git a/man/synaptics.man b/man/synaptics.man
index 90dae0e..794f0e8 100644
--- a/man/synaptics.man
+++ b/man/synaptics.man
@@ -441,7 +441,7 @@ Property: "Synaptics Pad Resolution"
.
.TP
.BI "Option \*qAreaLeftEdge\*q \*q" integer \*q
-Ignore movements, scrolling and tapping which take place left of this edge.
+Ignore movements, scrolling and tapping which start left of this edge.
.
The option is disabled by default and can be enabled by setting the
AreaLeftEdge option to any integer value other than zero. If supported by the
@@ -450,7 +450,7 @@ the total width of the touchpad. Property: "Synaptics Area"
.
.TP
.BI "Option \*qAreaRightEdge\*q \*q" integer \*q
-Ignore movements, scrolling and tapping which take place right of this edge.
+Ignore movements, scrolling and tapping which start right of this edge.
.
The option is disabled by default and can be enabled by setting the
AreaRightEdge option to any integer value other than zero. If supported by the
@@ -459,7 +459,7 @@ the total width of the touchpad. Property: "Synaptics Area"
.
.TP
.BI "Option \*qAreaTopEdge\*q \*q" integer \*q
-Ignore movements, scrolling and tapping which take place above this edge.
+Ignore movements, scrolling and tapping which start above this edge.
.
The option is disabled by default and can be enabled by setting the
AreaTopEdge option to any integer value other than zero. If supported by the
@@ -468,7 +468,7 @@ the total height of the touchpad. Property: "Synaptics Area"
.
.TP
.BI "Option \*qAreaBottomEdge\*q \*q" integer \*q
-Ignore movements, scrolling and tapping which take place below this edge.
+Ignore movements, scrolling and tapping which start below this edge.
.
The option is disabled by default and can be enabled by setting the
AreaBottomEdge option to any integer value other than zero. If supported by the
@@ -532,9 +532,10 @@ the touchpad.
.PP
The perceived physical edges may be adjusted with the AreaLeftEdge,
AreaRightEdge, AreaTopEdge, and AreaBottomEdge options. If these values are
-set to something other than the physical edges, input in the space between
-the area edge and the respective physical edge is ignored. Note that this
-reduces the available space on the touchpad.
+set to something other than the physical edges, input that starts in the
+space between the area edge and the respective physical edge is ignored.
+Note that this reduces the available space on the touchpad to start motions
+in.
.SS Tapping
A tap event happens when the finger is touched and released in a time
interval shorter than MaxTapTime, and the touch and release
diff --git a/src/synaptics.c b/src/synaptics.c
index 3b1ea91..85d1b40 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -1436,6 +1436,11 @@ is_inside_active_area(SynapticsPrivate * priv, int x, int y)
{
Bool inside_area = TRUE;
+ /* If a finger is down, then it must have started inside the active_area,
+ allow the motion to complete using the entire area */
+ if (priv->finger_state >= FS_TOUCHED)
+ return TRUE;
+
if ((priv->synpara.area_left_edge != 0) &&
(x < priv->synpara.area_left_edge))
inside_area = FALSE;
@@ -3018,13 +3023,9 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
invalid are: x, y, z, numFingers, fingerWidth
valid are: millis, left/right/middle/up/down/etc.
*/
- if (!inside_active_area) {
+ if (!inside_active_area)
reset_hw_state(hw);
- /* FIXME: if finger accidentally moves into the area and doesn't
- * really release, the finger should remain down. */
- }
-
/* no edge or finger detection outside of area */
if (inside_active_area) {
edge = edge_detection(priv, hw->x, hw->y);