From e3bbe6517ce1457236ed75c05e3a109f238c6d8e Mon Sep 17 00:00:00 2001
From: Michael Kanis <mks@skweez.net>
Date: Thu, 31 Jan 2013 20:45:08 +0100
Subject: [PATCH] Fix DualPoint click count
---
src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp | 6 +++---
src/add-ons/kernel/bus_managers/ps2/movement_maker.h | 3 ++-
src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp | 2 ++
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp b/src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp
index 868cd12..41bdf86 100644
a
|
b
|
TouchpadMovement::_EdgeMotion(mouse_movement *movement, touch_event *event,
|
483 | 483 | Also, it sets the button state from movement->buttons. |
484 | 484 | */ |
485 | 485 | void |
486 | | TouchpadMovement::_UpdateButtons(mouse_movement *movement) |
| 486 | TouchpadMovement::UpdateButtons(mouse_movement *movement) |
487 | 487 | { |
488 | 488 | // set click count correctly according to double click timeout |
489 | 489 | if (movement->buttons != 0 && fButtonsState == 0) { |
… |
… |
TouchpadMovement::_NoTouchToMovement(touch_event *event,
|
549 | 549 | } |
550 | 550 | |
551 | 551 | movement->buttons = buttons; |
552 | | _UpdateButtons(movement); |
| 552 | UpdateButtons(movement); |
553 | 553 | } |
554 | 554 | |
555 | 555 | |
… |
… |
TouchpadMovement::_MoveToMovement(touch_event *event, mouse_movement *movement)
|
601 | 601 | fTapDeltaY = 0; |
602 | 602 | } |
603 | 603 | |
604 | | _UpdateButtons(movement); |
| 604 | UpdateButtons(movement); |
605 | 605 | } |
606 | 606 | |
607 | 607 | |
diff --git a/src/add-ons/kernel/bus_managers/ps2/movement_maker.h b/src/add-ons/kernel/bus_managers/ps2/movement_maker.h
index 31692c0..114357e 100644
a
|
b
|
public:
|
110 | 110 | |
111 | 111 | bool TapDragStarted() { return fTapdragStarted; } |
112 | 112 | bool WasEdgeMotion() { return fValidEdgeMotion; } |
| 113 | |
| 114 | void UpdateButtons(mouse_movement *movement); |
113 | 115 | |
114 | 116 | bigtime_t click_speed; |
115 | 117 | private: |
116 | 118 | bool _EdgeMotion(mouse_movement *movement, |
117 | 119 | touch_event *event, bool validStart); |
118 | | inline void _UpdateButtons(mouse_movement *movement); |
119 | 120 | inline void _NoTouchToMovement(touch_event *event, |
120 | 121 | mouse_movement *movement); |
121 | 122 | inline void _MoveToMovement(touch_event *event, |
diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp b/src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp
index 16aded4..ebf97b1 100644
a
|
b
|
get_alps_movment(alps_cookie *cookie, mouse_movement *movement)
|
248 | 248 | movement->wheel_xdelta = 0; |
249 | 249 | movement->wheel_ydelta = 0; |
250 | 250 | movement->buttons = event.buttons; |
| 251 | movement->timestamp = system_time(); |
| 252 | cookie->movementMaker.UpdateButtons(movement); |
251 | 253 | } else { |
252 | 254 | event.yPosition = AREA_END_Y - (event.yPosition - AREA_START_Y); |
253 | 255 | status = cookie->movementMaker.EventToMovement(&event, movement); |