[PATCH synaptics 04/12] Factor out up/down and left/right button scrolling from HandleState.
Jamey Sharp
jamey at minilop.net
Fri May 7 16:36:05 PDT 2010
Reviewed-by: Jamey Sharp <jamey at minilop.net>
Same style comments as before.
Jamey
On Thu, May 6, 2010 at 9:41 PM, Peter Hutterer <peter.hutterer at who-t.net> wrote:
> There are not a lot of touchpads that even have these buttons anyway, move the
> code out of the way for clarity.
>
> No functional changes.
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> src/synaptics.c | 65 +++++++++++++++++++++++++++++++++---------------------
> 1 files changed, 40 insertions(+), 25 deletions(-)
>
> diff --git a/src/synaptics.c b/src/synaptics.c
> index f765e30..9720acd 100644
> --- a/src/synaptics.c
> +++ b/src/synaptics.c
> @@ -2087,6 +2087,45 @@ update_shm(const LocalDevicePtr local, const struct SynapticsHwState *hw)
> shm->guest_dy = hw->guest_dy;
> }
>
> +/* Adjust the hardware state according to the extra buttons (if the touchpad
> + * has any and not many touchpads do these days). These buttons are up/down
> + * tilt buttons and/or left/right buttons that then map into a specific
> + * function (or scrolling into).
> + */
> +static inline Bool
> +adjust_state_from_scrollbuttons(const LocalDevicePtr local, struct SynapticsHwState *hw)
> +{
> + SynapticsPrivate *priv = (SynapticsPrivate *) (local->private);
> + SynapticsParameters *para = &priv->synpara;
> + Bool double_click = FALSE;
> +
> + if (!para->updown_button_scrolling) {
> + if (hw->down) { /* map down button to middle button */
> + hw->middle = TRUE;
> + }
> +
> + if (hw->up) { /* up button generates double click */
> + if (!priv->prev_up)
> + double_click = TRUE;
> + }
> + priv->prev_up = hw->up;
> +
> + /* reset up/down button events */
> + hw->up = hw->down = FALSE;
> + }
> +
> + /* Left/right button scrolling, or middle clicks */
> + if (!para->leftright_button_scrolling) {
> + if (hw->multi[2] || hw->multi[3])
> + hw->middle = TRUE;
> +
> + /* reset left/right button events */
> + hw->multi[2] = hw->multi[3] = FALSE;
> + }
> +
> + return double_click;
> +}
> +
> /*
> * React on changes in the hardware state. This function is called every time
> * the hardware state changes. The return value is used to specify how many
> @@ -2138,31 +2177,7 @@ HandleState(LocalDevicePtr local, struct SynapticsHwState *hw)
> hw->numFingers = 2;
> }
>
> - /* Up/Down button scrolling or middle/double click */
> - double_click = FALSE;
> - if (!para->updown_button_scrolling) {
> - if (hw->down) { /* map down button to middle button */
> - hw->middle = TRUE;
> - }
> -
> - if (hw->up) { /* up button generates double click */
> - if (!priv->prev_up)
> - double_click = TRUE;
> - }
> - priv->prev_up = hw->up;
> -
> - /* reset up/down button events */
> - hw->up = hw->down = FALSE;
> - }
> -
> - /* Left/right button scrolling, or middle clicks */
> - if (!para->leftright_button_scrolling) {
> - if (hw->multi[2] || hw->multi[3])
> - hw->middle = TRUE;
> -
> - /* reset left/right button events */
> - hw->multi[2] = hw->multi[3] = FALSE;
> - }
> + double_click = adjust_state_from_scrollbuttons(local, hw);
>
> edge = edge_detection(priv, hw->x, hw->y);
> inside_active_area = is_inside_active_area(priv, hw->x, hw->y);
> --
> 1.6.6.1
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list