From dc7cee69597ae3caaeea97c15a408f2f2edbc3e4 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Thu, 19 May 2016 19:35:45 -0500 Subject: [PATCH] gtk: Simplify and improve autoscroll code. --- platform/gtk/widgets.py | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/platform/gtk/widgets.py b/platform/gtk/widgets.py index 34dedad..1b7d74d 100644 --- a/platform/gtk/widgets.py +++ b/platform/gtk/widgets.py @@ -455,8 +455,6 @@ def set_y(self,y): self.forward_display_line(iter) yalign = float(self.get_iter_location(iter).y-y)/self.height self.scroll_to_iter(iter, 0, True, 0, yalign) - - self.check_autoscroll() def get_ymax(self): buffer = self.get_buffer() @@ -595,21 +593,6 @@ def hover(self, event): self.get_pointer() - def scroll(self, _allocation=None): - if self.autoscroll: - def do_scroll(): - self.scroller.value = self.scroller.upper - self.scroller.page_size - self._scrolling = False - - if not self._scrolling: - self._scrolling = gobject.idle_add(do_scroll) - - def check_autoscroll(self, *args): - def set_to_scroll(): - self.autoscroll = self.scroller.value + self.scroller.page_size >= self.scroller.upper - - gobject.idle_add(set_to_scroll) - def on_keypress(self, event): if event.string and not (event.state & (gtk.gdk.CONTROL_MASK|gtk.gdk.MOD1_MASK|gtk.gdk.MOD2_MASK|gtk.gdk.MOD3_MASK|gtk.gdk.MOD4_MASK|gtk.gdk.MOD5_MASK)): #redirect character input to the TextInput @@ -656,7 +639,6 @@ def __init__(self, window, buffer=None): self.hover_coords = 0, 0 self.autoscroll = True - self._scrolling = False self.scroller = gtk.Adjustment() def setup_scroll(self, _adj, vadj): @@ -665,11 +647,14 @@ def setup_scroll(self, _adj, vadj): if vadj: def set_scroll(adj): self.autoscroll = adj.value + adj.page_size >= adj.upper + def do_scroll(adj): + if self.autoscroll: + adj.set_value(adj.upper - adj.page_size) + vadj.connect("changed", do_scroll) vadj.connect("value-changed", set_scroll) self.connect("set-scroll-adjustments", setup_scroll) - self.connect("size-allocate", TextOutput.scroll) def set_cursor(widget): self.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor(None)