redox-wayland-compositor/docs
Votre Nom 50f7a064e4 🎉 Phase 7.7 — move interactif xdg_toplevel validé runtime
Move interactif complet (Resize en stub log-only, reportable à 7.8).

Frontend additions :
- enum DragMode { Move, Resize(u32) } et struct InteractiveDrag
  { surface_id, xdg_toplevel_res, xdg_surface_res, mode,
    start_cursor_x/y, start_x/y, start_w/h }
- WaylandFrontend : interactive_drag: Option<InteractiveDrag> +
  last_button_serial: u32
- XdgToplevelData.xdg_surface: Mutex<Option<XdgSurface>> peuplé
  dans xdg_surface.GetToplevel pour retrouver le wl_surface parent
  depuis un toplevel.move/resize
- Handler xdg_toplevel.Move : valide serial != 0, refuse drag déjà
  actif, retrouve SurfaceId via cascade UserData (xdg_surface →
  wl_surface → SurfaceData), capture start_cursor + start_geom,
  stocke InteractiveDrag
- Handler xdg_toplevel.Resize : stub log-only (à compléter 7.8)
- Handler xdg_toplevel.Destroy nettoie interactive_drag si on était
  en train de drag cette surface
- Méthode apply_interactive_drag() : applique le delta (cursor -
  start_cursor) à la position de la surface (Move) ou consume le
  motion (Resize stub)
- forward_input(PointerMotion(Relative)) : apply au début, return
  si drag actif (court-circuite l'envoi de motion au client pendant
  un drag, conforme spec Wayland)
- forward_input(PointerButton release) : sort du mode drag
- set_cursor_position : appelle aussi apply_interactive_drag (sans
  ça, les cycles de test programmatique ne déclenchent pas le drag
  car ils court-circuitent forward_input)
- Tracking last_button_serial à chaque button LEFT Pressed

Test client modifications :
- redox-wl-test-client-shm-two bind wl_seat
- Si label=="A", déclenche toplevel.move(&seat, 1) 8s après le
  commit initial (mécanisme "synthétique" : le client n'écoute pas
  les pointer events, il envoie Move sans attendre un clic — assez
  pour valider le pipeline serveur, durcissement client 7.8)

Validation runtime :
- Cycle compositor temporaire (retiré du binaire final) qui change
  cursor_position à plusieurs positions pendant que le drag est
  actif, screendumps à 3 positions distinctes
- Logs frontend :
  [frontend] xdg_toplevel.move: enter drag sid=SurfaceId(0) start=(60,60) cursor=(500,400)
  [frontend] left-release → exit interactive drag
- A déplacée visuellement entre les captures pos1, pos2 et
  post-release ; sortie clipée sur les bords (pas de snap-to-edge,
  WM policy reportable)

Limitations 7.7 :
- Resize non implémenté (stub)
- Validation serial laxiste (serial != 0)
- Pas de contrôle policy (snap-to-edge, min/max)
- Pas de check "surface du même client" (sécu)
- Pas d'event xdg_toplevel.configure([Resizing]) envoyé pendant le drag

Doc complète : docs/phase7-7-move-resize.md

Leyoda 2026 – GPLv3
2026-05-13 19:22:04 +02:00
..
existing-redox-gui.md Initial commit: phases 1-3 du portage Wayland Rust pour Redox OS 2026-05-08 17:41:55 +02:00
phase4-display-backend.md 🎉 Phase 4 vraie validée visuellement : pixels custom plein écran 2026-05-09 10:46:20 +02:00
phase4-victory-1280x800.png 🎉 Phase 4 vraie validée visuellement : pixels custom plein écran 2026-05-09 10:46:20 +02:00
phase5-blue-screen-with-input.png 🎉 Phase 5 — input backend Redox validé runtime 2026-05-09 11:22:54 +02:00
phase5-input-backend.md 🎉 Phase 5 — input backend Redox validé runtime 2026-05-09 11:22:54 +02:00
phase6-3-blue-top.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-3-default-z.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-3-green-top.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-3-red-top.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-4-wayland-client-surface.png 🎉🎉🎉 Phase 6.4 — Wayland complet : un client externe affiche ses pixels 2026-05-09 13:30:05 +02:00
phase6-4-wayland-frontend.md 🎉🎉🎉 Phase 6.4 — Wayland complet : un client externe affiche ses pixels 2026-05-09 13:30:05 +02:00
phase6-compositor-core.md 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase7-1-xdg-shell.md 🎉 Phase 7.1 — xdg-shell minimal validé runtime 2026-05-09 14:34:45 +02:00
phase7-1-xdg-toplevel.png 🎉 Phase 7.1 — xdg-shell minimal validé runtime 2026-05-09 14:34:45 +02:00
phase7-2-input-routing.png 🎉 Phase 7.2 — wl_seat + wl_keyboard + wl_pointer routing input 2026-05-09 15:05:03 +02:00
phase7-3-cursor-over-window-200x150.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-over-window-250x200.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-pos-50x750.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-pos-900x600.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-pos-center.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor.md 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-4-1-initial-B-top.png 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-4-2-after-click-A-raised.png 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-4-3-after-click-B-raised.png 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-4-focus-raise.md 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-5-after-fuzz.png 🎉 Phase 7.5 — robustesse paquet A validée runtime 2026-05-13 11:57:21 +02:00
phase7-5-robustness.md 🎉 Phase 7.5 — robustesse paquet A validée runtime 2026-05-13 11:57:21 +02:00
phase7-6-cleanup-no-ghost.png 🎉 Phase 7.6 — multi-clients paquet B validé runtime 2026-05-13 18:51:33 +02:00
phase7-6-multi-clients.md 🎉 Phase 7.6 — multi-clients paquet B validé runtime 2026-05-13 18:51:33 +02:00
phase7-6-two-clients.png 🎉 Phase 7.6 — multi-clients paquet B validé runtime 2026-05-13 18:51:33 +02:00
phase7-7-drag-pos1.png 🎉 Phase 7.7 — move interactif xdg_toplevel validé runtime 2026-05-13 19:22:04 +02:00
phase7-7-drag-pos2.png 🎉 Phase 7.7 — move interactif xdg_toplevel validé runtime 2026-05-13 19:22:04 +02:00
phase7-7-move-resize.md 🎉 Phase 7.7 — move interactif xdg_toplevel validé runtime 2026-05-13 19:22:04 +02:00
phase7-7-post-release.png 🎉 Phase 7.7 — move interactif xdg_toplevel validé runtime 2026-05-13 19:22:04 +02:00
redox-wayland-primitives.md Initial commit: phases 1-3 du portage Wayland Rust pour Redox OS 2026-05-08 17:41:55 +02:00