Add navigate option to scroll_page()

So you can scroll down & navigate when you're at the bottom.

To bind this to space:

	scroll-page 0 1 next
		<Space>

Not sure if it's a good idea to bind this by default? May surprise some
people...

See #696
This commit is contained in:
Martin Tournoij 2015-05-29 18:35:15 +02:00
parent 48735315f8
commit c7dcaff025

View File

@ -643,14 +643,23 @@ class CommandDispatcher:
@cmdutils.register(instance='command-dispatcher', hide=True, @cmdutils.register(instance='command-dispatcher', hide=True,
scope='window', count='count') scope='window', count='count')
def scroll_page(self, x: {'type': float}, y: {'type': float}, count=1): def scroll_page(self, x: {'type': float}, y: {'type': float},
navigate=None, count=1):
"""Scroll the frame page-wise. """Scroll the frame page-wise.
Args: Args:
x: How many pages to scroll to the right. x: How many pages to scroll to the right.
y: How many pages to scroll down. y: How many pages to scroll down.
navigate: :navigate to the next page on bottom
count: multiplier count: multiplier
""" """
frame = self._current_widget().page().currentFrame()
if (navigate is not None and
frame.scrollPosition().y() >=
frame.scrollBarMaximum(Qt.Vertical)):
self.navigate(navigate)
return
mult_x = count * x mult_x = count * x
mult_y = count * y mult_y = count * y
if mult_y.is_integer(): if mult_y.is_integer():
@ -663,7 +672,6 @@ class CommandDispatcher:
mult_y = 0 mult_y = 0
if mult_x == 0 and mult_y == 0: if mult_x == 0 and mult_y == 0:
return return
frame = self._current_widget().page().currentFrame()
size = frame.geometry() size = frame.geometry()
dx = mult_x * size.width() dx = mult_x * size.width()
dy = mult_y * size.height() dy = mult_y * size.height()