mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
optimize refresh
This commit is contained in:
@@ -34,7 +34,7 @@ class Update(Message, verbosity=3):
|
||||
@rich.repr.auto
|
||||
class Layout(Message, verbosity=3):
|
||||
def can_replace(self, message: Message) -> bool:
|
||||
return isinstance(message, (Layout, Update))
|
||||
return isinstance(message, Layout)
|
||||
|
||||
|
||||
@rich.repr.auto
|
||||
|
||||
@@ -174,15 +174,19 @@ class Screen(Widget):
|
||||
|
||||
async def handle_update(self, message: messages.Update) -> None:
|
||||
message.stop()
|
||||
message.prevent_default()
|
||||
widget = message.widget
|
||||
assert isinstance(widget, Widget)
|
||||
self._dirty_widgets.add(widget)
|
||||
self.check_idle()
|
||||
|
||||
async def handle_layout(self, message: messages.Layout) -> None:
|
||||
print("LAYOUT")
|
||||
message.stop()
|
||||
message.prevent_default()
|
||||
self._layout_required = True
|
||||
self.check_idle()
|
||||
self._refresh_layout()
|
||||
|
||||
def _screen_resized(self, size: Size):
|
||||
"""Called by App when the screen is resized."""
|
||||
|
||||
@@ -920,11 +920,11 @@ class Widget(DOMNode):
|
||||
event (events.Idle): Idle event.
|
||||
"""
|
||||
|
||||
if self._layout_required:
|
||||
self._layout_required = False
|
||||
self.screen.post_message_no_wait(messages.Layout(self))
|
||||
elif self._repaint_required:
|
||||
if self._repaint_required:
|
||||
self.screen.post_message_no_wait(messages.Update(self, self))
|
||||
if self._layout_required:
|
||||
self.screen.post_message_no_wait(messages.Layout(self))
|
||||
self._layout_required = False
|
||||
self._repaint_required = False
|
||||
|
||||
def focus(self) -> None:
|
||||
|
||||
Reference in New Issue
Block a user