mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
Scroll to center when tab is clicked.
Related comment: https://github.com/Textualize/textual/issues/2256#issuecomment-1505551728
This commit is contained in:
@@ -2475,6 +2475,7 @@ class Widget(DOMNode):
|
||||
|
||||
def scroll_to_center(
|
||||
self,
|
||||
widget: Widget,
|
||||
animate: bool = True,
|
||||
*,
|
||||
speed: float | None = None,
|
||||
@@ -2493,8 +2494,8 @@ class Widget(DOMNode):
|
||||
"""
|
||||
|
||||
self.call_after_refresh(
|
||||
self.screen._scroll_to_center_of,
|
||||
widget=self,
|
||||
self._scroll_to_center_of,
|
||||
widget=widget,
|
||||
animate=animate,
|
||||
speed=speed,
|
||||
duration=duration,
|
||||
|
||||
@@ -449,7 +449,7 @@ class Tabs(Widget, can_focus=True):
|
||||
self.query("#tabs-list Tab.-active").remove_class("-active")
|
||||
tab.add_class("-active")
|
||||
self.active = tab.id or ""
|
||||
self.query_one("#tabs-scroll").scroll_to_widget(tab, force=True)
|
||||
self.query_one("#tabs-scroll").scroll_to_center(tab, force=True)
|
||||
|
||||
def _on_underline_clicked(self, event: Underline.Clicked) -> None:
|
||||
"""The underline was clicked.
|
||||
@@ -471,7 +471,7 @@ class Tabs(Widget, can_focus=True):
|
||||
"""Scroll the active tab into view."""
|
||||
if self.active_tab:
|
||||
try:
|
||||
self.query_one("#tabs-scroll").scroll_to_widget(
|
||||
self.query_one("#tabs-scroll").scroll_to_center(
|
||||
self.active_tab, force=True
|
||||
)
|
||||
except NoMatches:
|
||||
|
||||
@@ -33,7 +33,7 @@ class MyApp(App[None]):
|
||||
yield Label(("SPAM\n" * 59)[:-1])
|
||||
|
||||
def key_s(self) -> None:
|
||||
self.query_one("#bullseye").scroll_to_center()
|
||||
self.screen.scroll_to_center(self.query_one("#bullseye"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user