diff --git a/CHANGELOG.md b/CHANGELOG.md index 70b1a12..ce5cbec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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é diff --git a/Makefile b/Makefile index 7dd4dfa..2c7dbf6 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ ## ────────────────────────────────────────────── APP := wgsecure -VERSION := 0.8.2 +VERSION := 0.8.3 VENV := .venv PYTHON := $(VENV)/bin/python3 PIP := $(VENV)/bin/pip diff --git a/README.md b/README.md index 6ae4926..74e432b 100644 --- a/README.md +++ b/README.md @@ -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**. diff --git a/app/__init__.py b/app/__init__.py index e9c9d9b..6d67560 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -1,3 +1,3 @@ -__version__ = "0.8.2" +__version__ = "0.8.3" APP_NAME = "WGSecure" APP_SHORT = "WGS" diff --git a/app/ui/main_window.py b/app/ui/main_window.py index b9b7fb2..78fdb1e 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -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()) diff --git a/wgsecure.iss b/wgsecure.iss index 7e44fb1..82dc664 100644 --- a/wgsecure.iss +++ b/wgsecure.iss @@ -5,7 +5,7 @@ ; ────────────────────────────────────────────── #define MyAppName "WGSecure" -#define MyAppVersion "0.8.2" +#define MyAppVersion "0.8.3" #define MyAppPublisher "WGSecure" #define MyAppExeName "wgsecure.exe"