fix resizing of the MUC occupant treeview when we resize chat window. Fixes #5433

This commit is contained in:
Yann Leboulanger 2009-11-20 22:09:05 +01:00
parent bafca7579f
commit 8bd359dc30
1 changed files with 15 additions and 2 deletions

View File

@ -317,6 +317,7 @@ class GroupchatControl(ChatControlBase):
id_ = self.list_treeview.connect('style-set',
self.on_list_treeview_style_set)
self.handlers[id_] = self.list_treeview
self.resize_from_another_muc = False
# we want to know when the the widget resizes, because that is
# an indication that the hpaned has moved...
# FIXME: Find a better indicator that the hpaned has moved.
@ -446,17 +447,29 @@ class GroupchatControl(ChatControlBase):
menu.show_all()
def resize_occupant_treeview(self, position):
self.resize_from_another_muc = True
self.hpaned.set_position(position)
def reset_flag():
self.resize_from_another_muc = False
# Reset the flag when everything will be redrawn, and in particular when
# on_treeview_size_allocate will have been called.
gobject.idle_add(reset_flag)
def on_treeview_size_allocate(self, widget, allocation):
'''The MUC treeview has resized. Move the hpaned in all tabs to match'''
if self.resize_from_another_muc:
# Don't send the event to other MUC
return
hpaned_position = self.hpaned.get_position()
for account in gajim.gc_connected:
for room_jid in [i for i in gajim.gc_connected[account] if \
gajim.gc_connected[account][i]]:
gajim.gc_connected[account][i] and i != self.room_jid]:
ctrl = gajim.interface.msg_win_mgr.get_gc_control(room_jid, account)
if not ctrl:
ctrl = gajim.interface.minimized_controls[account][room_jid]
if ctrl:
ctrl.hpaned.set_position(hpaned_position)
ctrl.resize_occupant_treeview(hpaned_position)
def iter_contact_rows(self):
'''iterate over all contact rows in the tree model'''