about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorpavel <pavel989@gmail.com>2018-10-07 12:20:43 -0400
committerpavel <pavel989@gmail.com>2018-10-07 12:20:43 -0400
commit41e19fd36aff34f3743d47345c5d83c247964fb3 (patch)
tree45002af0d04de623e5a0935b842b89326c230005
parent9454e9ff072007a2b2ed99bd11863b2cb8397785 (diff)
downloadranger-41e19fd36aff34f3743d47345c5d83c247964fb3.tar.gz
initial mouse wheel scroll support
-rw-r--r--ranger/gui/widgets/browsercolumn.py9
-rw-r--r--ranger/gui/widgets/pager.py4
2 files changed, 11 insertions, 2 deletions
diff --git a/ranger/gui/widgets/browsercolumn.py b/ranger/gui/widgets/browsercolumn.py
index bc6f7b1b..d5741d09 100644
--- a/ranger/gui/widgets/browsercolumn.py
+++ b/ranger/gui/widgets/browsercolumn.py
@@ -95,7 +95,13 @@ class BrowserColumn(Pager):  # pylint: disable=too-many-instance-attributes
                         elif self.level == 0:
                             self.fm.thisdir.move_to_obj(clicked_file)
                             self.fm.execute_file(clicked_file)
-
+        elif self.target.is_file: ##scrolling through file preview?
+            if len(self.lines) > self.hei: ##is it longer than we can show?
+                if self.scrollbit > -1: ## have we reached the the top?
+                    self.scrollbit += direction # influence the start point
+                    if self.scrollbit < 0: #make sure we dont scroll before the file
+                        self.scrollbit = 0
+            self.need_redraw = True
         else:
             if self.level > 0 and not direction:
                 self.fm.move(right=0)
@@ -155,6 +161,7 @@ class BrowserColumn(Pager):  # pylint: disable=too-many-instance-attributes
         if target != self.old_dir:
             self.need_redraw = True
             self.old_dir = target
+            self.scrollbit = 0 # reset scroll start
 
         if target:
             target.use()
diff --git a/ranger/gui/widgets/pager.py b/ranger/gui/widgets/pager.py
index d64d4ac1..f4555cf9 100644
--- a/ranger/gui/widgets/pager.py
+++ b/ranger/gui/widgets/pager.py
@@ -29,6 +29,7 @@ class Pager(Widget):  # pylint: disable=too-many-instance-attributes
     need_clear_image = False
     need_redraw_image = False
     max_width = None
+    scrollbit = 0
 
     def __init__(self, win, embedded=False):
         Widget.__init__(self, win)
@@ -39,6 +40,7 @@ class Pager(Widget):  # pylint: disable=too-many-instance-attributes
         self.lines = []
         self.image = None
         self.image_drawn = False
+        self.scrollbit = 0
 
     def _close_source(self):
         if self.source and self.source_is_stream:
@@ -95,7 +97,7 @@ class Pager(Widget):  # pylint: disable=too-many-instance-attributes
 
             if not self.image:
                 line_gen = self._generate_lines(
-                    starty=self.scroll_begin, startx=self.startx)
+                    starty=self.scrollbit, startx=self.startx) #updated for new scroll var
 
                 for line, i in zip(line_gen, range(self.hei)):
                     self._draw_line(i, line)