From 8109ddf78fb9768c1c1778a2649a9a1575097d38 Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Tue, 13 Feb 2024 11:43:24 +0100
Subject: [PATCH] Pamhyr: Chose to close all subwindow at window close.

---
 src/View/MainWindow.py            | 11 ++++++++---
 src/View/Tools/ListedSubWindow.py |  4 ++++
 src/View/Tools/PamhyrWindow.py    |  6 ++++++
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py
index 902d2d83..1d8cbee4 100644
--- a/src/View/MainWindow.py
+++ b/src/View/MainWindow.py
@@ -342,6 +342,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
     def _do_propagate_update(self):
         for key in self._propagation_keys:
             if key == "window_list":
+                logger.debug(f"Update window list")
                 self._do_update_window_list()
                 continue
 
@@ -568,9 +569,9 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         elif res == QMessageBox.Cancel:
             return False
 
-    #############
-    # SUBWINDOW #
-    #############
+    #########################
+    # SUB WINDOWS MENU LIST #
+    #########################
 
     def _activate_window(self, window_hash):
         self._try_activate_window_for_window(self, window_hash)
@@ -629,6 +630,10 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
 
         menu.addAction(action)
 
+    ###############
+    # SUB WINDOWS #
+    ###############
+
     def open_configure(self):
         """Open configure window
 
diff --git a/src/View/Tools/ListedSubWindow.py b/src/View/Tools/ListedSubWindow.py
index dad36234..2a4d6e84 100644
--- a/src/View/Tools/ListedSubWindow.py
+++ b/src/View/Tools/ListedSubWindow.py
@@ -112,3 +112,7 @@ class ListedSubWindow(object):
             self._parent._update_window_list()
         except Exception:
             return
+
+    def _close_sub_window(self):
+        for _, win in self._sub_win_list:
+            win.close()
diff --git a/src/View/Tools/PamhyrWindow.py b/src/View/Tools/PamhyrWindow.py
index 32b77db9..7555d5fb 100644
--- a/src/View/Tools/PamhyrWindow.py
+++ b/src/View/Tools/PamhyrWindow.py
@@ -172,6 +172,12 @@ class PamhyrWindow(ASubMainWindow, ListedSubWindow, PamhyrWindowTools):
 
         self._set_title()
 
+    def closeEvent(self, event):
+        self._close_sub_window()
+        self._propagate_update("window_list")
+
+        super(PamhyrWindow, self).closeEvent(event)
+
 
 class PamhyrDialog(ASubWindow, ListedSubWindow, PamhyrWindowTools):
     _pamhyr_ui = "dummy"
-- 
GitLab