diff -r 369c8ef5070a -r d77f1ae3786c tuikit/scrollview.py --- a/tuikit/scrollview.py Wed Jan 02 00:16:12 2013 +0100 +++ b/tuikit/scrollview.py Wed Jan 02 11:48:36 2013 +0100 @@ -8,8 +8,7 @@ """Scrolling view Shows scrollbars when needed. - Scrolling area is determined based on child widgets - size request. + Scrolling area is determined according to child widget's size request. """ @@ -25,6 +24,7 @@ super().add(widget, **kwargs) if widget != self.vscroll: widget.connect('sizereq', self._on_child_sizereq) + widget.connect('spotmove', self._on_child_spotmove) def _handle_resize(self, ev): super()._handle_resize(ev) @@ -38,6 +38,14 @@ def _on_child_sizereq(self, ev): self._update_vscroll_max() + def _on_child_spotmove(self, ev): + child = ev.originator + spot = child.y + child.spot.y + if spot < self.vscroll.pos: + self.vscroll.pos = spot + if spot > (self.size.h - 1) + self.vscroll.pos: + self.vscroll.pos = spot - (self.size.h - 1) + def _update_vscroll_max(self): max_height = 0 for child in self.children: