diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py index d1af514beb9aedf7eb241d50eebb4a6e050c4728..075f26c53da5708099266b3e65bbfccbab638c81 100644 --- a/src/View/MainWindow.py +++ b/src/View/MainWindow.py @@ -586,21 +586,34 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): # Remove all actions menu.clear() + self._do_update_window_list_add_action(menu, self.sub_win_list) + + def _do_update_window_list_add_action(self, menu, win_list): + for _, win in win_list: + self._do_update_window_list_add_action_for_window( + menu, win + ) + + try: + lst = win.sub_win_list + self._do_update_window_list_add_action(menu, lst) + except Exception: + continue + + def _do_update_window_list_add_action_for_window(self, menu, window): def lambda_generator(h): return lambda: self._activate_window(h) - # Add window action - for _, win in self.sub_win_list: - action = QAction(win._title, self) - # action.setStatusTip( - # _translate("MainWindow", "Activate this window") - # ) - h = win.hash() - logger.info(f"Get hash: {h}") - fn = lambda_generator(h) - action.triggered.connect(fn) - - menu.addAction(action) + action = QAction(window._title, self) + # action.setStatusTip( + # _translate("MainWindowdow", "Activate this windowdow") + # ) + h = window.hash() + logger.info(f"Get hash: {h}") + fn = lambda_generator(h) + action.triggered.connect(fn) + + menu.addAction(action) def open_configure(self): """Open configure window diff --git a/src/View/Tools/ListedSubWindow.py b/src/View/Tools/ListedSubWindow.py index 96c4e64bf4d69954f8e222771ccf053e28b82e52..dad3623432cb63836c8a7becd58dcbf2ec32f1b6 100644 --- a/src/View/Tools/ListedSubWindow.py +++ b/src/View/Tools/ListedSubWindow.py @@ -108,4 +108,7 @@ class ListedSubWindow(object): return False def _update_window_list(self): - return + try: + self._parent._update_window_list() + except Exception: + return