# HG changeset patch # User Goffi # Date 1579283075 -3600 # Node ID 434f770fe55b083c3bb2460a487a6e2a931e1a81 # Parent e9d3c3793f943db4a10b28d96e6434d627181b9b core (Cagou): add debug log for widget visibility + ignore_missing: - debug log are now use to show which widget are made (in)visible, and to show the list of currently visible widgets - "ignore_missing" can be used in _removeVisibleWidget when we can expect that a widget is missing in visible widgets list. diff -r e9d3c3793f94 -r 434f770fe55b cagou/core/cagou_main.py --- a/cagou/core/cagou_main.py Fri Jan 17 18:44:35 2020 +0100 +++ b/cagou/core/cagou_main.py Fri Jan 17 18:44:35 2020 +0100 @@ -769,15 +769,24 @@ for internal use only! """ assert isinstance(widget, CagouWidget) - self._visible_widgets.setdefault(widget.__class__, []).append(widget) + log.debug(f"Visible widget: {widget}") + self._visible_widgets.setdefault(widget.__class__, set()).add(widget) + log.debug(f"visible widgets list: {self.getVisibleList(None)}") widget.onVisible() - def _removeVisibleWidget(self, widget): + def _removeVisibleWidget(self, widget, ignore_missing=False): """declare a widget not visible anymore for internal use only! """ - self._visible_widgets[widget.__class__].remove(widget) + log.debug(f"Widget not visible anymore: {widget}") + try: + self._visible_widgets[widget.__class__].remove(widget) + except KeyError as e: + if not ignore_missing: + log.error(f"trying to remove a not visible widget ({widget}): {e}") + return + log.debug(f"visible widgets list: {self.getVisibleList(None)}") if isinstance(widget, CagouWidget): widget.onNotVisible() if isinstance(widget, quick_widgets.QuickWidget):