mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
comments, made update_timer private
This commit is contained in:
@@ -37,7 +37,7 @@ UPDATE_PERIOD: Final[float] = 1 / 120
|
||||
|
||||
@rich.repr.auto
|
||||
class Screen(Widget):
|
||||
"""A widget for the root of the app."""
|
||||
"""The base class for screens."""
|
||||
|
||||
DEFAULT_CSS = """
|
||||
Screen {
|
||||
@@ -48,7 +48,7 @@ class Screen(Widget):
|
||||
"""
|
||||
|
||||
focused: Reactive[Widget | None] = Reactive(None)
|
||||
"""The focused widget or `None` for no focus."""
|
||||
"""The focused [widget][textual.widget.Widget] or `None` for no focus."""
|
||||
stack_updates: Reactive[int] = Reactive(0, repaint=False)
|
||||
"""An integer that updates when the screen is resumed."""
|
||||
|
||||
@@ -63,11 +63,19 @@ class Screen(Widget):
|
||||
id: str | None = None,
|
||||
classes: str | None = None,
|
||||
) -> None:
|
||||
"""
|
||||
Initialize the screen.
|
||||
|
||||
Args:
|
||||
name: The name of the screen.
|
||||
id: The ID of the screen in the DOM.
|
||||
classes: The CSS classes for the screen.
|
||||
"""
|
||||
self._modal = False
|
||||
super().__init__(name=name, id=id, classes=classes)
|
||||
self._compositor = Compositor()
|
||||
self._dirty_widgets: set[Widget] = set()
|
||||
self._update_timer: Timer | None = None
|
||||
self.__update_timer: Timer | None = None
|
||||
self._callbacks: list[CallbackType] = []
|
||||
|
||||
@property
|
||||
@@ -90,13 +98,13 @@ class Screen(Widget):
|
||||
return False
|
||||
|
||||
@property
|
||||
def update_timer(self) -> Timer:
|
||||
def _update_timer(self) -> Timer:
|
||||
"""Timer used to perform updates."""
|
||||
if self._update_timer is None:
|
||||
self._update_timer = self.set_interval(
|
||||
if self.__update_timer is None:
|
||||
self.__update_timer = self.set_interval(
|
||||
UPDATE_PERIOD, self._on_timer_update, name="screen_update", pause=True
|
||||
)
|
||||
return self._update_timer
|
||||
return self.__update_timer
|
||||
|
||||
def render(self) -> RenderableType:
|
||||
background = self.styles.background
|
||||
@@ -394,7 +402,7 @@ class Screen(Widget):
|
||||
self._repaint_required = False
|
||||
|
||||
if self._dirty_widgets:
|
||||
self.update_timer.resume()
|
||||
self._update_timer.resume()
|
||||
|
||||
# The Screen is idle - a good opportunity to invoke the scheduled callbacks
|
||||
await self._invoke_and_clear_callbacks()
|
||||
@@ -412,7 +420,7 @@ class Screen(Widget):
|
||||
if self._callbacks:
|
||||
self.post_message(events.InvokeCallbacks())
|
||||
|
||||
self.update_timer.pause()
|
||||
self._update_timer.pause()
|
||||
|
||||
async def _on_invoke_callbacks(self, event: events.InvokeCallbacks) -> None:
|
||||
"""Handle PostScreenUpdate events, which are sent after the screen is updated"""
|
||||
@@ -449,7 +457,7 @@ class Screen(Widget):
|
||||
if not size:
|
||||
return
|
||||
self._compositor.update_widgets(self._dirty_widgets)
|
||||
self.update_timer.pause()
|
||||
self._update_timer.pause()
|
||||
ResizeEvent = events.Resize
|
||||
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user