Grammalecte  View Ticket

UUID: 5060028585f1aa52cf9989fea8a89aec9c690553
Title/Titre: L'éditeur lexical ne s'ouvre pas
Status: Open Type: Code_Defect
Severity/Gravité: Minor Priority/Priorité: Immediate
Module: LibreOffice Resolution: Open
Modified/Modifié: 2024-11-24 18:11:54
Version(s): 2.1.2
Comments / Commentaires :
anonymous // 2024-01-13 10:53:50 :
Bonjour, 
Sous LibreOffice 7.6.4.1 / Windows 11 22H2
Je n'ai pas bien cerné le cheminement exact pour reproduire ce bug, cependant, généralement, lorsque j'ouvre l'éditeur lexical, que je ferme, que je part ensuite vers une autre application, puis que je  retourne vers l'éditeur, celui-ci ne s'ouvre plus. 
Le work around est de fermer LibreOffice et de rouvrir. 
Il n'y a pas de message d'erreur. 
Meilleures salutations.

anonymous // 2024-11-24 18:11:54 :
Bonjour,
J'ai aussi constaté ce problème sous système GNU/Linux (Debian testing pour être plus précis).

Pour le déclencher (du moins chez moi), il suffit de presser la touche "Escape" pour fermer la fenêtre au lieu de cliquer sur "Close". Ouvrir à nouveau l'éditeur n'aura aucun effet.

Après un petit coup d'œil dans le code pour Libreoffice, il s'avère que l'ouverture de l'éditeur est conditionnée par une variable 'bClosed' qui n'est pas mise à 'True' quand on presse "Escape" (alors qu'elle l'est quand on clique sur "Close").

Du coup, voici un correctif si ça peut être utile ou faire gagner du temps :

Index: gc_lang/fr/oxt/DictOptions/LexiconEditor.py
==================================================================
--- gc_lang/fr/oxt/DictOptions/LexiconEditor.py
+++ gc_lang/fr/oxt/DictOptions/LexiconEditor.py
@@ -326,22 +326,20 @@
             elif xActionEvent.ActionCommand == "Export":
                 self.exportDictionary()
             elif xActionEvent.ActionCommand == 'Info':
                 pass
             elif xActionEvent.ActionCommand == "Close":
-                self.bClosed = True
-                self.xContainer.dispose()           # Non modal dialog
-                #self.xContainer.endExecute()       # Modal dialog
+                self.doCloseWindow()
         except:
             traceback.print_exc()
 
     # XTopWindowListener (useful for non modal dialog only)
     def windowOpened (self, xEvent):
         return
 
     def windowClosing (self, xEvent):
-        self.xContainer.dispose()           # Non modal dialog
+        self.doCloseWindow()
 
     def windowClosed (self, xEvent):
         return
 
     def windowMinimized (self, xEvent):
@@ -669,8 +667,12 @@
             if i < xGridDataModel.RowCount:
                 xGridDataModel.removeRow(i)
         self.xGridControlLex.deselectAllRows()
         self.xNumLex.Label = str(xGridDataModel.RowCount)
 
+    def doCloseWindow (self):
+        self.bClosed = True
+        self.xContainer.dispose()           # Non modal dialog
+
 
 #g_ImplementationHelper = unohelper.ImplementationHelper()
 #g_ImplementationHelper.addImplementation(LexiconEditor, 'net.grammalecte.LexiconEditor', ('com.sun.star.task.Job',))