From 11afd59cdaa630be06bdcd5b795a062806bb6042 Mon Sep 17 00:00:00 2001 From: waddlesplash Date: Tue, 16 May 2017 14:54:57 -0400 Subject: [PATCH] Qt: Disable "New multiplayer window" when MAX_GBAS is reached. Fixes #107. --- src/platform/qt/GBAApp.cpp | 6 ++++++ src/platform/qt/Window.cpp | 6 +++--- src/platform/qt/Window.h | 3 +++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/platform/qt/GBAApp.cpp b/src/platform/qt/GBAApp.cpp index 088d490cc..b316f41ab 100644 --- a/src/platform/qt/GBAApp.cpp +++ b/src/platform/qt/GBAApp.cpp @@ -127,6 +127,9 @@ Window* GBAApp::newWindow() { int windowId = m_multiplayer.attached(); connect(w, &Window::destroyed, [this, w]() { m_windows.removeAll(w); + for (Window* w : m_windows) { + w->updateMultiplayerStatus(m_windows.count() < MAX_GBAS); + } }); m_windows.append(w); w->setAttribute(Qt::WA_DeleteOnClose); @@ -134,6 +137,9 @@ Window* GBAApp::newWindow() { w->show(); w->controller()->setMultiplayerController(&m_multiplayer); w->multiplayerChanged(); + for (Window* w : m_windows) { + w->updateMultiplayerStatus(m_windows.count() < MAX_GBAS); + } return w; } diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index 96eb04548..78956942e 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -1088,11 +1088,11 @@ void Window::setupMenu(QMenuBar* menubar) { #endif fileMenu->addSeparator(); - QAction* multiWindow = new QAction(tr("New multiplayer window"), fileMenu); - connect(multiWindow, &QAction::triggered, [this]() { + m_multiWindow = new QAction(tr("New multiplayer window"), fileMenu); + connect(m_multiWindow, &QAction::triggered, [this]() { GBAApp::app()->newWindow(); }); - addControlledAction(fileMenu, multiWindow, "multiWindow"); + addControlledAction(fileMenu, m_multiWindow, "multiWindow"); #ifndef Q_OS_MAC fileMenu->addSeparator(); diff --git a/src/platform/qt/Window.h b/src/platform/qt/Window.h index c9a5d465c..6875759d1 100644 --- a/src/platform/qt/Window.h +++ b/src/platform/qt/Window.h @@ -49,6 +49,8 @@ public: void resizeFrame(const QSize& size); + void updateMultiplayerStatus(bool canOpenAnother) { m_multiWindow->setEnabled(canOpenAnother); } + signals: void startDrawing(mCoreThread*); void shutdown(); @@ -160,6 +162,7 @@ private: #ifdef M_CORE_GBA QList m_gbaActions; #endif + QAction* m_multiWindow; QMap m_frameSizes; LogController m_log; LogView* m_logView;