diff --git a/src/groupchat_control.py b/src/groupchat_control.py
index e9a028080e3cdfb1445d4f8051d9174dbd0b135e..5f2d6c6e624545b0af674d037769986a466a2a28 100644
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -2069,14 +2069,11 @@ class GroupchatControl(ChatControlBase):
 		gc_c = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick)
 		nick_jid = gc_c.get_full_jid()
 
-		win = gajim.interface.msg_win_mgr.get_window(nick_jid, self.account)
-		if not win:
-			gajim.interface.new_private_chat(gc_c, self.account)
-			win = gajim.interface.msg_win_mgr.get_window(nick_jid, self.account)
+		ctrl = gajim.interface.msg_win_mgr.get_control(nick_jid, self.account)
+		if not ctrl:
+			ctrl = gajim.interface.new_private_chat(gc_c, self.account)
 
-		ctrl = win.get_control(nick_jid, self.account)
-
-		win.set_active_tab(ctrl)
+		ctrl.parent_win.set_active_tab(ctrl)
 
 		return ctrl
 
diff --git a/src/session.py b/src/session.py
index 56193145d176e6ab5bfa6a27469927660db87431..481350c99d316123801eb57f546efe8e4cfbd282 100644
--- a/src/session.py
+++ b/src/session.py
@@ -175,8 +175,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
 			jid_of_control = full_jid_with_resource
 
 		if not self.control:
-			# look for an existing chat control without a session
-			ctrl = gajim.interface.msg_win_mgr.get_control(jid, self.conn.name)
+			ctrl = gajim.interface.msg_win_mgr.get_control(jid_of_control, self.conn.name)
 			if ctrl:
 				self.control = ctrl
 				self.control.set_session(self)