Fix #2072 (only resize a tab if the size changed since the last display)

This commit is contained in:
mathieui 2014-05-03 02:27:19 +02:00
parent ea935ded09
commit b46f0f5e26
9 changed files with 17 additions and 12 deletions

View file

@ -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()

View file

@ -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:

View file

@ -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:

View file

@ -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:

View file

@ -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):
"""

View file

@ -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:

View file

@ -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:

View file

@ -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)

View file

@ -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: