diff --git a/cockatrice/src/client/tabs/tab.cpp b/cockatrice/src/client/tabs/tab.cpp index 80f0ffc9a..84fdf2924 100644 --- a/cockatrice/src/client/tabs/tab.cpp +++ b/cockatrice/src/client/tabs/tab.cpp @@ -1,13 +1,14 @@ #include "tab.h" #include "../ui/widgets/cards/card_info_display_widget.h" +#include "./tab_supervisor.h" #include #include #include -Tab::Tab(TabSupervisor *_tabSupervisor, QWidget *parent) - : QMainWindow(parent), tabSupervisor(_tabSupervisor), contentsChanged(false), infoPopup(0) +Tab::Tab(TabSupervisor *_tabSupervisor) + : QMainWindow(_tabSupervisor), tabSupervisor(_tabSupervisor), contentsChanged(false), infoPopup(0) { setAttribute(Qt::WA_DeleteOnClose); } diff --git a/cockatrice/src/client/tabs/tab.h b/cockatrice/src/client/tabs/tab.h index b046d5c7a..619bf47c9 100644 --- a/cockatrice/src/client/tabs/tab.h +++ b/cockatrice/src/client/tabs/tab.h @@ -31,7 +31,7 @@ private: QList tabMenus; public: - explicit Tab(TabSupervisor *_tabSupervisor, QWidget *parent = nullptr); + explicit Tab(TabSupervisor *_tabSupervisor); const QList &getTabMenus() const { return tabMenus; diff --git a/cockatrice/src/client/tabs/tab_account.cpp b/cockatrice/src/client/tabs/tab_account.cpp index efe5e70a3..fed4ab7f0 100644 --- a/cockatrice/src/client/tabs/tab_account.cpp +++ b/cockatrice/src/client/tabs/tab_account.cpp @@ -18,11 +18,8 @@ #include #include -TabUserLists::TabUserLists(TabSupervisor *_tabSupervisor, - AbstractClient *_client, - const ServerInfo_User &userInfo, - QWidget *parent) - : Tab(_tabSupervisor, parent), client(_client) +TabUserLists::TabUserLists(TabSupervisor *_tabSupervisor, AbstractClient *_client, const ServerInfo_User &userInfo) + : Tab(_tabSupervisor), client(_client) { allUsersList = new UserList(_tabSupervisor, client, UserList::AllUsersList); buddyList = new UserList(_tabSupervisor, client, UserList::BuddyList); diff --git a/cockatrice/src/client/tabs/tab_account.h b/cockatrice/src/client/tabs/tab_account.h index 94e688ee1..b0c475148 100644 --- a/cockatrice/src/client/tabs/tab_account.h +++ b/cockatrice/src/client/tabs/tab_account.h @@ -46,10 +46,7 @@ private: void addToList(const std::string &listName, const QString &userName); public: - TabUserLists(TabSupervisor *_tabSupervisor, - AbstractClient *_client, - const ServerInfo_User &userInfo, - QWidget *parent = nullptr); + TabUserLists(TabSupervisor *_tabSupervisor, AbstractClient *_client, const ServerInfo_User &userInfo); void retranslateUi() override; QString getTabText() const override { diff --git a/cockatrice/src/client/tabs/tab_admin.cpp b/cockatrice/src/client/tabs/tab_admin.cpp index 6140d4675..26c0fa61b 100644 --- a/cockatrice/src/client/tabs/tab_admin.cpp +++ b/cockatrice/src/client/tabs/tab_admin.cpp @@ -54,8 +54,8 @@ int ShutdownDialog::getMinutes() const return minutesEdit->value(); } -TabAdmin::TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, bool _fullAdmin, QWidget *parent) - : Tab(_tabSupervisor, parent), locked(true), client(_client), fullAdmin(_fullAdmin) +TabAdmin::TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, bool _fullAdmin) + : Tab(_tabSupervisor), locked(true), client(_client), fullAdmin(_fullAdmin) { updateServerMessageButton = new QPushButton; connect(updateServerMessageButton, &QPushButton::clicked, this, &TabAdmin::actUpdateServerMessage); diff --git a/cockatrice/src/client/tabs/tab_admin.h b/cockatrice/src/client/tabs/tab_admin.h index f1952a658..f360c01d6 100644 --- a/cockatrice/src/client/tabs/tab_admin.h +++ b/cockatrice/src/client/tabs/tab_admin.h @@ -54,7 +54,7 @@ private slots: void actLock(); public: - TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, bool _fullAdmin, QWidget *parent = nullptr); + TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, bool _fullAdmin); void retranslateUi() override; QString getTabText() const override { diff --git a/cockatrice/src/client/tabs/tab_deck_editor.cpp b/cockatrice/src/client/tabs/tab_deck_editor.cpp index d88c81b02..60bc3de9b 100644 --- a/cockatrice/src/client/tabs/tab_deck_editor.cpp +++ b/cockatrice/src/client/tabs/tab_deck_editor.cpp @@ -698,8 +698,7 @@ void TabDeckEditor::loadLayout() QTimer::singleShot(100, this, SLOT(freeDocksSize())); } -TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent) - : Tab(_tabSupervisor, parent), modified(false) +TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor) : Tab(_tabSupervisor), modified(false) { setObjectName("TabDeckEditor"); @@ -982,7 +981,7 @@ void TabDeckEditor::closeRequest(bool forced) } emit deckEditorClosing(this); - deleteLater(); + close(); } void TabDeckEditor::actNewDeck() diff --git a/cockatrice/src/client/tabs/tab_deck_editor.h b/cockatrice/src/client/tabs/tab_deck_editor.h index 7a3859413..0a11b3c8c 100644 --- a/cockatrice/src/client/tabs/tab_deck_editor.h +++ b/cockatrice/src/client/tabs/tab_deck_editor.h @@ -163,7 +163,7 @@ private: QWidget *centralWidget; public: - explicit TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent = nullptr); + explicit TabDeckEditor(TabSupervisor *_tabSupervisor); void retranslateUi() override; QString getTabText() const override; void setDeck(DeckLoader *_deckLoader); diff --git a/cockatrice/src/client/tabs/tab_game.cpp b/cockatrice/src/client/tabs/tab_game.cpp index bd37f4bcc..63e80d6f9 100644 --- a/cockatrice/src/client/tabs/tab_game.cpp +++ b/cockatrice/src/client/tabs/tab_game.cpp @@ -707,7 +707,7 @@ void TabGame::closeRequest(bool forced) emit gameClosing(this); - deleteLater(); + close(); } void TabGame::replayNextEvent(Player::EventProcessingOptions options) diff --git a/cockatrice/src/client/tabs/tab_logs.cpp b/cockatrice/src/client/tabs/tab_logs.cpp index b9d06dee2..e43be2215 100644 --- a/cockatrice/src/client/tabs/tab_logs.cpp +++ b/cockatrice/src/client/tabs/tab_logs.cpp @@ -21,8 +21,7 @@ #include #include -TabLog::TabLog(TabSupervisor *_tabSupervisor, AbstractClient *_client, QWidget *parent) - : Tab(_tabSupervisor, parent), client(_client) +TabLog::TabLog(TabSupervisor *_tabSupervisor, AbstractClient *_client) : Tab(_tabSupervisor), client(_client) { roomTable = new QTableWidget(); roomTable->setColumnCount(6); diff --git a/cockatrice/src/client/tabs/tab_logs.h b/cockatrice/src/client/tabs/tab_logs.h index 89bebf3e9..5694a24c7 100644 --- a/cockatrice/src/client/tabs/tab_logs.h +++ b/cockatrice/src/client/tabs/tab_logs.h @@ -53,7 +53,7 @@ private slots: void restartLayout(); public: - TabLog(TabSupervisor *_tabSupervisor, AbstractClient *_client, QWidget *parent = nullptr); + TabLog(TabSupervisor *_tabSupervisor, AbstractClient *_client); ~TabLog() override; void retranslateUi() override; QString getTabText() const override diff --git a/cockatrice/src/client/tabs/tab_message.cpp b/cockatrice/src/client/tabs/tab_message.cpp index 7aa2d2a27..c65ec66fe 100644 --- a/cockatrice/src/client/tabs/tab_message.cpp +++ b/cockatrice/src/client/tabs/tab_message.cpp @@ -88,7 +88,7 @@ QString TabMessage::getTabText() const void TabMessage::closeRequest(bool /*forced*/) { emit talkClosing(this); - deleteLater(); + close(); } void TabMessage::sendMessage() diff --git a/cockatrice/src/client/tabs/tab_room.cpp b/cockatrice/src/client/tabs/tab_room.cpp index 810041244..363724103 100644 --- a/cockatrice/src/client/tabs/tab_room.cpp +++ b/cockatrice/src/client/tabs/tab_room.cpp @@ -174,7 +174,7 @@ void TabRoom::closeRequest(bool /*forced*/) { sendRoomCommand(prepareRoomCommand(Command_LeaveRoom())); emit roomClosing(this); - deleteLater(); + close(); } void TabRoom::tabActivated() diff --git a/cockatrice/src/client/tabs/tab_server.cpp b/cockatrice/src/client/tabs/tab_server.cpp index e0906e8d4..029964d8e 100644 --- a/cockatrice/src/client/tabs/tab_server.cpp +++ b/cockatrice/src/client/tabs/tab_server.cpp @@ -138,8 +138,7 @@ void RoomSelector::joinClicked() emit joinRoomRequest(id, true); } -TabServer::TabServer(TabSupervisor *_tabSupervisor, AbstractClient *_client, QWidget *parent) - : Tab(_tabSupervisor, parent), client(_client) +TabServer::TabServer(TabSupervisor *_tabSupervisor, AbstractClient *_client) : Tab(_tabSupervisor), client(_client) { roomSelector = new RoomSelector(client); serverInfoBox = new QTextBrowser; diff --git a/cockatrice/src/client/tabs/tab_server.h b/cockatrice/src/client/tabs/tab_server.h index 1af0e2a35..890a79cea 100644 --- a/cockatrice/src/client/tabs/tab_server.h +++ b/cockatrice/src/client/tabs/tab_server.h @@ -55,7 +55,7 @@ private: bool shouldEmitUpdate = false; public: - TabServer(TabSupervisor *_tabSupervisor, AbstractClient *_client, QWidget *parent = nullptr); + TabServer(TabSupervisor *_tabSupervisor, AbstractClient *_client); void retranslateUi() override; QString getTabText() const override { diff --git a/cockatrice/src/client/tabs/tab_supervisor.cpp b/cockatrice/src/client/tabs/tab_supervisor.cpp index 03611c1cf..629707f75 100644 --- a/cockatrice/src/client/tabs/tab_supervisor.cpp +++ b/cockatrice/src/client/tabs/tab_supervisor.cpp @@ -339,19 +339,12 @@ void TabSupervisor::updatePingTime(int value, int max) setTabIcon(indexOf(tabServer), QIcon(PingPixmapGenerator::generatePixmap(15, value, max))); } -void TabSupervisor::closeButtonPressed() -{ - Tab *tab = static_cast(static_cast(sender())->property("tab").value()); - tab->closeRequest(); -} - void TabSupervisor::addCloseButtonToTab(Tab *tab, int tabIndex) { - QTabBar::ButtonPosition closeSide = - (QTabBar::ButtonPosition)tabBar()->style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, 0, tabBar()); - CloseButton *closeButton = new CloseButton; - connect(closeButton, &CloseButton::clicked, this, &TabSupervisor::closeButtonPressed); - closeButton->setProperty("tab", QVariant::fromValue((QObject *)tab)); + auto closeSide = static_cast( + tabBar()->style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, nullptr, tabBar())); + auto *closeButton = new CloseButton(tab); + connect(closeButton, &CloseButton::clicked, tab, [tab] { tab->closeRequest(); }); tabBar()->setTabButton(tabIndex, closeSide, closeButton); } diff --git a/cockatrice/src/client/tabs/tab_supervisor.h b/cockatrice/src/client/tabs/tab_supervisor.h index b05547dd9..8b5b79c47 100644 --- a/cockatrice/src/client/tabs/tab_supervisor.h +++ b/cockatrice/src/client/tabs/tab_supervisor.h @@ -135,7 +135,6 @@ public slots: void openReplay(GameReplay *replay); void maximizeMainWindow(); private slots: - void closeButtonPressed(); void updateCurrent(int index); void updatePingTime(int value, int max); void gameJoined(const Event_GameJoined &event); diff --git a/cockatrice/src/client/ui/window_main.cpp b/cockatrice/src/client/ui/window_main.cpp index a74bc712b..4e23b54e9 100644 --- a/cockatrice/src/client/ui/window_main.cpp +++ b/cockatrice/src/client/ui/window_main.cpp @@ -866,7 +866,7 @@ MainWindow::MainWindow(QWidget *parent) createActions(); createMenus(); - tabSupervisor = new TabSupervisor(client); + tabSupervisor = new TabSupervisor(client, this); connect(tabSupervisor, &TabSupervisor::setMenu, this, &MainWindow::updateTabMenu); connect(tabSupervisor, &TabSupervisor::localGameEnded, this, &MainWindow::localGameEnded); connect(tabSupervisor, &TabSupervisor::showWindowIfHidden, this, &MainWindow::showWindowIfHidden);