diff --git a/imports/NeoChat/Page/RoomPage.qml b/imports/NeoChat/Page/RoomPage.qml index 3da87a2ac..38806ec2c 100644 --- a/imports/NeoChat/Page/RoomPage.qml +++ b/imports/NeoChat/Page/RoomPage.qml @@ -28,6 +28,17 @@ Kirigami.ScrollablePage { title: currentRoom.displayName + Connections { + target: RoomManager + function onCurrentRoomChanged() { + if(!RoomManager.currentRoom) { + if(pageStack.lastItem == page) { + pageStack.pop() + } + } + } + } + signal switchRoomUp() signal switchRoomDown() diff --git a/src/roommanager.cpp b/src/roommanager.cpp index 4ffd7b64f..aa2924296 100644 --- a/src/roommanager.cpp +++ b/src/roommanager.cpp @@ -215,18 +215,14 @@ void RoomManager::reset() void RoomManager::leaveRoom(NeoChatRoom *room) { - // close the room and open the last open room if it exist - // other open welcome page. + if(m_lastCurrentRoom && room->id() == m_lastCurrentRoom->id()) { + m_lastCurrentRoom = nullptr; + } if (m_currentRoom && m_currentRoom->id() == room->id()) { - if (!m_lastCurrentRoom) { - Q_EMIT pushWelcomePage(); - return; - } m_currentRoom = m_lastCurrentRoom; m_lastCurrentRoom = nullptr; Q_EMIT currentRoomChanged(); - Q_EMIT replaceRoom(m_lastCurrentRoom, QString()); } room->forget();