diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.c b/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.c index 535f32cad0..19d4eed7f4 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.c +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.c @@ -241,6 +241,11 @@ check_scrolling_to_movement(synaptics_cookie *cookie, touch_event *event, bool isSideScrollingV = false; bool isSideScrollingH = false; + // if a button is pressed don't allow to scroll, we likely be in a drag + // action + if (cookie->buttons_state != 0) + return false; + if ((SYN_AREA_END_X - SYN_AREA_WIDTH_X * settings->scroll_rightrange < event->xPosition && !cookie->movement_started && settings->scroll_rightrange > 0.000001) @@ -402,7 +407,7 @@ get_synaptics_movment(synaptics_cookie *cookie, mouse_movement *movement) status = event_to_movement(cookie, &event, movement); - return B_OK; + return status; } diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.h b/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.h index 5b9cb44924..e5dc6b590b 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.h +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.h @@ -34,12 +34,15 @@ // synaptics touchpad proportions #define SYN_EDGE_MOTION_WIDTH 50 #define SYN_EDGE_MOTION_SPEED 5 -#define SYN_AREA_OFFSET 40 // increase the touchpad size a little bit -#define SYN_AREA_START_X (1472 - SYN_AREA_OFFSET) -#define SYN_AREA_END_X (5472 + SYN_AREA_OFFSET) +#define SYN_AREA_OFFSET 40 +// increase the touchpad size a little bit +#define SYN_AREA_TOP_LEFT_OFFSET 40 +#define SYN_AREA_BOTTOM_RIGHT_OFFSET 60 +#define SYN_AREA_START_X (1472 - SYN_AREA_TOP_LEFT_OFFSET) +#define SYN_AREA_END_X (5472 + SYN_AREA_BOTTOM_RIGHT_OFFSET) #define SYN_AREA_WIDTH_X (SYN_AREA_END_X - SYN_AREA_START_X) -#define SYN_AREA_START_Y (1408 - SYN_AREA_OFFSET) -#define SYN_AREA_END_Y (4448 + SYN_AREA_OFFSET) +#define SYN_AREA_START_Y (1408 - SYN_AREA_TOP_LEFT_OFFSET) +#define SYN_AREA_END_Y (4448 + SYN_AREA_BOTTOM_RIGHT_OFFSET) #define SYN_AREA_WIDTH_Y (SYN_AREA_END_Y - SYN_AREA_START_Y) #define SYN_TAP_TIMEOUT 200000