Commit Graph

761 Commits

Author SHA1 Message Date
Window Maker ac4aa4fe4d decompose wl_backend.c: extract wl_popup.c 2026-06-02 16:01:22 +02:00
Window Maker c46adc93c5 decompose wl_backend.c: extract wl_xwayland.c 2026-06-02 15:53:48 +02:00
Window Maker 5a2faa765a decompose wl_backend.c: extract wl_dock.c 2026-06-02 15:49:44 +02:00
Window Maker 698d4dfba7 decompose wl_backend.c: extract wl_input_fwd.c + make pointer button/frame/axis non-static 2026-06-02 15:47:08 +02:00
Window Maker a1a23099ba decompose wl_backend.c: extract wl_keyboard.c 2026-06-02 15:43:44 +02:00
Window Maker 6df031f834 decompose wl_backend.c: extract wl_grab.c 2026-06-02 15:42:02 +02:00
Window Maker b06e9417ca decompose wl_backend.c: extract wl_pointer_focus.c 2026-06-02 15:39:19 +02:00
Window Maker 2e22c290ac decompose wl_backend.c: extract wl_pointer_motion.c 2026-06-02 14:35:02 +02:00
Window Maker 28fb61668f decompose wl_backend.c: extract wl_dragicon.c 2026-06-02 14:30:57 +02:00
Window Maker 7b02d32a02 decompose wl_backend.c: extract wl_grabstate.c 2026-06-02 14:26:30 +02:00
Window Maker 9f69f7930d decompose wl_backend.c: extract wl_grabs.c 2026-06-02 14:25:01 +02:00
Window Maker e19562a07c decompose wl_backend.c: extract wl_dnd.c 2026-06-02 14:22:24 +02:00
Window Maker f6cf67cb39 decompose wl_backend.c: extract wl_clipboard.c 2026-06-02 14:15:10 +02:00
Window Maker 5fd0eda8d2 decompose wl_backend.c: extract wl_stubs.c (noop stubs + vtable) 2026-06-02 12:40:56 +02:00
Window Maker dceb0cf55b decompose wl_backend.c: extract wl_xdisplay.c 2026-06-02 12:12:22 +02:00
Window Maker bce1aaa62c decompose wl_backend.c: extract wl_wings.c 2026-06-02 12:06:16 +02:00
Window Maker 5e5e4dbd02 decompose wl_backend.c: extract wl_shm.c 2026-06-02 12:03:25 +02:00
Window Maker e1c221948c decompose wl_backend.c: extract wl_screen.c 2026-06-02 12:01:06 +02:00
Window Maker 89668f0202 decompose wl_backend.c: extract wl_focus.c 2026-06-02 11:59:38 +02:00
Window Maker 6044c6418b decompose wl_backend.c: extract wl_events.c 2026-06-02 11:58:23 +02:00
Window Maker a9a3f0ff1d decompose wl_backend.c: extract wl_extensions.c 2026-06-02 11:49:35 +02:00
Window Maker c60c20bf49 decompose wl_backend.c: extract wl_fakeleader.c 2026-06-02 11:08:52 +02:00
Window Maker db0db065a1 decompose wl_backend.c: extract wl_badge.c 2026-06-02 11:07:56 +02:00
Window Maker 0878f6946d decompose wl_backend.c: extract wl_xkb.c 2026-06-02 11:06:53 +02:00
Window Maker ba7b7de898 decompose wl_backend.c: extract wl_signalfd.c 2026-06-02 10:45:56 +02:00
Window Maker 33f686c79f decompose wl_backend.c: extract wl_atom.c 2026-06-02 10:42:28 +02:00
Window Maker e47b44ccd0 decompose wl_backend.c: extract wl_framebuf.c 2026-06-02 10:41:30 +02:00
Window Maker 861ae10c8f decompose wl_backend.c: extract wl_icccm.c 2026-06-02 10:36:07 +02:00
Window Maker cbc9fa5a84 decompose wl_backend.c: extract wl_client.c 2026-06-02 10:28:48 +02:00
Window Maker 36cdc48f23 decompose wl_backend.c: extract wl_props.c 2026-06-02 10:25:02 +02:00
Window Maker 273589092d decompose wl_backend.c: extract wl_window.c (window map/unmap/move/resize/border/clear) 2026-06-02 10:18:57 +02:00
Window Maker b9450d16ad remove corrupted extraction files not yet building 2026-06-02 10:07:29 +02:00
Window Maker 5175cf880c decompose wl_backend.c: extract event, stacking, overlay modules 2026-06-02 10:07:10 +02:00
Window Maker 758623269b extract context from wl_backend 2026-05-31 12:34:04 +02:00
Window Maker 5173cbbdd5 fix: skip view-absolute position sync for reparented frame_bufs 2026-05-31 10:04:21 +02:00
Window Maker 654f24d8f8 fix: remove duplicate fake_leader check that short-circuited WINGs view reparent 2026-05-31 10:00:19 +02:00
Window Maker 59088e2f86 fix: realize dialog panel before client_reparent so WMWidgetXID returns a valid view ID 2026-05-30 15:45:09 +02:00
Window Maker c968c0b6f9 fix: offset dialog content below titlebar (frame top_width) 2026-05-30 15:40:48 +02:00
Window Maker dcfc4f44f4 fix: exit dialog content not visible at correct position — reparent fake_leader tree into frame tree 2026-05-30 15:39:07 +02:00
Window Maker d95d2c007c fix: exit dialog not visible on Wayland — preserve frame_buf parent on backing resize 2026-05-30 15:33:10 +02:00
Window Maker 86f7510a13 fix: non-responsive WINGs widgets on Wayland (overlapping sibling views + cascade compositing) 2026-05-30 15:29:04 +02:00
Ollie 6e902db869 fix: refresh pointer focus before delivering button event on Wayland
wlr_seat_pointer_notify_button delivers to the surface that currently has pointer focus. If the last wl_update_pointer_focus call was during a motion event that targeted a different area (e.g., titlebar), the XWayland client surface might not have focus when the user clicks on its content area. Added wl_update_pointer_focus call before wlr_seat_pointer_notify_button in handle_pointer_button to ensure pointer focus is always current.
2026-05-30 13:37:15 +02:00
Ollie 2eef17de24 fix: slider page-click uses event->u.motion.x/y instead of button.x/y on Wayland
WMEButton and WMEMotion are separate structs in the WMEvent union with different field layouts — u.motion.x is at a different memory offset than u.button.x. The WME_BUTTON_PRESS handler in wslider.c was calling valueForMousePoint(sPtr, event->u.motion.x, event->u.motion.y) which reads uninitialized memory on Wayland (memset zero = 0). On X11 this happened to work because the X11 event translator writes to both union members. Fix: changed all event->u.motion.x/y references to event->u.button.x/y in the WME_BUTTON_PRESS case.
2026-05-30 13:31:50 +02:00
Ollie e417682ed4 fix: event coordinates must be relative to WINGs target view, not toplevel
W_FindViewAtPoint finds the correct child view (slider, checkbox, etc.) but does not adjust event coordinates. The WMEvent x/y were set relative to the top-level WINGs view (fb->x, fb->y origin), while widget event handlers (getSliderPart, valueForMousePoint, etc.) expect coordinates relative to the widget view itself. Fixed by computing the accumulated offset from the target view up to the toplevel and subtracting it from the event coordinates. Applied to both handle_pointer_button and handle_pointer_motion.
2026-05-30 13:28:35 +02:00
Ollie 0342794845 fix: slider drag not working — motion events missing WINGs view target on Wayland
handle_pointer_motion enqueued WME_MOTION events with target=NULL. On button press, handle_pointer_button correctly resolves the WINGs child view (slider) via W_FindViewAtPoint and sets _view_target, so the slider receives the press and sets dragging=1. But subsequent motion events had NULL target, so WMHandleEvent routed them to the top-level view instead of the slider view — the slider never received WME_MOTION during drag. Fix: add W_FindViewAtPoint resolution in handle_pointer_motion, matching the button press logic.
2026-05-30 12:49:59 +02:00
Ollie d615077df8 fix: sliders not responding on Wayland — add W_RedisplayView after paintSlider
Slider value changes (from click, drag, or programmatic set) call paintSlider to draw the new knob position into the pixman backing buffer, but the backing was never committed to the scene graph on Wayland. Added W_RedisplayView(slider->view) after each paintSlider call in: WMSetSliderValue, WMSetSliderMinValue, WMSetSliderMaxValue, and handleActionEvents (WME_MOTION/WME_BUTTON_RELEASE). The expose handler path does NOT get W_RedisplayView to avoid recursion.
2026-05-30 11:57:24 +02:00
Ollie 97d5f51e58 fix: resizebar texture relief and indicator brightness on Wayland
Two issues: (1) Texture was rendered with WREL_RAISED which added a thick bevel border, making the 8px-tall resizebar appear too small. Changed to WREL_FLAT to match X11 behavior. (2) Corner indicator light color used +40 per channel but X11 uses +80 (ROperateLine RAddOperation with cdelta=80). Changed light delta from +40 to +80 so indicators are as visible as X11.
2026-05-30 11:52:32 +02:00
Ollie ae080d948c fix: resizebar missing corner grab indicators and bevel on Wayland
The Wayland backend wl_frame_paint rendered the resizebar texture but never drew the corner grab handles or top bevel lines that X11 includes. Added pixman-based rendering of: (1) top bevel lines (dim at y=0, light at y=1), (2) left corner grab handle (two vertical lines from y=2 to bottom), (3) right corner grab handle (two vertical lines from y=2 to bottom). Light/dim colors are derived from the rendered texture pixel at the resizebar center (+/- 40 per channel).
2026-05-30 11:50:38 +02:00
Ollie ae980e66e9 fix: resize wireframe animation on Wayland (overlay flush per draw)
The overlay drawing functions (wl_overlay_draw_rect, wl_overlay_draw_line) write XOR pixels to a client-side pixman buffer but never flushed it to the scene graph. On X11, each XDrawRectangle is immediately processed server-side, so the wireframe appears in real-time. On Wayland, the overlay buffer was only flushed in wl_server_ungrab() at the END of the resize operation. Added overlay_flush() after each draw call so each XOR batch is pushed to wlr_scene_buf and rendered immediately.
2026-05-30 11:41:48 +02:00
Ollie 1bf64c26c9 fix: resize/move indicator (gview) not updating on Wayland
Two bugs in geomview.c: (1) Missing backing commit on Wayland - paint() wrote to pixman backing but never pushed to scene graph. Added W_RedisplayView() after paint() in both WSetGeometryViewShownPosition and WSetGeometryViewShownSize. (2) Expose event handler used case Expose: (X11 constant value 12) instead of case WME_EXPOSE: (WINGs enum value 8) - harmless on X11 where Pixmap content is server-persistent, but broke Wayland where the expose handler is the re-draw mechanism after wl_redisplay fills the backing with bg color.
2026-05-30 11:37:51 +02:00