diff --git a/cockatrice/src/client/tabs/tab.h b/cockatrice/src/client/tabs/tab.h index 3b5d89bb1..204a08a9f 100644 --- a/cockatrice/src/client/tabs/tab.h +++ b/cockatrice/src/client/tabs/tab.h @@ -50,7 +50,13 @@ public: } virtual QString getTabText() const = 0; virtual void retranslateUi() = 0; - virtual void closeRequest() + /** + * Sends a request to close the tab. + * Signals for cleanup should be emitted from this method instead of the destructor. + * + * @param forced whether this close request was initiated by the user or forced by the server. + */ + virtual void closeRequest(bool forced = false) { } virtual void tabActivated() diff --git a/cockatrice/src/client/tabs/tab_deck_editor.cpp b/cockatrice/src/client/tabs/tab_deck_editor.cpp index f9a7632dc..1f8e2cbff 100644 --- a/cockatrice/src/client/tabs/tab_deck_editor.cpp +++ b/cockatrice/src/client/tabs/tab_deck_editor.cpp @@ -980,7 +980,7 @@ bool TabDeckEditor::confirmClose() return true; } -void TabDeckEditor::closeRequest() +void TabDeckEditor::closeRequest(bool forced) { if (confirmClose()) deleteLater(); diff --git a/cockatrice/src/client/tabs/tab_deck_editor.h b/cockatrice/src/client/tabs/tab_deck_editor.h index dec652d4c..7318b99db 100644 --- a/cockatrice/src/client/tabs/tab_deck_editor.h +++ b/cockatrice/src/client/tabs/tab_deck_editor.h @@ -179,7 +179,7 @@ public: void updateCardInfo(CardInfoPtr _card); public slots: - void closeRequest() override; + void closeRequest(bool forced = false) override; void showPrintingSelector(); signals: void openDeckEditor(const DeckLoader *deckLoader); diff --git a/cockatrice/src/client/tabs/tab_game.cpp b/cockatrice/src/client/tabs/tab_game.cpp index 1bc73eb5c..09ca874c2 100644 --- a/cockatrice/src/client/tabs/tab_game.cpp +++ b/cockatrice/src/client/tabs/tab_game.cpp @@ -701,7 +701,7 @@ void TabGame::retranslateUi() scene->retranslateUi(); } -void TabGame::closeRequest() +void TabGame::closeRequest(bool forced) { actLeaveGame(); } diff --git a/cockatrice/src/client/tabs/tab_game.h b/cockatrice/src/client/tabs/tab_game.h index 5de957474..6c1fa4eeb 100644 --- a/cockatrice/src/client/tabs/tab_game.h +++ b/cockatrice/src/client/tabs/tab_game.h @@ -278,7 +278,7 @@ public: ~TabGame() override; void retranslateUi() override; void updatePlayerListDockTitle(); - void closeRequest() override; + void closeRequest(bool forced = false) override; const QMap &getPlayers() const { return players; diff --git a/cockatrice/src/client/tabs/tab_message.cpp b/cockatrice/src/client/tabs/tab_message.cpp index b39126083..26fe692d3 100644 --- a/cockatrice/src/client/tabs/tab_message.cpp +++ b/cockatrice/src/client/tabs/tab_message.cpp @@ -86,7 +86,7 @@ QString TabMessage::getTabText() const return tr("%1 - Private chat").arg(QString::fromStdString(otherUserInfo->name())); } -void TabMessage::closeRequest() +void TabMessage::closeRequest(bool forced) { actLeave(); } diff --git a/cockatrice/src/client/tabs/tab_message.h b/cockatrice/src/client/tabs/tab_message.h index ede73d497..d68bcaf0d 100644 --- a/cockatrice/src/client/tabs/tab_message.h +++ b/cockatrice/src/client/tabs/tab_message.h @@ -41,7 +41,7 @@ public: const ServerInfo_User &_otherUserInfo); ~TabMessage() override; void retranslateUi() override; - void closeRequest() override; + void closeRequest(bool forced = false) override; void tabActivated() override; QString getUserName() const; QString getTabText() const override; diff --git a/cockatrice/src/client/tabs/tab_room.cpp b/cockatrice/src/client/tabs/tab_room.cpp index a76b9851a..6fee94d21 100644 --- a/cockatrice/src/client/tabs/tab_room.cpp +++ b/cockatrice/src/client/tabs/tab_room.cpp @@ -175,7 +175,7 @@ void TabRoom::actShowPopup(const QString &message) } } -void TabRoom::closeRequest() +void TabRoom::closeRequest(bool forced) { actLeaveRoom(); } diff --git a/cockatrice/src/client/tabs/tab_room.h b/cockatrice/src/client/tabs/tab_room.h index a172d8277..5d263766a 100644 --- a/cockatrice/src/client/tabs/tab_room.h +++ b/cockatrice/src/client/tabs/tab_room.h @@ -93,7 +93,7 @@ public: const ServerInfo_Room &info); ~TabRoom() override; void retranslateUi() override; - void closeRequest() override; + void closeRequest(bool forced = false) override; void tabActivated() override; void processRoomEvent(const RoomEvent &event); int getRoomId() const diff --git a/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp b/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp index 831e7ed97..71cfb7b7c 100644 --- a/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp +++ b/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp @@ -58,7 +58,7 @@ TabDeckStorageVisual::TabDeckStorageVisual(TabSupervisor *_tabSupervisor, Abstra retranslateUi(); } -void TabDeckStorageVisual::closeRequest() +void TabDeckStorageVisual::closeRequest(bool forced) { this->close(); } diff --git a/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.h b/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.h index 4d8538826..689061be9 100644 --- a/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.h +++ b/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.h @@ -33,7 +33,7 @@ public: } public slots: void cardUpdateFinished(int exitCode, QProcess::ExitStatus exitStatus); - void closeRequest() override; + void closeRequest(bool forced = false) override; void actOpenLocalDeck(QMouseEvent *event, DeckPreviewCardPictureWidget *instance); void actDeleteLocalDeck(); signals: