diff options
-rw-r--r-- | ranger/container/commandlist.py | 4 | ||||
-rw-r--r-- | ranger/defaults/keys.py | 11 | ||||
-rw-r--r-- | ranger/gui/widgets/browserview.py | 1 | ||||
-rw-r--r-- | ranger/gui/widgets/pager.py | 34 |
4 files changed, 35 insertions, 15 deletions
diff --git a/ranger/container/commandlist.py b/ranger/container/commandlist.py index e90f298e..ecb8cd4b 100644 --- a/ranger/container/commandlist.py +++ b/ranger/container/commandlist.py @@ -71,8 +71,8 @@ class CommandList(object): Remove dummie objects in case you have to rebuild a path dictionary which already contains dummie objects. """ - for k in tuple(paths.keys()): - if paths[k] == self.dummy_object: del paths[k] + for k in tuple(self.paths.keys()): + if self.paths[k] == self.dummy_object: del self.paths[k] self.dummies_in_paths = False diff --git a/ranger/defaults/keys.py b/ranger/defaults/keys.py index 7cd92004..805287bf 100644 --- a/ranger/defaults/keys.py +++ b/ranger/defaults/keys.py @@ -234,7 +234,13 @@ def initialize_taskview_commands(command_list): def initialize_pager_commands(command_list): bind, hint = make_abbreviations(command_list) initialize_embedded_pager_commands(command_list) + bind('q', 'i', ESC, KEY_F1, lambda arg: arg.fm.ui.close_pager()) + command_list.rebuild_paths() + +def initialize_embedded_pager_commands(command_list): + system_functions(command_list) + bind, hint = make_abbreviations(command_list) bind('j', KEY_DOWN, nwrap.move(relative=1)) bind('k', KEY_DOWN, nwrap.move(relative=-1)) @@ -243,11 +249,6 @@ def initialize_pager_commands(command_list): bind('h', wdg.move_horizontal(relative=-4)) bind('l', wdg.move_horizontal(relative=4)) - command_list.rebuild_paths() - -def initialize_embedded_pager_commands(command_list): - system_functions(command_list) - bind, hint = make_abbreviations(command_list) bind('q', 'i', ESC, lambda arg: arg.fm.ui.close_embedded_pager()) command_list.rebuild_paths() diff --git a/ranger/gui/widgets/browserview.py b/ranger/gui/widgets/browserview.py index 3fae7715..642ad198 100644 --- a/ranger/gui/widgets/browserview.py +++ b/ranger/gui/widgets/browserview.py @@ -42,6 +42,7 @@ class BrowserView(Widget, DisplayableContainer): self.main_column.main_column = True self.pager = Pager(self.win, embedded=True) + self.pager.visible = False self.add_child(self.pager) def draw(self): diff --git a/ranger/gui/widgets/pager.py b/ranger/gui/widgets/pager.py index 85871431..ab6220db 100644 --- a/ranger/gui/widgets/pager.py +++ b/ranger/gui/widgets/pager.py @@ -8,6 +8,10 @@ from ranger.ext.move import move_between class Pager(Widget): source = None source_is_stream = False + + old_source = None + old_scroll_begin = 0 + old_startx = 0 def __init__(self, win, embedded=False): Widget.__init__(self, win) self.embedded = embedded @@ -27,20 +31,34 @@ class Pager(Widget): def open(self): self.scroll_begin = 0 self.startx = 0 + self.need_redraw = True def close(self): if self.source and self.source_is_stream: self.source.close() def draw(self): - line_gen = self._generate_lines( - starty=self.scroll_begin, startx=self.startx) - - for line, i in zip(line_gen, range(self.hei)): - try: - self.addstr(i, 0, line) - except TypeError: - pass + if self.old_source != self.source: + self.old_source = self.source + self.need_redraw = True + + if self.old_scroll_begin != self.scroll_begin or \ + self.old_startx != self.startx: + self.old_startx = self.startx + self.old_scroll_begin = self.scroll_begin + self.need_redraw = True + + if self.need_redraw: + self.win.erase() + line_gen = self._generate_lines( + starty=self.scroll_begin, startx=self.startx) + + for line, i in zip(line_gen, range(self.hei)): + try: + self.addstr(i, 0, line) + except TypeError: + pass + self.need_redraw = False def move(self, relative=0, absolute=None): i = self.scroll_begin |