Reputation: 107
I'm writing a reparenting window manager, and some apps like Firefox misbehave when I move the window. For example, say I map firefox at (0, 0). Then I move it to (5, 5). When I open a menu, it will be offset by (5, 5), because it thinks the app's coordinates are (0, 0) but the actual frame window has been moved to (5, 5).
I do set the _NET_FRAME_EXTENTS property properly, but this still occurs. How do I tell the client application what it's actual x and y coordinates are, without configure_window'ing (and therefore actually moving it to some offset within a frame which breaks the whole thing) it?
Maybe also worth mentioning, after I move the window, if I resize it (and the frame, of course); it apparently works fine. so, i tried this strategy:
Upvotes: 0
Views: 1311
Reputation: 9867
I can only guess. My guess is that you are not following ICCCM § 4.2.3:
If the window manager moves a top-level window without changing its size, the client will receive a synthetic ConfigureNotify event following the move that describes the new location in terms of the root coordinate space.
https://tronche.com/gui/x/icccm/sec-4.html#s-4.2.3
When you just move your frame windows, the client does not get a notification. Thus, these synthetic ConfigureNotify values are required.
Upvotes: 1