diff --git a/screen.py b/screen.py index 37e81064..4015d633 100755 --- a/screen.py +++ b/screen.py @@ -510,20 +510,19 @@ class KlipperScreen(Gtk.Window): logging.info("No items in menu") def _remove_all_panels(self): - for _ in self.base_panel.content.get_children(): - self.base_panel.content.remove(_) + logging.debug("Removing all panels") + while len(self._cur_panels) > 0: + self._remove_current_panel() + del self._cur_panels[-1] + self._cur_panels.clear() for dialog in self.dialogs: self.gtk.remove_dialog(dialog) - for panel in list(self.panels): - if hasattr(self.panels[panel], "deactivate"): - self.panels[panel].deactivate() - self._cur_panels.clear() self.close_screensaver() def _remove_current_panel(self): - self.base_panel.remove(self.panels[self._cur_panels[-1]].content) if hasattr(self.panels[self._cur_panels[-1]], "deactivate"): self.panels[self._cur_panels[-1]].deactivate() + self.base_panel.remove(self.panels[self._cur_panels[-1]].content) def _menu_go_back(self, widget=None, home=False): logging.info(f"#### Menu go {'home' if home else 'back'}")