Repository navigation
Conversation
…nestos (egdev6#212) Tres correcciones de la issue egdev6#212 (review de egdev6#205): 1. El `not_viewable` tras el `show()` ya no marca `placementFailed` de inmediato: se reintenta en silencio con un presupuesto acotado (`retryNotViewable`, `NOT_VIEWABLE_RETRIES=3` con la misma espera del backend) y solo si se agota se informa del fallo. El `show()` es asíncrono y con gestores con animaciones (GNOME/Mutter) el mapeo puede tardar más del presupuesto de lectura del backend: un `not_viewable` seguido de una lectura correcta es normal, no un error. Tests deterministas: lectura posterior con éxito → no fallo; presupuesto agotado → fallo; un `size_refused` no se reintenta. 2. `apply_size` deja de fingir que confirma el resize: `set_resizable` es `void` (no puede fallar) y `is_resizable()` relee la propiedad local que acabamos de escribir — un tautograma, no una confirmación del gestor. El doc y el call site ahora dicen que la confirmación real es el read-back posterior del compositor. El test en vivo observa tamaño y permiso tras la llamada, no el retorno. 3. `rooted_origin` documenta lo que GDK3 garantiza: el retorno de `gdk_window_get_origin` es "Not meaningful, ignore" — solo distingue la ventana destruida (0) de la viva (≠0), no valida la traducción de coordenadas. El call site ya no dice que "si falla, no hay lectura". Co-Authored-By: Claude Code <noreply@anthropic.com>
Contributor
Author
|
Cierro esta PR porque duplica la #221, que cubre exactamente los tres puntos de la #212 con el mismo título y un alcance mayor:
No aporta nada nuevo: es el mismo trabajo con menos robustez. Cierro en favor de #221. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resuelve los tres puntos de #212 (sobre el
mainvigente).1.
not_viewableya no es un fallo de colocaciónEl
show()es asíncrono y el gestor puede tardar más que su presupuesto de lectura (READS × SETTLE= 4 × 15 ms) en mapear la ventana — con animaciones (GNOME/Mutter) es normal que la lectura siguiente aún no la vea. Antes, esenot_viewablese traducía enplacementFailedcon un botón de reintentar, sin que hubiera fallo real.Ahora el
not_viewableposterior alshow()se reintenta en silencio con un presupuesto acotado (retryNotViewable,NOT_VIEWABLE_RETRIES = 3, con la misma espera entre lecturas que el backend) y sólo se marca el fallo si se agota:not_viewabley la tira ofrece el reintento manual;not_viewable(p. ej.size_refused) no se reintenta.Tests deterministas en
src/lib/widget-placement.test.ts(32/32).2.
apply_sizedeja de fingir que confirma el resizegtk_window_set_resizableesvoid(no puede fallar) ygtk_window_get_resizablelee la propiedad local que la llamada anterior acaba de escribir. El!is_resizable()era un tautograma, no una confirmación del gestor, y el ciclo lo usaba como si lo fuera.Ahora
apply_sizeno devuelve confirmación: el doc y el call site dicen que la confirmación real es el read-back posterior del compositor (el tamaño y la posición que quedaron en pantalla). El test en vivo observa tamaño y permiso tras la llamada, en vez del retorno.3.
rooted_origindocumenta lo que GDK3 garantizagdk_window_get_origindocumenta su valor de retorno como "Not meaningful, ignore": sólo distingue la ventana destruida (0) de la viva (≠ 0), y no valida que la traducción de coordenadas haya funcionado. El comentario decía que "si esa llamada falla, la lectura no es utilizable" y el call site que su返回值 "dice si la llamada tuvo éxito".Ahora ambos describen lo que la API garantiza:
okdistingue ventana destruida/viva y el origen reportado es el del últimoGdkEventConfigureprocesado (puede ir retrasado respecto al servidor); la geometría que se informa se valida contra el read-back del compositor.Comprobaciones
npx vitest run src/lib/widget-placement.test.ts→ 32 passednpx tsc --noEmit→ verdecargo fmt --check→ limpioEl smoke en vivo de GTK+/WebKit2 (X11) es el que cubre la ruta nativa del read-back; lo corre el CI de Linux.
🤖 Generated with Claude Code