disconnect session from chat window only when the highest remote contact changes
This commit is contained in:
parent
4d101181b1
commit
010afb1176
1 changed files with 12 additions and 15 deletions
25
src/gajim.py
25
src/gajim.py
|
@ -628,6 +628,9 @@ class Interface:
|
||||||
else:
|
else:
|
||||||
ji = jid
|
ji = jid
|
||||||
|
|
||||||
|
highest = gajim.contacts.get_contact_with_highest_priority(account, jid)
|
||||||
|
was_highest = (highest and highest.resource == resource)
|
||||||
|
|
||||||
# Update contact
|
# Update contact
|
||||||
jid_list = gajim.contacts.get_jid_list(account)
|
jid_list = gajim.contacts.get_jid_list(account)
|
||||||
if ji in jid_list or jid == gajim.get_jid_from_account(account):
|
if ji in jid_list or jid == gajim.get_jid_from_account(account):
|
||||||
|
@ -640,20 +643,6 @@ class Interface:
|
||||||
contact1 = c
|
contact1 = c
|
||||||
break
|
break
|
||||||
|
|
||||||
highest = gajim.contacts.get_highest_prio_contact_from_contacts(lcontact)
|
|
||||||
if not highest or \
|
|
||||||
(highest.priority < priority and highest.resource != resource) or \
|
|
||||||
(highest.resource == resource and highest.priority > priority):
|
|
||||||
# either this contact is the new highest priority contact or it was the
|
|
||||||
# highest and dropped in priority (so may no longer be the highest)
|
|
||||||
|
|
||||||
# disconnect sessions from this contact's chat controls so we
|
|
||||||
# don't have to open a new tab if a new session comes in
|
|
||||||
|
|
||||||
ctrl = self.msg_win_mgr.get_control(jid, account)
|
|
||||||
if ctrl:
|
|
||||||
ctrl.set_session(None)
|
|
||||||
|
|
||||||
if contact1:
|
if contact1:
|
||||||
if contact1.show in statuss:
|
if contact1.show in statuss:
|
||||||
old_show = statuss.index(contact1.show)
|
old_show = statuss.index(contact1.show)
|
||||||
|
@ -781,6 +770,14 @@ class Interface:
|
||||||
self.handle_event_gc_notify(account, (jid, array[1], status_message,
|
self.handle_event_gc_notify(account, (jid, array[1], status_message,
|
||||||
array[3], None, None, None, None, None, [], None, None))
|
array[3], None, None, None, None, None, [], None, None))
|
||||||
|
|
||||||
|
highest = gajim.contacts.get_contact_with_highest_priority(account, jid)
|
||||||
|
is_highest = (highest and highest.resource == resource)
|
||||||
|
|
||||||
|
if was_highest and not is_highest:
|
||||||
|
ctrl = self.msg_win_mgr.get_control(jid, account)
|
||||||
|
if ctrl:
|
||||||
|
ctrl.set_session(None)
|
||||||
|
|
||||||
def handle_event_msgerror(self, account, array):
|
def handle_event_msgerror(self, account, array):
|
||||||
#'MSGERROR' (account, (jid, error_code, error_msg, msg, time[, session]))
|
#'MSGERROR' (account, (jid, error_code, error_msg, msg, time[, session]))
|
||||||
full_jid_with_resource = array[0]
|
full_jid_with_resource = array[0]
|
||||||
|
|
Loading…
Add table
Reference in a new issue