summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormathieui <mathieui@mathieui.net>2014-05-03 02:27:19 +0200
committermathieui <mathieui@mathieui.net>2014-05-03 02:27:19 +0200
commitb46f0f5e266c321632738ca40839759486b47a7e (patch)
tree83ecb7a530dfc6bf9eb5af45b75407bf8d142f4d
parentea935ded091571ffec14fc020176c6a03f269efc (diff)
downloadpoezio-b46f0f5e266c321632738ca40839759486b47a7e.tar.gz
poezio-b46f0f5e266c321632738ca40839759486b47a7e.tar.bz2
poezio-b46f0f5e266c321632738ca40839759486b47a7e.tar.xz
poezio-b46f0f5e266c321632738ca40839759486b47a7e.zip
Fix #2072 (only resize a tab if the size changed since the last display)
-rw-r--r--src/core/core.py4
-rw-r--r--src/tabs/basetabs.py9
-rw-r--r--src/tabs/conversationtab.py2
-rw-r--r--src/tabs/data_forms.py2
-rw-r--r--src/tabs/muclisttab.py2
-rw-r--r--src/tabs/muctab.py3
-rw-r--r--src/tabs/privatetab.py3
-rw-r--r--src/tabs/rostertab.py2
-rw-r--r--src/tabs/xmltab.py2
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: