Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann Leboulanger <asterix@lagaule.org>2009-09-21 23:22:57 +0400
committerYann Leboulanger <asterix@lagaule.org>2009-09-21 23:22:57 +0400
commit6124a60b8f1cd9da90331d890659593b0ceb9db4 (patch)
treed5e9c9215757fe9f31960d9b5ee41786f87dfa70
parentd89abc91950f0ac6b0f1291841dd7ed39fb57e8f (diff)
don't fail when we get chat / normal messages from a room_jid. Fixes #5276
-rw-r--r--src/dialogs.py7
-rw-r--r--src/roster_window.py11
-rw-r--r--src/session.py2
3 files changed, 19 insertions, 1 deletions
diff --git a/src/dialogs.py b/src/dialogs.py
index d67d85ee2..e93c52772 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -2503,6 +2503,13 @@ class SingleMessageWindow:
def on_single_message_window_destroy(self, widget):
self.instances.remove(self)
+ c = gajim.contacts.get_contact_with_highest_priority(self.account,
+ self.from_whom)
+ if c.is_groupchat() and not self.from_whom in \
+ gajim.interface.minimized_controls[self.account] and self.action == \
+ 'receive' and gajim.events.get_nb_roster_events(self.account,
+ self.from_whom, types=['chat', 'normal']) == 0:
+ gajim.interface.roster.remove_groupchat(self.from_whom, self.account)
def set_cursor_to_end(self):
end_iter = self.message_tv_buffer.get_end_iter()
diff --git a/src/roster_window.py b/src/roster_window.py
index 5e1f33221..d00361c70 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -807,6 +807,11 @@ class RosterWindow:
gajim.contacts.add_contact(account, contact)
self.add_contact(jid, account)
else:
+ if jid not in gajim.interface.minimized_controls[account]:
+ # there is a window that we can minimize
+ gc_control = gajim.interface.msg_win_mgr.get_gc_control(jid,
+ account)
+ gajim.interface.minimized_controls[account][jid] = gc_control
contact.show = show
contact.status = status
self.adjust_and_draw_contact_context(jid, account)
@@ -2919,6 +2924,12 @@ class RosterWindow:
def on_groupchat_maximized(self, widget, jid, account):
'''When a groupchat is maximised'''
if not jid in gajim.interface.minimized_controls[account]:
+ # Already opened?
+ gc_control = gajim.interface.msg_win_mgr.get_gc_control(jid, account)
+ if gc_control:
+ mw = gajim.interface.msg_win_mgr.get_window(jid, account)
+ mw.set_active_tab(gc_control)
+ mw.window.window.focus()
return
ctrl = gajim.interface.minimized_controls[account][jid]
mw = gajim.interface.msg_win_mgr.get_window(jid, account)
diff --git a/src/session.py b/src/session.py
index f23f3fe9f..8f5617106 100644
--- a/src/session.py
+++ b/src/session.py
@@ -250,7 +250,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
if self.control:
parent_win = self.control.parent_win
- if self.control == parent_win.get_active_control() and \
+ if parent_win and self.control == parent_win.get_active_control() and \
parent_win.window.has_focus:
focused = True