kwo pushed a commit to branch master. http://git.enlightenment.org/e16/e16.git/commit/?id=cf5927deb8958d3e8aee29b481c617e1ffd42443
commit cf5927deb8958d3e8aee29b481c617e1ffd42443 Author: Kim Woelders <[email protected]> Date: Sat Apr 30 19:34:59 2022 +0200 Clamp window position on move In non-compositing mode the x/y coordinate limts are [-32768; 32767] as should be expected. If moving beyond these values the coordinates are just set modulo 2^16 (like in a signed 16 bit integer) and most likely this isn't noticed anywhere. In compositing mode the coordinates apperently must be clamped some more, but it is not clear why or where the limit is. The problem manifests itself in that a window moved "too far" seems to have disappeared when moving it back on screen, possibly because the name pixmap is invalidated. Shading/unshading the window makes it re-appear. The problem can be seen when dragging a window far off a (small) pager. --- src/ewin-ops.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/ewin-ops.c b/src/ewin-ops.c index ee07e2c8..8f5862e9 100644 --- a/src/ewin-ops.c +++ b/src/ewin-ops.c @@ -320,6 +320,17 @@ doEwinMoveResize(EWin * ewin, Desk * dsk, int x, int y, int w, int h, int flags) } } + /* Clamp window position or weirdness may happen. + * Not sure where the exact limit is. */ + if (x < -32000) + x = -32000; + else if (x > 32000 - w) + x = 32000 - w; + if (y < -32000) + y = -32000; + else if (y > 32000 - h) + y = 32000 - h; + dx = x - EoGetX(ewin); dy = y - EoGetY(ewin); if ((dx != 0) || (dy != 0)) --
