mirror of
https://github.com/HeyPuter/gex.git
synced 2026-11-13 20:12:43 -10:00
A window system with real coordinates (Win32 under Wine) says where each window is, which layer it is in (normal, topmost, overlay) and which window it is directly under; the compositor shows it there, stacks it there, does not cascade, size, decorate (set_unmanaged), raise or focus it on its own, and gives it the keyboard when the client activates it (protocols/gex-window-placement-v1.xml). One placement path: an X11 override-redirect window is given the same placement state by adopt_x11 (overlay layer, its XID as stack id), so the browser compositor draws, stacks and hit-tests X menus and Win32 windows by the same code -- #floating is gone; everything is in one stack, drawn a layer at a time. A held button on a placed window keeps the pointer (Wayland's implicit grab). Surface records grow to 33 words (R_PLACE.. R_ACTIVATE). The DOM compositor reports placed positions (onplace), restacks (onrestack) and activations. Also: - wp_viewport.set_source crops the buffer: Wine keeps a window's buffer when the window shrinks, and a 40-pixel taskbar showed as its 125-pixel buffer. - Native host: a client's requests are read only by a pump in the client's own process. A commit read in another process found neither the shared mapping nor the memory and was dropped -- a Wine session showed one frame in minutes. The native screen keeps every surface's last frame once anything is placed, draws placed windows where they are (gex-gpu draw_at), routes scripted input by hit test, and prints the window list ([wl-place]) when it changes. On top of the output scale (wl_output.scale, dpr): a placed window's position is scaled like any toplevel's and kept in the same geometry (win.x/win.y), so drawing, hit-testing and later move/resize code read one state whoever decided it; motion under a placed window's implicit grab is in surface units too. X11 menus are drawn from the one stack (no separate floating pass), and the cursor stays the page's CSS cursor. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_ea9f71488b6e448da93d6c2dabf4879c