mirror of
https://github.com/X11Libre/xf86-input-synaptics.git
synced 2026-03-24 01:34:04 +00:00
Replace is_inside_anybutton_area with current_button_area
Signed-off-by: Stephen Chandler Paul <thatslyude@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 9a419ba01c)
This commit is contained in:
committed by
Peter Hutterer
parent
1e08fbf8a7
commit
8732f7b5c1
@@ -1017,7 +1017,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;
|
||||
@@ -1560,12 +1560,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
|
||||
@@ -3097,13 +3100,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);
|
||||
|
||||
@@ -150,6 +150,7 @@ enum TouchpadModel {
|
||||
};
|
||||
|
||||
enum SoftButtonAreas {
|
||||
NO_BUTTON_AREA = -1,
|
||||
BOTTOM_BUTTON_AREA = 0,
|
||||
BOTTOM_RIGHT_BUTTON_AREA = 0,
|
||||
BOTTOM_MIDDLE_BUTTON_AREA = 1,
|
||||
@@ -264,7 +265,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 */
|
||||
|
||||
Reference in New Issue
Block a user