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:
@@ -6,6 +6,13 @@ Ce projet suit le [Versionnage Sémantique](https://semver.org/lang/fr/).
|
||||
|
||||
---
|
||||
|
||||
## [0.8.3] — 2026-09-06
|
||||
|
||||
### Corrigé
|
||||
- **Le bouton « Saisir le code d'accès » n'apparaissait pas**, alors même que la ligne *Accès distant* indiquait la quarantaine. Il était bien créé et placé dans le layout, mais sous le bord inférieur d'une fenêtre restée à sa hauteur précédente. Rendre un widget visible ne met pas les layouts à jour immédiatement : Qt poste un `LayoutRequest` traité au tour de boucle suivant, et la fenêtre — de hauteur fixe, recalculée à chaque changement de contenu — se mesurait avant ce traitement, obtenant une hauteur en retard d'un cycle. Les layouts sont désormais remis à plat explicitement avant toute mesure. Corrige du même coup le repli du détail, qui souffrait du même retard sans que cela se voie.
|
||||
|
||||
---
|
||||
|
||||
## [0.8.2] — 2026-09-06
|
||||
|
||||
### Corrigé
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
## ──────────────────────────────────────────────
|
||||
|
||||
APP := wgsecure
|
||||
VERSION := 0.8.2
|
||||
VERSION := 0.8.3
|
||||
VENV := .venv
|
||||
PYTHON := $(VENV)/bin/python3
|
||||
PIP := $(VENV)/bin/pip
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 🛡️ WGSecure (WGS)
|
||||
|
||||
🚀 v0.8.2 · 🐍 · 🪟🐧 · 🔐 Accès validé par le serveur · 🛡️ WireGuard
|
||||
🚀 v0.8.3 · 🐍 · 🪟🐧 · 🔐 Accès validé par le serveur · 🛡️ WireGuard
|
||||
|
||||
**WGSecure** est une interface graphique multiplateforme (Windows & Linux) pour gérer une connexion WireGuard dont l'accès aux ressources distantes est ouvert par un code à 6 chiffres validé **par le serveur**.
|
||||
|
||||
|
||||
+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())
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
; ──────────────────────────────────────────────
|
||||
|
||||
#define MyAppName "WGSecure"
|
||||
#define MyAppVersion "0.8.2"
|
||||
#define MyAppVersion "0.8.3"
|
||||
#define MyAppPublisher "WGSecure"
|
||||
#define MyAppExeName "wgsecure.exe"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user