Closed PJungkamp closed 1 month ago
Here are some videos to demonstrate the issue:
Fast cursor movements onto the panel.
Drag along the panel.
Hey @PJungkamp thank you for sharing this! This is the best issue ever made for Tiling Shell :smile: so far
Describe the bug
The Tiling Shell does not detect tiling regions for drags outside the
workArea
of a monitor, e.g. drags in the area occupied by any shell panel.To Reproduce (Mouse movement too fast)
This does not function as intended if the mouse moves too fast, where the
EdgeTilingManager
'sstartEdgeTiling
function is never called for the_topCenter
rectangle.To Reproduce (Drag along the panel)
The
EdgeTilingManager
treats all panels beyond the working area aschanged: false
cases. See https://github.com/domferr/tilingshell/blob/c3a24061325dca5d38ddfb1cda8897acb2c269e3/src/components/tilingsystem/edgeTilingManager.ts#L173-L176Additional Context
I think that the tiling code should calculate the edge-tiling and snap-assist detection using a combination of both the monitors actual geometry (
Main.layoutManager.monitors[index]
) and the workArea when dragging a window. TheTilingManager
is already aware of the actual_monitor
and uses it's real geometry in_isPointerInsideThisMonitor
. But theEdgeTilingManager
andSnapAssist
don't handle mouse movements on panels properly.A simple solution might be to clamp the x and y pointer coordinates to the workArea before passing them to the
EdgeTilingManager
orSnapAssist
. Another solution might be to extend the rectangles used for detection (e.g._topCenter
/_topLeft
/...) to the actual edges of the monitor instead of the edges of the workArea.Information (please complete the following):