From b46f0f5e266c321632738ca40839759486b47a7e Mon Sep 17 00:00:00 2001 From: mathieui Date: Sat, 3 May 2014 02:27:19 +0200 Subject: Fix #2072 (only resize a tab if the size changed since the last display) --- src/core/core.py | 4 +--- src/tabs/basetabs.py | 9 ++++++++- src/tabs/conversationtab.py | 2 +- src/tabs/data_forms.py | 2 +- src/tabs/muclisttab.py | 2 +- src/tabs/muctab.py | 3 ++- src/tabs/privatetab.py | 3 +-- src/tabs/rostertab.py | 2 +- src/tabs/xmltab.py | 2 +- 9 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/core/core.py b/src/core/core.py index e38e37d1..d49845dc 100644 --- a/src/core/core.py +++ b/src/core/core.py @@ -1582,9 +1582,7 @@ class Core(object): self.resize_global_information_win() with g_lock: for tab in self.tabs: - if config.get('lazy_resize', True): - tab.need_resize = True - else: + if not config.get('lazy_resize', True): tab.resize() if self.tabs: self.full_screen_redraw() diff --git a/src/tabs/basetabs.py b/src/tabs/basetabs.py index 9759431d..84469df4 100644 --- a/src/tabs/basetabs.py +++ b/src/tabs/basetabs.py @@ -95,10 +95,10 @@ class Tab(object): self._state = 'normal' self._prev_state = None - self.need_resize = False self.key_func = {} # each tab should add their keys in there # and use them in on_input self.commands = {} # and their own commands + self._saved_size = (-1, -1) @property @@ -184,6 +184,13 @@ class Tab(object): elif not self._prev_state: self._state = 'normal' + def push_size(self): + self._saved_size = (self.height, self.width) + + @property + def need_resize(self): + return self._saved_size != (self.height, self.width) + @staticmethod def resize(scr): with g_lock: diff --git a/src/tabs/conversationtab.py b/src/tabs/conversationtab.py index 7480906b..ca6eee18 100644 --- a/src/tabs/conversationtab.py +++ b/src/tabs/conversationtab.py @@ -260,7 +260,6 @@ class ConversationTab(ChatTab): callback=callback) def resize(self): - self.need_resize = False if self.size.tab_degrade_y: display_bar = False info_win_height = 0 @@ -283,6 +282,7 @@ class ConversationTab(ChatTab): - tab_win_height, 0) self.input.resize(1, self.width, self.height - 1, 0) + self.push_size() def refresh(self): if self.need_resize: diff --git a/src/tabs/data_forms.py b/src/tabs/data_forms.py index d5d4318a..ecd28e33 100644 --- a/src/tabs/data_forms.py +++ b/src/tabs/data_forms.py @@ -64,7 +64,6 @@ class DataFormsTab(Tab): self.form_win.on_input(key) def resize(self): - self.need_resize = False self.topic_win.resize(1, self.width, 0, 0) self.form_win.resize(self.height - 3 - Tab.tab_win_height(), self.width, 1, 0) @@ -72,6 +71,7 @@ class DataFormsTab(Tab): self.help_win_dyn.resize(1, self.width, self.height - 2 - Tab.tab_win_height(), 0) self.lines = [] + self.push_size() def refresh(self): if self.need_resize: diff --git a/src/tabs/muclisttab.py b/src/tabs/muclisttab.py index c04c3ed5..3d43928a 100644 --- a/src/tabs/muclisttab.py +++ b/src/tabs/muclisttab.py @@ -77,7 +77,6 @@ class MucListTab(Tab): self.input.refresh() def resize(self): - self.need_resize = False if self.size.tab_degrade_y: info_win_height = 0 tab_win_height = 0 @@ -99,6 +98,7 @@ class MucListTab(Tab): self.listview.resize(self.height - 3 - info_win_height - tab_win_height, self.width, 1, 0) self.input.resize(1, self.width, self.height-1, 0) + self.push_size() def on_slash(self): """ diff --git a/src/tabs/muctab.py b/src/tabs/muctab.py index 201010f5..ae97e993 100644 --- a/src/tabs/muctab.py +++ b/src/tabs/muctab.py @@ -796,7 +796,7 @@ class MucTab(ChatTab): """ Resize the whole window. i.e. all its sub-windows """ - self.need_resize = False + log.debug('RESIZE PLS') if config.get("hide_user_list", False) or self.size.tab_degrade_x: display_user_list = False text_width = self.width @@ -833,6 +833,7 @@ class MucTab(ChatTab): - tab_win_height, 0) self.input.resize(1, self.width, self.height-1, 0) + self.push_size() def refresh(self): if self.need_resize: diff --git a/src/tabs/privatetab.py b/src/tabs/privatetab.py index b8699bd2..2e7c6801 100644 --- a/src/tabs/privatetab.py +++ b/src/tabs/privatetab.py @@ -237,8 +237,6 @@ class PrivateTab(ChatTab): self.parent_muc.command_info(user) def resize(self): - self.need_resize = False - if self.size.tab_degrade_y: info_win_height = 0 tab_win_height = 0 @@ -254,6 +252,7 @@ class PrivateTab(ChatTab): - tab_win_height, 0) self.input.resize(1, self.width, self.height-1, 0) + self.push_size() def refresh(self): if self.need_resize: diff --git a/src/tabs/rostertab.py b/src/tabs/rostertab.py index 81b5fcb5..34a4c553 100644 --- a/src/tabs/rostertab.py +++ b/src/tabs/rostertab.py @@ -266,7 +266,6 @@ class RosterInfoTab(Tab): self.core.command_last_activity(jid) def resize(self): - self.need_resize = False if self.size.tab_degrade_x: display_info = False roster_width = self.width @@ -302,6 +301,7 @@ class RosterInfoTab(Tab): roster_width, 0, 0) self.input.resize(1, self.width, self.height-1, 0) self.default_help_message.resize(1, self.width, self.height-1, 0) + self.push_size() def completion(self): # Check if we are entering a command (with the '/' key) diff --git a/src/tabs/xmltab.py b/src/tabs/xmltab.py index 57b55103..d56b82a8 100644 --- a/src/tabs/xmltab.py +++ b/src/tabs/xmltab.py @@ -164,7 +164,6 @@ class XMLTab(Tab): self.core.close_tab() def resize(self): - self.need_resize = False if self.size.tab_degrade_y: info_win_size = 0 tab_win_height = 0 @@ -180,6 +179,7 @@ class XMLTab(Tab): - tab_win_height, 0) self.input.resize(1, self.width, self.height-1, 0) + self.push_size() def refresh(self): if self.need_resize: -- cgit v1.2.3