feat(renaser): Fase 9 — orden-Z y ventanas flotantes

Segundo modelo de composición sobre el teselado de la Fase 8: el
SOLAPAMIENTO. Una ventana puede abandonar el teselado y FLOTAR sobre
las demás.

- `Escritorio` gana `flotantes: Vec<usize>` — la pila orden-Z, de
  atrás hacia adelante; con `orden` forma una partición de las
  ventanas.
- Mando `Flotar` (`Alt+F`): alterna la ventana enfocada entre
  teselada y flotante; una flotante nace con marco propio en cascada,
  al frente del orden-Z.
- `compositor::recomponer` + `consola::recomponer` (tipos `Capa` /
  `Contenido`): con flotantes vivas el escritorio se repinta entero,
  capa a capa de atrás hacia adelante — el solapamiento se resuelve
  por el orden del pintado. Sin flotantes, camino rápido de la Fase 8.
- El foco recorre todas las ventanas y alza al frente la flotante
  enfocada.

Verificado en QEMU (sendkey): flotar, cascada, alzado-Z y regreso al
teselado.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-22 19:42:51 +00:00
parent 6e30dc2d72
commit 2523652e22
7 changed files with 393 additions and 115 deletions
+45
View File
@@ -760,3 +760,48 @@ identidad de las ventanas, y el teclado promueve y reordena.
ventana maestra y `hola` baja a la pila; `Alt+L` la devuelve a la pila y
`hola` recupera la maestra. El foco —el borde índigo— viaja siempre con la
ventana, no con la celda.
## Fase 9 — Orden-Z y ventanas flotantes — 2026-05-22
Hasta la 8d el escritorio era TESELADO puro: las ventanas repartían la pantalla
sin solaparse jamás. La Fase 9 introduce un segundo modelo de composición —el
SOLAPAMIENTO—: una ventana puede abandonar el teselado y FLOTAR, con un marco
propio y libre, por encima de las demás.
### Añadido
- `Escritorio` gana `flotantes: Vec<usize>` — la pila de ventanas flotantes en
orden-Z, de atrás hacia adelante; `flotantes.last()` es la frontal. Junto con
`orden` forma una partición de las ventanas: cada una está teselada o flota,
nunca en ambas ni en ninguna.
- Mando `Flotar` (`Alt+F`): alterna la ventana enfocada entre teselada y
flotante. Al flotar, abandona el teselado —que se recalcula para las que
quedan—, recibe un marco propio (su lienzo natural más un reborde de cromo)
colocado en CASCADA, y sube al frente del orden-Z. Al volver, se reincorpora
al final del orden de teselado.
- `compositor::recomponer` — recompone el escritorio entero de una pasada: arma
la lista de capas (las teseladas al fondo; las flotantes encima, de atrás
hacia adelante) y se la entrega a la consola.
- `consola::recomponer` y los tipos `Capa` / `Contenido`: la consola funde las
capas EN ORDEN sobre el lienzo; el solapamiento se resuelve por el orden del
pintado, sin recortes ni máscaras. Una sola presentación cierra la pasada.
- `consola::componer_fotograma` — el volcado de un fotograma natural centrado
en su marco, extraído de `volcar_marco` para compartirlo entre el camino
rápido y la recomposición.
### Cambiado
- `presentar_fotograma` y `desalojar` bifurcan: sin ventanas flotantes
conservan el camino RÁPIDO de la Fase 8 —pintar sólo la ventana que cambia—;
con flotantes vivas recomponen el escritorio entero respetando el orden-Z.
- `mover_foco` recorre ahora TODAS las ventanas —las teseladas y las
flotantes—; al enfocar una flotante, la alza al frente del orden-Z: la
flotante con el foco está siempre delante.
- `componer_escenario`, `ciclar_layout`, `promover` y `mover_ventana` delegan
el repintado en `recomponer`; desaparecen `redibujar_todo`,
`redibujar_ventana` y `pintar_escenario`.
### Verificado
- QEMU (`sendkey`): `Alt+F` saca la ventana maestra del teselado y la deja
flotando sobre las demás, que se re-teselan. Un segundo `Alt+F` sobre otra
ventana la flota en cascada, solapando a la primera. `Alt+K` devuelve el foco
a la ventana grande y ésta sube al frente, tapando por completo a la pequeña.
Un `Alt+F` final la reintegra al teselado.