From fdcf75ae5925912e3fdc858840439eced3583a72 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Thu, 23 Apr 2009 07:26:08 +0000 Subject: [PATCH] minimize groupchats when closing several windows at the same time. Fixes #4987 --- src/chat_control.py | 3 +++ src/groupchat_control.py | 12 ++++++++---- src/message_control.py | 5 +++++ src/message_window.py | 3 +++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/chat_control.py b/src/chat_control.py index 0737143b1..392aea678 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -2327,6 +2327,9 @@ class ChatControl(ChatControlBase): self.conv_textview.del_handlers() self.msg_textview.destroy() + def minimizable(self): + return False + def safe_shutdown(self): return False diff --git a/src/groupchat_control.py b/src/groupchat_control.py index 2481408e8..7d56130d5 100644 --- a/src/groupchat_control.py +++ b/src/groupchat_control.py @@ -1742,6 +1742,12 @@ class GroupchatControl(ChatControlBase): proposed_nick, is_modal=False, ok_handler=on_ok, 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'): # Minimize it 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) def safe_shutdown(self): - if self.contact.jid in gajim.config.get_per('accounts', self.account, - 'minimized_gc').split(' '): + if self.minimizable(): return True includes = gajim.config.get('confirm_close_muc_rooms').split(' ') excludes = gajim.config.get('noconfirm_close_muc_rooms').split(' ') @@ -1812,8 +1817,7 @@ class GroupchatControl(ChatControlBase): return True def allow_shutdown(self, method, on_yes, on_no, on_minimize): - if self.contact.jid in gajim.config.get_per('accounts', self.account, - 'minimized_gc').split(' '): + if self.minimizable(): on_minimize(self) return if method == self.parent_win.CLOSE_ESC: diff --git a/src/message_control.py b/src/message_control.py index de39a7af5..4c9cc7aa3 100644 --- a/src/message_control.py +++ b/src/message_control.py @@ -71,6 +71,11 @@ class MessageControl: or inactive (state is False)''' 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): '''Called to check if control can be closed without loosing data. returns True if control can be closed safely else False''' diff --git a/src/message_window.py b/src/message_window.py index 9a5b74a55..eceb90032 100644 --- a/src/message_window.py +++ b/src/message_window.py @@ -206,6 +206,9 @@ class MessageWindow(object): if checked: gajim.config.set('confirm_close_multiple_tabs', False) self.dont_warn_on_delete = True + for ctrl in self.controls(): + if ctrl.minimizable(): + ctrl.minimize() win.destroy() if not gajim.config.get('confirm_close_multiple_tabs'):