Commit 9a419ba0 authored by Stephen Chandler Paul's avatar Stephen Chandler Paul Committed by Peter Hutterer

Replace is_inside_anybutton_area with current_button_area

Signed-off-by: default avatarStephen Chandler Paul <thatslyude@gmail.com>
Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
parent 2e5c0cf4
......@@ -1022,7 +1022,7 @@ SynapticsReset(SynapticsPrivate * priv)
priv->finger_state = FS_UNTOUCHED;
priv->last_motion_millis = 0;
priv->clickpad_click_millis = 0;
priv->inside_button_area = FALSE;
priv->last_button_area = NO_BUTTON_AREA;
priv->tap_state = TS_START;
priv->tap_button = 0;
priv->tap_button_state = TBS_BUTTON_UP;
......@@ -1564,12 +1564,15 @@ is_inside_top_or_bottom_button_area(SynapticsParameters * para, int offset,
return inside_area;
}
static Bool
is_inside_anybutton_area(SynapticsParameters * para, int x, int y)
static enum SoftButtonAreas
current_button_area(SynapticsParameters * para, int x, int y)
{
return
is_inside_top_or_bottom_button_area(para, BOTTOM_BUTTON_AREA, x, y) ||
is_inside_top_or_bottom_button_area(para, TOP_BUTTON_AREA, x, y);
if (is_inside_top_or_bottom_button_area(para, BOTTOM_BUTTON_AREA, x, y))
return BOTTOM_BUTTON_AREA;
else if (is_inside_top_or_bottom_button_area(para, TOP_BUTTON_AREA, x, y))
return TOP_BUTTON_AREA;
else
return NO_BUTTON_AREA;
}
static CARD32
......@@ -3119,13 +3122,15 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
/* Ignore motion *starting* inside softbuttonareas */
if (priv->finger_state < FS_TOUCHED)
priv->inside_button_area = is_inside_anybutton_area(para, hw->x, hw->y);
/* If we already have a finger down, clear inside_button_area if it goes
priv->last_button_area = current_button_area(para, hw->x, hw->y);
/* If we already have a finger down, clear last_button_area if it goes
outside of the softbuttonareas */
else if (priv->inside_button_area && !is_inside_anybutton_area(para, hw->x, hw->y))
priv->inside_button_area = FALSE;
else if (priv->last_button_area != NO_BUTTON_AREA &&
current_button_area(para, hw->x, hw->y) == NO_BUTTON_AREA)
priv->last_button_area = NO_BUTTON_AREA;
ignore_motion = !using_cumulative_coords && priv->inside_button_area;
ignore_motion =
!using_cumulative_coords && priv->last_button_area != NO_BUTTON_AREA;
/* these two just update hw->left, right, etc. */
update_hw_button_state(pInfo, hw, now, &delay);
......
......@@ -151,6 +151,7 @@ enum TouchpadModel {
};
enum SoftButtonAreas {
NO_BUTTON_AREA = -1,
BOTTOM_BUTTON_AREA = 0,
BOTTOM_RIGHT_BUTTON_AREA = 0,
BOTTOM_MIDDLE_BUTTON_AREA = 1,
......@@ -266,7 +267,7 @@ struct _SynapticsPrivateRec {
Bool prev_up; /* Previous up button value, for double click emulation */
enum FingerState finger_state; /* previous finger state */
CARD32 last_motion_millis; /* time of the last motion */
Bool inside_button_area; /* Inside button area (ignore motion) */
enum SoftButtonAreas last_button_area; /* Last button area we were in */
int clickpad_click_millis; /* Time of last clickpad click */
enum TapState tap_state; /* State of tap processing */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment