diff --git a/plugins/gtkgui/gtkgui.glade b/plugins/gtkgui/gtkgui.glade index ca6ba0aed..138110e01 100644 --- a/plugins/gtkgui/gtkgui.glade +++ b/plugins/gtkgui/gtkgui.glade @@ -7010,9 +7010,9 @@ Custom False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST - + diff --git a/plugins/gtkgui/gtkgui.py b/plugins/gtkgui/gtkgui.py index 90b987253..f681f4d85 100644 --- a/plugins/gtkgui/gtkgui.py +++ b/plugins/gtkgui/gtkgui.py @@ -620,8 +620,14 @@ class tabbed_chat_window: self.show_title() class Groupchat_window: - def on_groupchat_window_destroy(self, widget): + def on_groupchat_window_delete_event(self, widget): """close window""" + for room_jid in self.xmls: + if time.time() - self.last_message_time[room_jid] < 2: + dialog = Confirmation_dialog(_('You received a message in the room %s in the last two secondes.\nDo you still want to close this window ?') % \ + room_jid.split('@')[0]) + if dialog.get_response() != gtk.RESPONSE_YES: + return True #stop the propagation of the event for room_jid in self.xmls: self.plugin.send('GC_STATUS', self.account, (self.nicks[room_jid], \ room_jid, 'offline', 'offline')) @@ -914,6 +920,7 @@ class Groupchat_window: tag = 'incoming_bold' else: tag = 'incoming' + self.last_message_time[room_jid] = time.time() if text.startswith('/me'): ttext = contact + text[3:] + '\n' @@ -1093,6 +1100,11 @@ class Groupchat_window: self.xmls[room_jid].get_widget('message_textview').grab_focus() def remove_tab(self, room_jid): + if time.time() - self.last_message_time[room_jid] < 2: + dialog = Confirmation_dialog(_('You received a message in the room %s in the last two secondes.\nDo you still want to close this tab ?') % \ + room_jid.split('@')[0]) + if dialog.get_response() != gtk.RESPONSE_YES: + return if len(self.xmls) == 1: self.window.destroy() else: @@ -1102,6 +1114,7 @@ class Groupchat_window: del self.plugin.windows[self.account]['gc'][room_jid] del self.nicks[room_jid] del self.nb_unread[room_jid] + del self.last_message_time[room_jid] del self.xmls[room_jid] del self.tagIn[room_jid] del self.tagInBold[room_jid] @@ -1115,6 +1128,7 @@ class Groupchat_window: def new_group(self, room_jid, nick): self.nb_unread[room_jid] = 0 + self.last_message_time[room_jid] = 0 self.nicks[room_jid] = nick self.subjects[room_jid] = '' self.xmls[room_jid] = gtk.glade.XML(GTKGUI_GLADE, 'group_vbox', APP) @@ -1235,13 +1249,14 @@ class Groupchat_window: self.tagStatus = {} self.nicks = {} self.nb_unread = {} + self.last_message_time = {} self.list_treeview = {} self.subjects = {} self.window = self.xml.get_widget('groupchat_window') self.new_group(room_jid, nick) self.show_title() - self.xml.signal_connect('on_groupchat_window_destroy', \ - self.on_groupchat_window_destroy) + self.xml.signal_connect('on_groupchat_window_delete_event', \ + self.on_groupchat_window_delete_event) self.xml.signal_connect('on_groupchat_window_focus_in_event', \ self.on_groupchat_window_focus_in_event) self.xml.signal_connect('on_groupchat_window_key_press_event', \