@@ -825,7 +825,10 @@ def _check_anchor(self) -> None:
825825 if (
826826 self ._anchored
827827 and self ._anchor_released
828- and self .scroll_y >= self .max_scroll_y
828+ and (
829+ self .scroll_y >= self .max_scroll_y
830+ or self .scroll_target_y >= self .max_scroll_y
831+ )
829832 ):
830833 self ._anchor_released = False
831834
@@ -2748,7 +2751,12 @@ def _scroll_to(
27482751 """
27492752
27502753 if release_anchor :
2751- self .release_anchor ()
2754+ if y is not None and y >= self .max_scroll_y :
2755+ release_anchor = False
2756+ if self ._anchored :
2757+ self ._anchor_released = False
2758+ else :
2759+ self .release_anchor ()
27522760 maybe_scroll_x = x is not None and (self .allow_horizontal_scroll or force )
27532761 maybe_scroll_y = y is not None and (self .allow_vertical_scroll or force )
27542762 scrolled_x = scrolled_y = False
@@ -2819,6 +2827,9 @@ def _animate_on_complete() -> None:
28192827 if on_complete is not None :
28202828 self .call_after_refresh (on_complete )
28212829
2830+ if self ._anchored and self ._anchor_released :
2831+ self ._check_anchor ()
2832+
28222833 return scrolled_x or scrolled_y
28232834
28242835 @property
@@ -2891,7 +2902,12 @@ def scroll_to(
28912902 The call to scroll is made after the next refresh.
28922903 """
28932904 if release_anchor :
2894- self .release_anchor ()
2905+ if y is not None and y >= self .max_scroll_y :
2906+ release_anchor = False
2907+ if self ._anchored :
2908+ self ._anchor_released = False
2909+ else :
2910+ self .release_anchor ()
28952911 animator = self .app .animator
28962912 if x is not None :
28972913 animator .force_stop_animation (self , "scroll_x" )
@@ -2908,6 +2924,7 @@ def scroll_to(
29082924 force = force ,
29092925 on_complete = on_complete ,
29102926 level = level ,
2927+ release_anchor = release_anchor ,
29112928 )
29122929 else :
29132930 self .call_after_refresh (
@@ -2921,6 +2938,7 @@ def scroll_to(
29212938 force = force ,
29222939 on_complete = on_complete ,
29232940 level = level ,
2941+ release_anchor = release_anchor ,
29242942 )
29252943
29262944 def scroll_relative (
0 commit comments