diff --git a/src/converse-rosterview.js b/src/converse-rosterview.js index 240b343c8..1c50550b3 100644 --- a/src/converse-rosterview.js +++ b/src/converse-rosterview.js @@ -690,7 +690,7 @@ openChat: function (ev) { if (ev && ev.preventDefault) { ev.preventDefault(); } this.model.save({'num_unread': 0}); - return _converse.chatboxviews.showChat(this.model.attributes); + return _converse.chatboxviews.showChat(this.model.attributes, true); }, removeContact: function (ev) { diff --git a/src/converse-singleton.js b/src/converse-singleton.js index 3180731da..744c2cafb 100644 --- a/src/converse-singleton.js +++ b/src/converse-singleton.js @@ -51,19 +51,14 @@ }, ChatBoxViews: { - showChat: function (attrs) { + showChat: function (attrs, force) { /* We only have one chat visible at any one * time. So before opening a chat, we make sure all other * chats are hidden. */ var _converse = this.__super__._converse; - var chatbox = this.getChatBox(attrs); - if (_.isUndefined(chatbox)) { - // We don't show new chat boxes, but instead open them - // in the background. - attrs.hidden = true; - chatbox = this.getChatBox(attrs, true); - } else if (!attrs.hidden && _converse.connection.authenticated) { + var chatbox = this.getChatBox(attrs, true); + if ((force || !attrs.hidden) && _converse.connection.authenticated) { _.each(_converse.chatboxviews.xget(chatbox.get('id')), function (view) { if (view.model.get('id') === 'controlbox') {