Fix #2341 (/message <bare/resource> doesn’t open a new tab…)
If a tab with the given fulljid is not found, then a new tab will be opened, even if we are in discussion with the bare jid.
This commit is contained in:
parent
cbcac03510
commit
b249dad73d
1 changed files with 7 additions and 4 deletions
11
src/core.py
11
src/core.py
|
@ -762,16 +762,19 @@ class Core(object):
|
||||||
self.current_tab_nb = self.current_tab_nb
|
self.current_tab_nb = self.current_tab_nb
|
||||||
return self.tabs[self.current_tab_nb]
|
return self.tabs[self.current_tab_nb]
|
||||||
|
|
||||||
def get_conversation_by_jid(self, jid, create=True):
|
def get_conversation_by_jid(self, jid, create=True, fallback_barejid=True):
|
||||||
"""
|
"""
|
||||||
From a JID, get the tab containing the conversation with it.
|
From a JID, get the tab containing the conversation with it.
|
||||||
If none already exist, and create is "True", we create it
|
If none already exist, and create is "True", we create it
|
||||||
and return it. Otherwise, we return None
|
and return it. Otherwise, we return None.
|
||||||
|
|
||||||
|
If fallback_barejid is True, then this method will seek other
|
||||||
|
tabs with the same barejid, instead of searching only by fulljid.
|
||||||
"""
|
"""
|
||||||
jid = safeJID(jid)
|
jid = safeJID(jid)
|
||||||
# We first check if we have a static conversation opened with this precise resource
|
# We first check if we have a static conversation opened with this precise resource
|
||||||
conversation = self.get_tab_by_name(jid.full, tabs.StaticConversationTab)
|
conversation = self.get_tab_by_name(jid.full, tabs.StaticConversationTab)
|
||||||
if not conversation:
|
if not conversation and fallback_barejid:
|
||||||
# If not, we search for a conversation with the bare jid
|
# If not, we search for a conversation with the bare jid
|
||||||
conversation = self.get_tab_by_name(jid.bare, tabs.DynamicConversationTab)
|
conversation = self.get_tab_by_name(jid.bare, tabs.DynamicConversationTab)
|
||||||
if not conversation:
|
if not conversation:
|
||||||
|
@ -2524,7 +2527,7 @@ class Core(object):
|
||||||
jid = safeJID(args[0])
|
jid = safeJID(args[0])
|
||||||
if not jid.user and not jid.domain and not jid.resource:
|
if not jid.user and not jid.domain and not jid.resource:
|
||||||
return self.information('Invalid JID.', 'Error')
|
return self.information('Invalid JID.', 'Error')
|
||||||
tab = self.get_conversation_by_jid(jid.full, False)
|
tab = self.get_conversation_by_jid(jid.full, False, fallback_barejid=False)
|
||||||
if not tab:
|
if not tab:
|
||||||
tab = self.open_conversation_window(jid.full, focus=True)
|
tab = self.open_conversation_window(jid.full, focus=True)
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue