diff --git a/cockatrice/src/tab_server.cpp b/cockatrice/src/tab_server.cpp index 55972704..21b88e5b 100644 --- a/cockatrice/src/tab_server.cpp +++ b/cockatrice/src/tab_server.cpp @@ -85,13 +85,14 @@ void RoomSelector::processListRoomsEvent(Event_ListRooms *event) twi->setTextAlignment(3, Qt::AlignRight); roomList->addTopLevelItem(twi); if (room->getAutoJoin()) - joinRoom(room->getRoomId()); + joinRoom(room->getRoomId(), false); } } -void RoomSelector::joinRoom(int id) +void RoomSelector::joinRoom(int id, bool setCurrent) { Command_JoinRoom *command = new Command_JoinRoom(id); + command->setExtraData(setCurrent); connect(command, SIGNAL(finished(ProtocolResponse *)), this, SLOT(joinFinished(ProtocolResponse *))); client->sendCommand(command); } @@ -102,7 +103,7 @@ void RoomSelector::joinClicked() if (!twi) return; - joinRoom(twi->data(0, Qt::UserRole).toInt()); + joinRoom(twi->data(0, Qt::UserRole).toInt(), true); } void RoomSelector::joinFinished(ProtocolResponse *r) @@ -113,7 +114,7 @@ void RoomSelector::joinFinished(ProtocolResponse *r) if (!resp) return; - emit roomJoined(resp->getRoomInfo()); + emit roomJoined(resp->getRoomInfo(), static_cast(sender())->getExtraData().toBool()); } UserInfoBox::UserInfoBox(ServerInfo_User *userInfo, QWidget *parent) @@ -185,7 +186,7 @@ TabServer::TabServer(AbstractClient *_client, ServerInfo_User *userInfo, QWidget userInfoBox = new UserInfoBox(userInfo); userList = new UserList(true); - connect(roomSelector, SIGNAL(roomJoined(ServerInfo_Room *)), this, SIGNAL(roomJoined(ServerInfo_Room *))); + connect(roomSelector, SIGNAL(roomJoined(ServerInfo_Room *, bool)), this, SIGNAL(roomJoined(ServerInfo_Room *, bool))); connect(userList, SIGNAL(openMessageDialog(const QString &, bool)), this, SIGNAL(openMessageDialog(const QString &, bool))); connect(client, SIGNAL(userJoinedEventReceived(Event_UserJoined *)), this, SLOT(processUserJoinedEvent(Event_UserJoined *))); diff --git a/cockatrice/src/tab_server.h b/cockatrice/src/tab_server.h index 5767f433..de5e384e 100644 --- a/cockatrice/src/tab_server.h +++ b/cockatrice/src/tab_server.h @@ -27,13 +27,13 @@ private: QPushButton *joinButton; AbstractClient *client; - void joinRoom(int id); + void joinRoom(int id, bool setCurrent); private slots: void processListRoomsEvent(Event_ListRooms *event); void joinClicked(); void joinFinished(ProtocolResponse *resp); signals: - void roomJoined(ServerInfo_Room *info); + void roomJoined(ServerInfo_Room *info, bool setCurrent); public: RoomSelector(AbstractClient *_client, QWidget *parent = 0); void retranslateUi(); @@ -52,7 +52,7 @@ public: class TabServer : public Tab { Q_OBJECT signals: - void roomJoined(ServerInfo_Room *info); + void roomJoined(ServerInfo_Room *info, bool setCurrent); void openMessageDialog(const QString &userName, bool focus); void userLeft(const QString &userName); private slots: diff --git a/cockatrice/src/tab_supervisor.cpp b/cockatrice/src/tab_supervisor.cpp index 50794a83..148409ee 100644 --- a/cockatrice/src/tab_supervisor.cpp +++ b/cockatrice/src/tab_supervisor.cpp @@ -63,7 +63,7 @@ void TabSupervisor::start(AbstractClient *_client, ServerInfo_User *userInfo) connect(client, SIGNAL(maxPingTime(int, int)), this, SLOT(updatePingTime(int, int))); tabServer = new TabServer(client, userInfo); - connect(tabServer, SIGNAL(roomJoined(ServerInfo_Room *)), this, SLOT(addRoomTab(ServerInfo_Room *))); + connect(tabServer, SIGNAL(roomJoined(ServerInfo_Room *, bool)), this, SLOT(addRoomTab(ServerInfo_Room *, bool))); connect(tabServer, SIGNAL(openMessageDialog(const QString &, bool)), this, SLOT(addMessageTab(const QString &, bool))); connect(tabServer, SIGNAL(userLeft(const QString &)), this, SLOT(processUserLeft(const QString &))); myAddTab(tabServer); @@ -162,13 +162,14 @@ void TabSupervisor::gameLeft(TabGame *tab) stop(); } -void TabSupervisor::addRoomTab(ServerInfo_Room *info) +void TabSupervisor::addRoomTab(ServerInfo_Room *info, bool setCurrent) { TabRoom *tab = new TabRoom(client, userName, info); connect(tab, SIGNAL(roomClosing(TabRoom *)), this, SLOT(roomLeft(TabRoom *))); myAddTab(tab); roomTabs.insert(info->getRoomId(), tab); - setCurrentWidget(tab); + if (setCurrent) + setCurrentWidget(tab); } void TabSupervisor::roomLeft(TabRoom *tab) diff --git a/cockatrice/src/tab_supervisor.h b/cockatrice/src/tab_supervisor.h index e7925968..413d37be 100644 --- a/cockatrice/src/tab_supervisor.h +++ b/cockatrice/src/tab_supervisor.h @@ -49,7 +49,7 @@ private slots: void gameJoined(Event_GameJoined *event); void localGameJoined(Event_GameJoined *event); void gameLeft(TabGame *tab); - void addRoomTab(ServerInfo_Room *info); + void addRoomTab(ServerInfo_Room *info, bool setCurrent); void roomLeft(TabRoom *tab); TabMessage *addMessageTab(const QString &userName, bool focus); void processUserLeft(const QString &userName);