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(
|
def scroll_to_center(
|
||||||
self,
|
self,
|
||||||
|
widget: Widget,
|
||||||
animate: bool = True,
|
animate: bool = True,
|
||||||
*,
|
*,
|
||||||
speed: float | None = None,
|
speed: float | None = None,
|
||||||
@@ -2493,8 +2494,8 @@ class Widget(DOMNode):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
self.call_after_refresh(
|
self.call_after_refresh(
|
||||||
self.screen._scroll_to_center_of,
|
self._scroll_to_center_of,
|
||||||
widget=self,
|
widget=widget,
|
||||||
animate=animate,
|
animate=animate,
|
||||||
speed=speed,
|
speed=speed,
|
||||||
duration=duration,
|
duration=duration,
|
||||||
|
|||||||
@@ -449,7 +449,7 @@ class Tabs(Widget, can_focus=True):
|
|||||||
self.query("#tabs-list Tab.-active").remove_class("-active")
|
self.query("#tabs-list Tab.-active").remove_class("-active")
|
||||||
tab.add_class("-active")
|
tab.add_class("-active")
|
||||||
self.active = tab.id or ""
|
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:
|
def _on_underline_clicked(self, event: Underline.Clicked) -> None:
|
||||||
"""The underline was clicked.
|
"""The underline was clicked.
|
||||||
@@ -471,7 +471,7 @@ class Tabs(Widget, can_focus=True):
|
|||||||
"""Scroll the active tab into view."""
|
"""Scroll the active tab into view."""
|
||||||
if self.active_tab:
|
if self.active_tab:
|
||||||
try:
|
try:
|
||||||
self.query_one("#tabs-scroll").scroll_to_widget(
|
self.query_one("#tabs-scroll").scroll_to_center(
|
||||||
self.active_tab, force=True
|
self.active_tab, force=True
|
||||||
)
|
)
|
||||||
except NoMatches:
|
except NoMatches:
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class MyApp(App[None]):
|
|||||||
yield Label(("SPAM\n" * 59)[:-1])
|
yield Label(("SPAM\n" * 59)[:-1])
|
||||||
|
|
||||||
def key_s(self) -> None:
|
def key_s(self) -> None:
|
||||||
self.query_one("#bullseye").scroll_to_center()
|
self.screen.scroll_to_center(self.query_one("#bullseye"))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user