minimize groupchats when closing several windows at the same time. Fixes #4987

This commit is contained in:
Yann Leboulanger 2009-04-23 07:26:08 +00:00
parent 0e76e17bcb
commit fdcf75ae59
4 changed files with 19 additions and 4 deletions

View file

@ -2327,6 +2327,9 @@ class ChatControl(ChatControlBase):
self.conv_textview.del_handlers() self.conv_textview.del_handlers()
self.msg_textview.destroy() self.msg_textview.destroy()
def minimizable(self):
return False
def safe_shutdown(self): def safe_shutdown(self):
return False return False

View file

@ -1742,6 +1742,12 @@ class GroupchatControl(ChatControlBase):
proposed_nick, is_modal=False, ok_handler=on_ok, proposed_nick, is_modal=False, ok_handler=on_ok,
cancel_handler=on_cancel) cancel_handler=on_cancel)
def minimizable(self):
if self.contact.jid in gajim.config.get_per('accounts', self.account,
'minimized_gc').split(' '):
return True
return False
def minimize(self, status='offline'): def minimize(self, status='offline'):
# Minimize it # Minimize it
win = gajim.interface.msg_win_mgr.get_window(self.contact.jid, win = gajim.interface.msg_win_mgr.get_window(self.contact.jid,
@ -1799,8 +1805,7 @@ class GroupchatControl(ChatControlBase):
gajim.events.remove_events(self.account, self.room_jid) gajim.events.remove_events(self.account, self.room_jid)
def safe_shutdown(self): def safe_shutdown(self):
if self.contact.jid in gajim.config.get_per('accounts', self.account, if self.minimizable():
'minimized_gc').split(' '):
return True return True
includes = gajim.config.get('confirm_close_muc_rooms').split(' ') includes = gajim.config.get('confirm_close_muc_rooms').split(' ')
excludes = gajim.config.get('noconfirm_close_muc_rooms').split(' ') excludes = gajim.config.get('noconfirm_close_muc_rooms').split(' ')
@ -1812,8 +1817,7 @@ class GroupchatControl(ChatControlBase):
return True return True
def allow_shutdown(self, method, on_yes, on_no, on_minimize): def allow_shutdown(self, method, on_yes, on_no, on_minimize):
if self.contact.jid in gajim.config.get_per('accounts', self.account, if self.minimizable():
'minimized_gc').split(' '):
on_minimize(self) on_minimize(self)
return return
if method == self.parent_win.CLOSE_ESC: if method == self.parent_win.CLOSE_ESC:

View file

@ -71,6 +71,11 @@ class MessageControl:
or inactive (state is False)''' or inactive (state is False)'''
pass # Derived classes MUST implement this method pass # Derived classes MUST implement this method
def minimizable(self):
'''Called to check if control can be minimized'''
# NOTE: Derived classes MAY implement this
return False
def safe_shutdown(self): def safe_shutdown(self):
'''Called to check if control can be closed without loosing data. '''Called to check if control can be closed without loosing data.
returns True if control can be closed safely else False''' returns True if control can be closed safely else False'''

View file

@ -206,6 +206,9 @@ class MessageWindow(object):
if checked: if checked:
gajim.config.set('confirm_close_multiple_tabs', False) gajim.config.set('confirm_close_multiple_tabs', False)
self.dont_warn_on_delete = True self.dont_warn_on_delete = True
for ctrl in self.controls():
if ctrl.minimizable():
ctrl.minimize()
win.destroy() win.destroy()
if not gajim.config.get('confirm_close_multiple_tabs'): if not gajim.config.get('confirm_close_multiple_tabs'):