diff --git a/interface/src/ui/HMDToolsDialog.cpp b/interface/src/ui/HMDToolsDialog.cpp index 3f7ac9f4cc..d04509efa6 100644 --- a/interface/src/ui/HMDToolsDialog.cpp +++ b/interface/src/ui/HMDToolsDialog.cpp @@ -108,9 +108,11 @@ HMDToolsDialog::HMDToolsDialog(QWidget* parent) : updateUi(); }); + // keep track of changes to the number of screens - connect(QApplication::desktop(), &QDesktopWidget::screenCountChanged, this, &HMDToolsDialog::screenCountChanged); - + connect(qApp, &QGuiApplication::screenAdded, this, &HMDToolsDialog::screenCountChanged); + connect(qApp, &QGuiApplication::screenRemoved, this, &HMDToolsDialog::screenCountChanged); + updateUi(); } @@ -130,14 +132,13 @@ QString HMDToolsDialog::getDebugDetails() const { results += "HMD Screen Name: N/A\n"; } - int desktopPrimaryScreenNumber = QApplication::desktop()->primaryScreen(); - QScreen* desktopPrimaryScreen = QGuiApplication::screens()[desktopPrimaryScreenNumber]; + QScreen* desktopPrimaryScreen = QGuiApplication::primaryScreen(); results += "Desktop's Primary Screen: " + desktopPrimaryScreen->name() + "\n"; results += "Application Primary Screen: " + QGuiApplication::primaryScreen()->name() + "\n"; QScreen* mainWindowScreen = qApp->getWindow()->windowHandle()->screen(); results += "Application Main Window Screen: " + mainWindowScreen->name() + "\n"; - results += "Total Screens: " + QString::number(QApplication::desktop()->screenCount()) + "\n"; + results += "Total Screens: " + QString::number(QGuiApplication::screens().count()) + "\n"; return results; } @@ -196,7 +197,7 @@ void HMDToolsDialog::hideEvent(QHideEvent* event) { centerCursorOnWidget(qApp->getWindow()); } -void HMDToolsDialog::screenCountChanged(int newCount) { +void HMDToolsDialog::screenCountChanged() { int hmdScreenNumber = -1; const auto& displayPlugins = PluginManager::getInstance()->getDisplayPlugins(); for(const auto& dp : displayPlugins) { @@ -256,7 +257,7 @@ void HMDWindowWatcher::windowGeometryChanged(int arg) { void HMDWindowWatcher::windowScreenChanged(QScreen* screen) { // if we have more than one screen, and a known hmdScreen then try to // keep our dialog off of the hmdScreen - if (QApplication::desktop()->screenCount() > 1) { + if (QGuiApplication::screens().count() > 1) { int hmdScreenNumber = _hmdTools->_hmdScreenNumber; // we want to use a local variable here because we are not necesarily in HMD mode if (hmdScreenNumber >= 0) { @@ -283,8 +284,7 @@ void HMDWindowWatcher::windowScreenChanged(QScreen* screen) { betterScreen = lastApplicationScreen; } else { // last, if we can't use the previous screen the use the primary desktop screen - int desktopPrimaryScreenNumber = QApplication::desktop()->primaryScreen(); - QScreen* desktopPrimaryScreen = QGuiApplication::screens()[desktopPrimaryScreenNumber]; + QScreen* desktopPrimaryScreen = QGuiApplication::primaryScreen(); betterScreen = desktopPrimaryScreen; } diff --git a/interface/src/ui/HMDToolsDialog.h b/interface/src/ui/HMDToolsDialog.h index 16ea090d95..d23aafd23a 100644 --- a/interface/src/ui/HMDToolsDialog.h +++ b/interface/src/ui/HMDToolsDialog.h @@ -35,7 +35,7 @@ signals: public slots: void reject() override; - void screenCountChanged(int newCount); + void screenCountChanged(); protected: virtual void closeEvent(QCloseEvent*) override; // Emits a 'closed' signal when this dialog is closed.