Repository navigation
fix(linux/x11): ajustar la ventana del detail al contenido bajo XWayland (#215) - #224
Conversation
…and (egdev6#215) La ventana detail nace resizable(false) y GTK retiene un piso PMinSize sticky, así que el resize externo es rechazado en el ancho y el aviso de API key muestra la caja del contenedor (~16 px de banda). El detalle pasa por el mismo ciclo X11 de la tira (egdev6#205): una sola llamada al hilo de UI hace la pista de tamaño, las pistas min == max == pedido, el permiso de resize abierto sólo alrededor del resize y confirmado cerrado; luego la posición explícita y un read-back de GDK con presupuesto acotado. Generación de cancelación propia del detail (no comparte la del widget), sin anclaje y con informe {status, bounds, reason, read_back} espejo de set_widget_bounds; Windows, macOS y Wayland nativo quedan en su ruta anterior (unverified, bounds=null).
…gdev6#215) DetallePanel cachea sólo la geometría confirmada por read-back (nunca la pedida), repide en silencio tras show() ante not_viewable con el presupuesto acotado de egdev6#221 (readPlacementWithRetries reutilizado) y deja intacto el flujo de Wayland nativo/Windows/macOS (unverified sin read-back, comparación exacta). La apertura no se bloquea: place → clip → positioned → show conserva su orden.
…gdev6#215) Ejecutar la prueba en vivo contra el XWayland real marcó el hallazgo del fixture: movía la ventana 314×379 a (1859,899), fuera de pantalla, y el gestor la reubicaba (1606,701) para que quepa. La petición ahora es (100,100) y el resto de la secuencia queda intacto: tamaño exacto concedido, permiso cerrado y tamaño sobreviviente a la retirada.
…6#215) Ciclo, decisiones (D1–D3), TDD por unidad, hallazgo del fixture de la prueba en vivo y evidencia de sesión GNOME/XWayland (geometría 314×379, pistas min == max, sin caja translúcica) según los criterios de aceptación (egdev6#215).
|
Gracias por el trabajo, @SrStamm. Revisé P2: posición incorrecta con escala HiDPI. En Propongo convertir ambos ejes a coordenadas lógicas y añadir cobertura del adaptador con escala ×2, porque el doble de geometría prefijada no detecta esta omisión. Los cinco checks de CI están verdes. El hallazgo está contrastado con el recorrido del código, no con una reproducción gráfica; no ejecuté suites locales en esta revisión. |
…6#215) request_position pasaba la petición física tal cual a gtk.move_, que mide en píxeles lógicos: a escala ×2 el panel quedaba desplazado aproximadamente al doble (P2 del review de PR egdev6#224, diagnosticado por el mantenedor y contrastado con el recorrido del código). Se introduce el seam testeable del propio archivo (Positioner + GtkPositioner + position_call, espejo de Sizable/GtkSizable): la conversión con to_logical cubre los dos ejes antes del movimiento, el mismo mapeo que el adaptador del widget. La cobertura nueva (escala ×2: (200,300) físico -> (100,150) lógico) falla contra el código anterior, así que la omisión queda atrapada por test. Verificación: cargo test 402 + 4 ignoradas (0 fallos), fmt limpio, clippy sin avisos nuevos en detail_placement*; verificador independiente en PASS sobre los 5 checks.
|
Tenés razón: Corregido en 29e7c77: la solicitud de posición convierte ambos ejes con Verificación: suite en 402 pasando + 4 ignoradas (0 fallos), fmt limpio y clippy sin avisos nuevos en |
|
Gracias por la corrección y por añadir la cobertura de regresión, @SrStamm. Revisé No encontré nuevos hallazgos bloqueantes y los cinco checks están verdes. No ejecuté pruebas locales ni GUI; la prueba nativa X11 sigue ignorada en CI, por lo que no doy esa validación por realizada. Por mi parte, recomiendo aprobar. El merge queda a cargo del mantenedor. ¡Gracias por el trabajo y por atender la revisión! |
Related issue / Issue relacionada
Issue: Refs #215
ODD: `odd/tasks/x11-detail-fit.md` — alcance aprobado por el mantenedor en el hilo de la issue (dos cuidados aplicados: no se comparte el ciclo/validación/anclaje/generación del widget y la primera apertura no se bloquea con el read-back).
Scope / Alcance
not_viewabletrasshow()se reintenta en silencio y los comentarios no prometen confirmaciones (#179) #221). Motivos como códigos ASCII, sin textos nuevos de UI.not_viewabletrasshow()se reintenta en silencio y los comentarios no prometen confirmaciones (#179) #221 ya en base); no se cambian catálogos ni inventario a mano (regenerado con el script).Coordination / Coordinación
Contributor / Contribuidor: @SrStamm
Claim or agreement evidence / Evidencia de asignación o acuerdo: alcance aprobado por el mantenedor en el comentario de #215; implementación según ODD y los dos cuidados citados.
Acceptance and validation / Aceptación y validación
Una PR abierta no implica integración. Release, secretos y firma requieren autorización separada.