From 8f910d2f3005fc44e8ba181659c22f28508d8c75 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 27 Jul 2009 11:04:13 +1000 Subject: [PATCH] Remove the "SpecialScrollAreaRight" option. This option auto-adjusts the right edge on the touchpad but wrongly so. It does not take the edge width into account, thus setting the right edge to the max value received - leaving only a single-pixel scroll area in some cases. A previous attempt to auto-adjust edges has failed (afb60a0b). The kernel's min/max values cannot be relied on for actual range clipping and thus scroll edge settings are best left untouched. --- man/synaptics.man | 8 +------- src/synaptics.c | 25 ------------------------- src/synapticsstr.h | 2 -- 3 files changed, 1 insertions(+), 34 deletions(-) diff --git a/man/synaptics.man b/man/synaptics.man index 86be548..c0baafa 100644 --- a/man/synaptics.man +++ b/man/synaptics.man @@ -99,9 +99,7 @@ option is not needed with synaptics 1.0 or later. See section X coordinate for left edge. Property: "Synaptics Edges" .TP 7 .BI "Option \*qRightEdge\*q \*q" integer \*q -X coordinate for right edge. If this option is set, -.BI SpecialScrollAreaRight -is ignored. Property: "Synaptics Edges" +X coordinate for right edge. Property: "Synaptics Edges" .TP 7 .BI "Option \*qTopEdge\*q \*q" integer \*q Y coordinate for top edge. Property: "Synaptics Edges" @@ -109,10 +107,6 @@ Y coordinate for top edge. Property: "Synaptics Edges" .BI "Option \*qBottomEdge\*q \*q" integer \*q Y coordinate for bottom edge. Property: "Synaptics Edges" .TP 7 -.BI "Option \*qSpecialScrollAreaRight\*q \*q" boolean \*q -Some touchpads have a scroll region on the right edge. Disable this option if -you have one but don't want use it as scroll wheel region. -.TP 7 .BI "Option \*qFingerLow\*q \*q" integer \*q When finger pressure drops below this value, the driver counts it as a release. Property: "Synaptics Finger" diff --git a/src/synaptics.c b/src/synaptics.c index 9f67f09..f84f684 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -484,11 +484,6 @@ static void set_default_parameters(LocalDevicePtr local) pars->scroll_dist_vert = xf86SetIntOption(opts, "VertScrollDelta", horizScrollDelta); pars->scroll_dist_horiz = xf86SetIntOption(opts, "HorizScrollDelta", vertScrollDelta); pars->scroll_edge_vert = xf86SetBoolOption(opts, "VertEdgeScroll", vertEdgeScroll); - if (xf86CheckIfOptionUsedByName(opts, "RightEdge")) { - pars->special_scroll_area_right = FALSE; - } else { - pars->special_scroll_area_right = xf86SetBoolOption(opts, "SpecialScrollAreaRight", TRUE); - } pars->scroll_edge_horiz = xf86SetBoolOption(opts, "HorizEdgeScroll", horizEdgeScroll); pars->scroll_edge_corner = xf86SetBoolOption(opts, "CornerCoasting", FALSE); pars->scroll_twofinger_vert = xf86SetBoolOption(opts, "VertTwoFingerScroll", vertTwoFingerScroll); @@ -637,8 +632,6 @@ SynapticsPreInit(InputDriverPtr drv, IDevPtr dev, int flags) CalculateScalingCoeffs(priv); - priv->largest_valid_x = MIN(priv->synpara.right_edge, XMAX_NOMINAL); - if (!alloc_param_data(local)) goto SetupProc_fail; @@ -2166,24 +2159,6 @@ HandleState(LocalDevicePtr local, struct SynapticsHwState *hw) hw->multi[2] = hw->multi[3] = FALSE; } - /* - * Some touchpads have a scroll wheel region where a very large X - * coordinate is reported. In this case for eliminate discontinuity, - * we adjust X and simulate new zone which adjacent to right edge. - */ - if (hw->x <= XMAX_VALID) { - if (priv->largest_valid_x < hw->x) - priv->largest_valid_x = hw->x; - } else { - hw->x = priv->largest_valid_x + 1; - /* - * If user didn't set right_edge manualy, auto-adjust to bounds of - * hardware scroll area. - */ - if (para->special_scroll_area_right) - priv->synpara.right_edge = priv->largest_valid_x; - } - edge = edge_detection(priv, hw->x, hw->y); inside_active_area = is_inside_active_area(priv, hw->x, hw->y); diff --git a/src/synapticsstr.h b/src/synapticsstr.h index ba5405b..2986173 100644 --- a/src/synapticsstr.h +++ b/src/synapticsstr.h @@ -108,7 +108,6 @@ typedef struct _SynapticsParameters Bool scroll_edge_corner; /* Enable/disable continuous edge scrolling when in the corner */ Bool scroll_twofinger_vert; /* Enable/disable vertical two-finger scrolling */ Bool scroll_twofinger_horiz; /* Enable/disable horizontal two-finger scrolling */ - Bool special_scroll_area_right; /* Enable/disable autodetection right special scroll area */ double min_speed, max_speed, accl; /* movement parameters */ double trackstick_speed; /* trackstick mode speed */ int edge_motion_min_z; /* finger pressure at which minimum edge motion speed is set */ @@ -172,7 +171,6 @@ typedef struct _SynapticsPrivateRec SynapticsMoveHistRec move_hist[SYNAPTICS_MOVE_HISTORY]; /* movement history */ int hist_index; /* Last added entry in move_hist[] */ - int largest_valid_x; /* Largest valid X coordinate seen so far */ int scroll_y; /* last y-scroll position */ int scroll_x; /* last x-scroll position */ double scroll_a; /* last angle-scroll position */ -- 1.6.3.rc1.2.g0164.dirty