seat: fix double scrolling in some applications (#8583)

This commit is contained in:
Ikalco 2024-11-26 07:52:43 -06:00 committed by GitHub
parent 2687788236
commit 1fb720b62a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 9 additions and 2 deletions

View file

@ -332,7 +332,9 @@ void CSeatManager::sendPointerAxis(uint32_t timeMs, wl_pointer_axis axis, double
p->sendAxisRelativeDirection(axis, relative);
if (source == 0) {
if (p->version() >= 8)
p->sendAxisValue120(axis, value120);
else
p->sendAxisDiscrete(axis, discrete);
} else if (value == 0)
p->sendAxisStop(timeMs, axis);

View file

@ -136,6 +136,10 @@ CWLPointerResource::CWLPointerResource(SP<CWlPointer> resource_, SP<CWLSeatResou
sendEnter(g_pSeatManager->state.pointerFocus.lock(), {-1, -1} /* Coords don't really matter that much, they will be updated next move */);
}
int CWLPointerResource::version() {
return resource->version();
}
bool CWLPointerResource::good() {
return resource->resource();
}

View file

@ -73,6 +73,7 @@ class CWLPointerResource {
CWLPointerResource(SP<CWlPointer> resource_, SP<CWLSeatResource> owner_);
bool good();
int version();
void sendEnter(SP<CWLSurfaceResource> surface, const Vector2D& local);
void sendLeave();
void sendMotion(uint32_t timeMs, const Vector2D& local);