Prevent scroll when only one of the text view or preview are scrollable

github/fork/yochananmarqos/patch-1
Gonçalo Silva 2019-06-08 02:32:48 +01:00
parent d78602c4db
commit aae38ddb5f
3 changed files with 19 additions and 9 deletions

View File

@ -59,7 +59,7 @@ if (canScroll && isRendered) {{
self.connect("size-allocate", self.on_size_allocate)
self.connect("destroy", self.on_destroy)
self.scroll_scale = 0.0
self.scroll_scale = -1
self.state_loaded = False
self.state_load_failed = False
@ -69,6 +69,9 @@ if (canScroll && isRendered) {{
self.timeout_id = None
def can_scroll(self):
return self.scroll_scale != -1
def get_scroll_scale(self):
return self.scroll_scale
@ -114,11 +117,11 @@ if (canScroll && isRendered) {{
self.timeout_id = None
# Set scroll scale if specified, and the state is not dirty
if not self.state_discard_read and scroll_scale not in (None, -1, self.scroll_scale):
if not self.state_discard_read and scroll_scale not in (None, self.scroll_scale):
self.scroll_scale = scroll_scale
self.emit("scroll-scale-changed", self.scroll_scale)
else:
self.state_discard_read = False
if self.scroll_scale != -1:
self.emit("scroll-scale-changed", self.scroll_scale)
self.state_discard_read = False
# Handle the current state
if not self.state_loaded or self.state_load_failed or self.state_waiting:

View File

@ -124,6 +124,9 @@ class TextView(Gtk.TextView):
text_buffer = self.get_buffer()
text_buffer.set_text(text)
def can_scroll(self):
return self.scroller.can_scroll()
def get_scroll_scale(self):
return self.scroller.get_scroll_scale() if self.scroller else 0
@ -150,8 +153,8 @@ class TextView(Gtk.TextView):
if parent:
parent.set_size_request(self.get_min_width(), 500)
self.scroller = TextViewScroller(self, parent)
parent.get_vadjustment().connect("changed", self.on_scroll_scale_changed)
parent.get_vadjustment().connect("value-changed", self.on_scroll_scale_changed)
parent.get_vadjustment().connect("changed", self.on_vadjustment_changed)
parent.get_vadjustment().connect("value-changed", self.on_vadjustment_changed)
else:
self.scroller = None
@ -168,10 +171,10 @@ class TextView(Gtk.TextView):
self.markup.apply()
return False
def on_scroll_scale_changed(self, *_):
def on_vadjustment_changed(self, *_):
if self.frozen_scroll_scale is not None:
self.set_scroll_scale(self.frozen_scroll_scale)
else:
elif self.can_scroll():
self.emit("scroll-scale-changed", self.get_scroll_scale())
def unfreeze_scroll_scale(self):

View File

@ -6,6 +6,10 @@ class TextViewScroller:
self.scrolled_window = scrolled_window
self.smooth_scroller = None
def can_scroll(self):
vap = self.scrolled_window.get_vadjustment().props
return vap.upper > vap.page_size
def get_scroll_scale(self):
vap = self.scrolled_window.get_vadjustment().props
if vap.upper > vap.page_size: