fix(ui): mesurer la fenêtre après remise à plat des layouts (v0.8.3)
Le bouton « Saisir le code d'accès » était créé et placé, mais sous le bord inférieur : rendre un widget visible ne met pas les layouts à jour dans la foulée — Qt poste un LayoutRequest traité au tour de boucle suivant. La fenêtre, de hauteur fixe recalculée à chaque changement de contenu, se mesurait avant ce traitement et obtenait une hauteur en retard d'un cycle. Le symptôme était déjà visible dans les tests de la v0.8.2 : la hauteur montait bien de 258 à 298 px à l'apparition du bouton, mais ne redescendait jamais à sa disparition. J'avais mis cette asymétrie sur le compte du backend graphique de test au lieu d'y voir le retard lui-même. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -1,3 +1,3 @@
|
||||
__version__ = "0.8.2"
|
||||
__version__ = "0.8.3"
|
||||
APP_NAME = "WGSecure"
|
||||
APP_SHORT = "WGS"
|
||||
|
||||
+18
-5
@@ -1,11 +1,12 @@
|
||||
from __future__ import annotations
|
||||
from PyQt6.QtWidgets import (
|
||||
QApplication,
|
||||
QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
|
||||
QLabel, QPushButton, QFrame, QMessageBox, QInputDialog,
|
||||
QLineEdit, QListWidget, QListWidgetItem,
|
||||
QComboBox,
|
||||
)
|
||||
from PyQt6.QtCore import Qt, QTimer, QDateTime
|
||||
from PyQt6.QtCore import Qt, QTimer, QDateTime, QEvent
|
||||
from PyQt6.QtGui import QFont, QCloseEvent, QColor
|
||||
|
||||
from app.core.config import Config
|
||||
@@ -373,13 +374,25 @@ class MainWindow(QMainWindow):
|
||||
"""Réajuste la hauteur fixe de la fenêtre à son contenu visible.
|
||||
|
||||
La fenêtre reste de taille fixe (pas de redimensionnement manuel),
|
||||
mais cette taille change avec le repli/dépli du détail — il faut
|
||||
donc lever la contrainte précédente avant de laisser le layout
|
||||
recalculer sa hauteur naturelle, puis la reverrouiller.
|
||||
mais cette taille change avec le repli/dépli du détail et avec
|
||||
l'apparition du bouton de code d'accès — il faut donc lever la
|
||||
contrainte précédente avant de laisser le layout recalculer sa
|
||||
hauteur naturelle, puis la reverrouiller.
|
||||
|
||||
Le rendre visible ne suffit pas à mettre les layouts à jour : Qt
|
||||
poste un `LayoutRequest` traité au tour de boucle suivant, et
|
||||
mesurer avant ce traitement rend une hauteur en retard d'un cycle.
|
||||
La fenêtre gardait alors sa taille précédente et rognait le widget
|
||||
qui venait d'apparaître — le bouton « Saisir le code d'accès »
|
||||
existait, mais sous le bord inférieur. D'où la remise à plat
|
||||
explicite des layouts avant toute mesure.
|
||||
"""
|
||||
self.setMinimumHeight(0)
|
||||
self.setMaximumHeight(16777215)
|
||||
self.centralWidget().adjustSize()
|
||||
central = self.centralWidget()
|
||||
QApplication.sendPostedEvents(None, QEvent.Type.LayoutRequest)
|
||||
central.layout().activate()
|
||||
central.adjustSize()
|
||||
self.adjustSize()
|
||||
self.setFixedHeight(self.sizeHint().height())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user