diff --git a/subiquitycore/view.py b/subiquitycore/view.py index 993888d5..41acc6f5 100644 --- a/subiquitycore/view.py +++ b/subiquitycore/view.py @@ -19,6 +19,7 @@ Contains some default key navigations """ import asyncio +import contextlib import logging from urwid import Overlay, Text, emit_signal @@ -152,3 +153,16 @@ class BaseView(WidgetWrap): self.cancel() return None return key + + def is_visible(self) -> bool: + with contextlib.suppress(AttributeError): + return self.controller.app.ui.body is self + return False + + def request_redraw(self, *, only_if_visible=False) -> None: + if only_if_visible and not self.is_visible(): + return + self.controller.app.request_screen_redraw() + + def request_redraw_if_visible(self) -> None: + self.request_redraw(only_if_visible=True)