https://bugs.kde.org/show_bug.cgi?id=526180
Bug ID: 526180
Summary: Touch edge swipe can't reveal a bottom/right auto-hide
panel on outputs with a fractional logical size
Classification: Plasma
Product: kwin
Version First 6.7.5
Reported In:
Platform: Fedora RPMs
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: Hotcorners and edges
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
STEPS TO REPRODUCE
1. Use a touchscreen output whose logical size is not an integer, e.g.
2560x1600 at 150% scale (1706.67x1066.67 logical).
2. Set the bottom panel to "Auto hide".
3. Swipe up from the bottom bezel with a finger.
OBSERVED RESULT
The panel doesn't appear. Moving the mouse pointer to the bottom edge still
reveals it.
EXPECTED RESULT
The swipe reveals the panel, as it does with an integer logical size (the same
device at 160% scale, 1600x1000, works).
ADDITIONAL INFORMATION
The auto-hide edge created in ScreenEdges::createEdgeForClient() is 1px thick
and based on the rounded LogicalOutput::geometry(), so for the bottom edge it
covers y in [1066, 1067).
Touch points are confined in devicePointToGlobalPosition()
(src/backends/libinput/connection.cpp) to geometryF().height() - 1, i.e. y <=
1065.67, so they can never land inside that strip. The pointer is confined to
the rounded geometry (confineToBoundingBox() in pointer_input.cpp, max y =
1066), which is why the mouse works.
I confirmed this with uprobes on ScreenEdgeGestureRecognizer::touchDown() while
swiping up from the bottom bezel:
touch pos y = 1065.6667, the only registered gesture rect = (0, 1066) -
(1707, 1067), touchDown returned false.
The raw touchscreen reports its maximum Y at the bezel, so the device itself
reaches the last row.
Confining touch points to the rounded geometry, like the pointer does, fixes it
for me (tested with a locally patched 6.7.5 build).
The same code is still in master.
Hardware: ASUS ROG Flow X13 GV302XV, ELAN9008 touchscreen, 2560x1600 panel.
--
You are receiving this mail because:
You are watching all bug changes.