Skip to content

fix(update): NSIS ferme l'application + protection des modifications non enregistrées - #22

Merged
Paullux merged 3 commits into
mainfrom
fix/windows-no-self-quit
Oct 18, 2026
Merged

Paullux merged 3 commits into
mainfrom
fix/windows-no-self-quit

Conversation

@Paullux

@Paullux Paullux commented Oct 18, 2026 •

Copy link
Copy Markdown
Member

1. Windows : l'installeur NSIS ferme l'application

Suppression du QTimer.singleShot(1500, self._quit_for_installer) dans _installer_ready : l'installeur détecte déjà l'application ouverte (macro CHECK_APP_RUNNING) et lui envoie WM_CLOSE. _quit_for_installer reste utilisé par l'AppImage.

2. Protection contre la perte de modifications

  • Document.is_modified / modified_changed : marqué par checkpoint(), les déplacements/insertions de pages, l'OCR (si des pages ont été traitées) et l'édition de texte ; remis à zéro seulement si l'écriture réussit.
  • Astérisque gras vert juste avant le titre de l'onglet, retiré à l'enregistrement.
  • Fermeture de la fenêtre (✕, Fichier › Quitter, Alt+F4, WM_CLOSE de l'installeur NSIS), d'un onglet (✕ de l'onglet, Fichier › Fermer l'onglet) : boîte « Voulez-vous enregistrer les modifications apportées à « … » ? » avec Enregistrer / Ne pas enregistrer / Annuler (Échap = Annuler), document par document ; Annuler interrompt toute la fermeture.
  • Échec d'enregistrement : le document reste ouvert (et modifié), message d'erreur.
  • Mise à jour AppImage et « Redémarrer maintenant » (langue/thème) : même confirmation avant de relancer ou de quitter (QApplication.quit() ne passe pas par closeEvent). Annuler = rien n'est relancé ni fermé. Aucun mécanisme ne force la fermeture après une annulation (allow_close_without_prompt() n'est appelé qu'après un confirm_close_all() réussi).
  • Chaînes ajoutées au .ts anglais (⚠ .qm à régénérer : pyside6-lrelease translations/pdf_equilibrist_en.ts -qm translations/pdf_equilibrist_en.qm).

À tester (non exécuté en local : pas de PyQt6 dans mon environnement)

  • Modifier un PDF → astérisque ; Ctrl+S → il disparaît
  • Fermer l'onglet / la fenêtre avec modifications : les 3 boutons ; plusieurs documents modifiés
  • Enregistrement qui échoue (fichier en lecture seule) : document conservé
  • Mise à jour Windows avec un document modifié : NSIS demande de fermer, puis la boîte de l'application ; Annuler garde l'application ouverte
  • AppImage : Annuler avant le relancement

🤖 Generated with Claude Code

Paullux and others added 2 commits October 18, 2026 13:34
…r NSIS

L'installeur détecte l'application ouverte (CHECK_APP_RUNNING) et propose de la
fermer ; la fermeture automatique à 1,5 s le court-circuitait. _quit_for_installer
reste utilisé par l'AppImage, qui n'a pas d'installeur pour le faire.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…rées

- Document : suivi des modifications (is_modified, modified_changed) ; marqué par checkpoint(),
  les déplacements/insertions de pages, l'OCR et l'édition de texte ; remis à zéro seulement
  quand l'écriture réussit.
- Onglets : astérisque gras vert juste avant le titre, retiré à l'enregistrement.
- Fermeture de la fenêtre, d'un onglet (Fichier › Fermer l'onglet / ✕) : boîte
  Enregistrer / Ne pas enregistrer / Annuler, document par document ; Annuler interrompt tout.
- Échec d'enregistrement : le document reste ouvert, l'utilisateur est prévenu.
- Mise à jour AppImage et redémarrage (langue/thème) : mêmes confirmations avant de relancer
  ou quitter ; sous Windows la fermeture demandée par l'installeur NSIS (WM_CLOSE) passe par closeEvent.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@Paullux Paullux changed the title fix(update): Windows — l'installeur NSIS ferme l'application, plus le QTimer fix(update): NSIS ferme l'application + protection des modifications non enregistrées Oct 18, 2026
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@Paullux
Paullux merged commit 6a4fe2c into main Oct 18, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant