seat: discrete round away from zero + high res scrolling (#6317)
* Discrete scrolling round away from zero e.deltaDiscrete can be multiples of 30 instead of the usual 120 causing the rounded value to be 0 when too small causing erratic scrolling. * Send value120 alongside discrete Fixes sensitivity issues for clients that support value120 axis events
This commit is contained in:
parent
5517cc506b
commit
d0a224a491
3 changed files with 11 additions and 5 deletions
|
|
@ -290,7 +290,7 @@ void CSeatManager::sendPointerFrame(WP<CWLSeatResource> pResource) {
|
|||
}
|
||||
}
|
||||
|
||||
void CSeatManager::sendPointerAxis(uint32_t timeMs, wl_pointer_axis axis, double value, int32_t discrete, wl_pointer_axis_source source,
|
||||
void CSeatManager::sendPointerAxis(uint32_t timeMs, wl_pointer_axis axis, double value, int32_t discrete, int32_t value120, wl_pointer_axis_source source,
|
||||
wl_pointer_axis_relative_direction relative) {
|
||||
if (!state.pointerFocusResource)
|
||||
return;
|
||||
|
|
@ -303,8 +303,10 @@ void CSeatManager::sendPointerAxis(uint32_t timeMs, wl_pointer_axis axis, double
|
|||
p->sendAxisSource(source);
|
||||
p->sendAxisRelativeDirection(axis, relative);
|
||||
|
||||
if (source == 0)
|
||||
if (source == 0) {
|
||||
p->sendAxisValue120(axis, value120);
|
||||
p->sendAxisDiscrete(axis, discrete);
|
||||
}
|
||||
|
||||
if (value == 0)
|
||||
p->sendAxisStop(timeMs, axis);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue