@@ -22,40 +22,39 @@ class ScrollView(LayoutView):
2222 def __init__ (
2323 self , renderable : RenderableType , name : str | None = None , style : StyleType = ""
2424 ) -> None :
25- layout = Layout ()
25+ layout = Layout (name = "outer" )
2626 layout .split_row (
27- Layout (name = "main" , ratio = 1 ), Layout (name = "vertical_scrollbar" , size = 1 )
28- )
29- layout ["main" ].split_column (
30- Layout (name = "content" , ratio = 1 ), Layout (name = "horizontal_scrollbar" , size = 1 )
27+ Layout (name = "content" , ratio = 1 ), Layout (name = "vertical_scrollbar" , size = 1 )
3128 )
29+ # layout["main"].split_column(
30+ # Layout(name="content", ratio=1), Layout(name="horizontal_scrollbar", size=1)
31+ # )
3232 self ._vertical_scrollbar = ScrollBar (vertical = True )
33- self ._horizontal_Scrollbar = ScrollBar (vertical = False )
33+ # self._horizontal_Scrollbar = ScrollBar(vertical=False)
3434 self ._page = Page (renderable , style = style )
3535 super ().__init__ (layout = layout , name = name )
3636
37- position_x : Reactive [int ] = Reactive (0 )
38- position_y : Reactive [int ] = Reactive (0 )
37+ x : Reactive [float ] = Reactive (0 )
38+ y : Reactive [float ] = Reactive (0 )
3939
40- def validate_position_y (self , value : int ) -> int :
40+ def validate_y (self , value : float ) -> int :
4141 return max (0 , value )
4242
43- def update_position_y (self , old_value : int , new_value : int ) -> None :
44- self ._vertical_scrollbar .position = new_value
43+ def update_y (self , old_value : float , new_value : float ) -> None :
44+ self ._page .y = int (new_value )
45+ self ._vertical_scrollbar .position = int (new_value )
4546
4647 async def on_mount (self , event : events .Mount ) -> None :
4748 await self .mount_all (
4849 content = self ._page ,
4950 vertical_scrollbar = self ._vertical_scrollbar ,
50- horizontal_scrollbar = self ._horizontal_Scrollbar ,
51+ # horizontal_scrollbar=self._horizontal_Scrollbar,
5152 )
5253
5354 async def on_idle (self , event : events .Idle ) -> None :
5455 self ._vertical_scrollbar .virtual_size = self ._page .virtual_size .height
5556 self ._vertical_scrollbar .window_size = self .size .height
5657 # self._vertical_scrollbar.position = self.position_y
57- log .debug ("SCROLLVIEW BAR %r" , self ._vertical_scrollbar )
58- log .debug ("SCROLL SIZE %r" , self ._page .size )
5958 await super ().on_idle (event )
6059
6160 async def on_mouse_scroll_up (self , event : events .MouseScrollUp ) -> None :
@@ -66,9 +65,10 @@ async def on_mouse_scroll_down(self, event: events.MouseScrollUp) -> None:
6665
6766 async def on_key (self , event : events .Key ) -> None :
6867 if event .key == "down" :
69- self .position_y += 1
68+ self .y += 1
7069 elif event .key == "up" :
71- self .position_y -= 1
72- # self._vertical_scrollbar.require_repaint()
73- # await self._vertical_scrollbar.post_message(events.Null(self))
74- # self.require_repaint()
70+ self .y -= 1
71+ elif event .key == "pagedown" :
72+ self ._animator .animate ("y" , self .y + self .size .height , duration = 0.5 )
73+ elif event .key == "pageup" :
74+ self ._animator .animate ("y" , self .y - self .size .height , duration = 0.5 )
0 commit comments