diff --git a/src/actionsmodel.cpp b/src/actionsmodel.cpp index deaece761..b4e3c0f38 100644 --- a/src/actionsmodel.cpp +++ b/src/actionsmodel.cpp @@ -6,6 +6,7 @@ #include "controller.h" #include "neochatroom.h" #include "neochatuser.h" +#include "roommanager.h" #include #include @@ -193,8 +194,9 @@ QVector actions{ i18nc("'' does not look like a room id or alias.", "'%1' does not look like a room id or alias.", text)); return QString(); } - if (Controller::instance().activeConnection()->room(text) || Controller::instance().activeConnection()->roomByAlias(text)) { - Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("You are already in room .", "You are already in room %1.", text)); + auto targetRoom = text.startsWith(QLatin1Char('!')) ? room->connection()->room(text) : room->connection()->roomByAlias(text); + if (targetRoom) { + RoomManager::instance().enterRoom(dynamic_cast(targetRoom)); return QString(); } Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("Joining room .", "Joining room %1.", text));