Call UpdateButtons on mouse_movement data for ALPS device
This fixes problem with B_MOUSE_DOWN messages produced by Thinkpad TrackPoint buttons. Those messages have 'clicks' parameter always equal to zero. Solution was suggested by korli. Thanks! Fixes #8978 Signed-off-by: Siarzhuk Zharski <[email protected]>
This commit is contained in:
committed by
Siarzhuk Zharski
parent
c33a865c7c
commit
777178a56f
@@ -483,7 +483,7 @@ TouchpadMovement::_EdgeMotion(mouse_movement *movement, touch_event *event,
|
|||||||
Also, it sets the button state from movement->buttons.
|
Also, it sets the button state from movement->buttons.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
TouchpadMovement::_UpdateButtons(mouse_movement *movement)
|
TouchpadMovement::UpdateButtons(mouse_movement *movement)
|
||||||
{
|
{
|
||||||
// set click count correctly according to double click timeout
|
// set click count correctly according to double click timeout
|
||||||
if (movement->buttons != 0 && fButtonsState == 0) {
|
if (movement->buttons != 0 && fButtonsState == 0) {
|
||||||
@@ -549,7 +549,7 @@ TouchpadMovement::_NoTouchToMovement(touch_event *event,
|
|||||||
}
|
}
|
||||||
|
|
||||||
movement->buttons = buttons;
|
movement->buttons = buttons;
|
||||||
_UpdateButtons(movement);
|
UpdateButtons(movement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -601,7 +601,7 @@ TouchpadMovement::_MoveToMovement(touch_event *event, mouse_movement *movement)
|
|||||||
fTapDeltaY = 0;
|
fTapDeltaY = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
_UpdateButtons(movement);
|
UpdateButtons(movement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -111,11 +111,12 @@ public:
|
|||||||
bool TapDragStarted() { return fTapdragStarted; }
|
bool TapDragStarted() { return fTapdragStarted; }
|
||||||
bool WasEdgeMotion() { return fValidEdgeMotion; }
|
bool WasEdgeMotion() { return fValidEdgeMotion; }
|
||||||
|
|
||||||
|
void UpdateButtons(mouse_movement *movement);
|
||||||
|
|
||||||
bigtime_t click_speed;
|
bigtime_t click_speed;
|
||||||
private:
|
private:
|
||||||
bool _EdgeMotion(mouse_movement *movement,
|
bool _EdgeMotion(mouse_movement *movement,
|
||||||
touch_event *event, bool validStart);
|
touch_event *event, bool validStart);
|
||||||
inline void _UpdateButtons(mouse_movement *movement);
|
|
||||||
inline void _NoTouchToMovement(touch_event *event,
|
inline void _NoTouchToMovement(touch_event *event,
|
||||||
mouse_movement *movement);
|
mouse_movement *movement);
|
||||||
inline void _MoveToMovement(touch_event *event,
|
inline void _MoveToMovement(touch_event *event,
|
||||||
|
|||||||
@@ -248,6 +248,8 @@ get_alps_movment(alps_cookie *cookie, mouse_movement *movement)
|
|||||||
movement->wheel_xdelta = 0;
|
movement->wheel_xdelta = 0;
|
||||||
movement->wheel_ydelta = 0;
|
movement->wheel_ydelta = 0;
|
||||||
movement->buttons = event.buttons;
|
movement->buttons = event.buttons;
|
||||||
|
movement->timestamp = system_time();
|
||||||
|
cookie->movementMaker.UpdateButtons(movement);
|
||||||
} else {
|
} else {
|
||||||
event.yPosition = AREA_END_Y - (event.yPosition - AREA_START_Y);
|
event.yPosition = AREA_END_Y - (event.yPosition - AREA_START_Y);
|
||||||
status = cookie->movementMaker.EventToMovement(&event, movement);
|
status = cookie->movementMaker.EventToMovement(&event, movement);
|
||||||
|
|||||||
Reference in New Issue
Block a user