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
|
|
@ -1,6 +1,7 @@
|
|||
#include "InputManager.hpp"
|
||||
#include "../../Compositor.hpp"
|
||||
#include "wlr/types/wlr_switch.h"
|
||||
#include <cstdint>
|
||||
#include <ranges>
|
||||
#include "../../config/ConfigValue.hpp"
|
||||
#include "../../desktop/Window.hpp"
|
||||
|
|
@ -782,8 +783,9 @@ void CInputManager::onMouseWheel(IPointer::SAxisEvent e) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
g_pSeatManager->sendPointerAxis(e.timeMs, e.axis, factor * e.delta, std::round(factor * e.deltaDiscrete / 120), e.source, WL_POINTER_AXIS_RELATIVE_DIRECTION_IDENTICAL);
|
||||
double deltaDiscrete = factor * e.deltaDiscrete / std::abs(e.deltaDiscrete);
|
||||
g_pSeatManager->sendPointerAxis(e.timeMs, e.axis, factor * e.delta, deltaDiscrete > 0 ? std::ceil(deltaDiscrete) : std::floor(deltaDiscrete),
|
||||
std::round(factor * e.deltaDiscrete), e.source, WL_POINTER_AXIS_RELATIVE_DIRECTION_IDENTICAL);
|
||||
}
|
||||
|
||||
Vector2D CInputManager::getMouseCoordsInternal() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue