diff options
author | hut <hut@lepus.uberspace.de> | 2016-08-21 23:21:07 +0200 |
---|---|---|
committer | hut <hut@lepus.uberspace.de> | 2016-08-21 23:21:07 +0200 |
commit | 40d6cf586b0c634c542f9808247aa90817ca3786 (patch) | |
tree | 139b8ba6f73ce68ba0b3bdd397a3fddac3bd2c37 | |
parent | 17e9b4299373ebef70f7ad4a739512ae9d44d975 (diff) | |
parent | 5dd709c9dcc6255bede0e419f226cf4bddecc2c9 (diff) | |
download | ranger-40d6cf586b0c634c542f9808247aa90817ca3786.tar.gz |
Merge branch 'fix/cursor-on-viewmode-change' of https://github.com/Enzime/ranger
-rw-r--r-- | ranger/gui/displayable.py | 6 | ||||
-rw-r--r-- | ranger/gui/ui.py | 14 |
2 files changed, 13 insertions, 7 deletions
diff --git a/ranger/gui/displayable.py b/ranger/gui/displayable.py index 7b5aa954..62eb5300 100644 --- a/ranger/gui/displayable.py +++ b/ranger/gui/displayable.py @@ -211,6 +211,7 @@ class DisplayableContainer(Displayable): New methods: add_child(object) -- add the object to the container. + replace_child(old_obj, new_obj) -- replaces old object with new object. remove_child(object) -- remove the object from the container. New attributes: @@ -290,6 +291,11 @@ class DisplayableContainer(Displayable): self.container.append(obj) obj.parent = self + def replace_child(self, old_obj, new_obj): + """Replace the old object with the new instance in the container.""" + self.container[self.container.index(old_obj)] = new_obj + new_obj.parent = self + def remove_child(self, obj): """Remove the object from the container.""" try: diff --git a/ranger/gui/ui.py b/ranger/gui/ui.py index 4c302e00..f10bc0f2 100644 --- a/ranger/gui/ui.py +++ b/ranger/gui/ui.py @@ -437,18 +437,18 @@ class UI(DisplayableContainer): if value in self.ALLOWED_VIEWMODES: if self._viewmode != value: self._viewmode = value - resize = False + new_browser = self._viewmode_to_class(value)(self.win) + if hasattr(self, 'browser'): old_size = self.browser.y, self.browser.x, self.browser.hei, self.browser.wid - self.remove_child(self.browser) + self.replace_child(self.browser, new_browser) self.browser.destroy() - resize = True + new_browser.resize(*old_size) + else: + self.add_child(new_browser) - self.browser = self._viewmode_to_class(value)(self.win) + self.browser = new_browser self.redraw_window() - self.add_child(self.browser) - if resize: - self.browser.resize(*old_size) else: raise ValueError("Attempting to set invalid viewmode `%s`, should " "be one of `%s`." % (value, "`, `".join(self.ALLOWED_VIEWMODES))) |