diff --git a/src/blackgui/guiapplication.cpp b/src/blackgui/guiapplication.cpp index 8f004b82f..aa09f6720 100644 --- a/src/blackgui/guiapplication.cpp +++ b/src/blackgui/guiapplication.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -290,6 +291,20 @@ namespace BlackGui return CGuiUtility::isUsingHighDpiScreenSupport(); } + QScreen *CGuiApplication::currentScreen() + { + QWidget *w = CGuiApplication::mainApplicationWidget(); + const int s = QApplication::desktop()->screenNumber(w); + if (s < QGuiApplication::screens().size()) { return QGuiApplication::screens()[s]; } + return QGuiApplication::primaryScreen(); + } + + QRect CGuiApplication::currentScreenGeometry() + { + const QScreen *s = currentScreen(); + return s->geometry(); + } + bool CGuiApplication::saveWindowGeometryAndState(const QMainWindow *window) const { if (!window) { return false; } diff --git a/src/blackgui/guiapplication.h b/src/blackgui/guiapplication.h index 3239bc08a..88bcd25af 100644 --- a/src/blackgui/guiapplication.h +++ b/src/blackgui/guiapplication.h @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -244,6 +245,13 @@ namespace BlackGui //! Uses the high DPI support? static bool isUsingHighDpiScreenSupport(); + //! Current screen + static QScreen *currentScreen(); + + //! Current screen resolution + //! \remark logical resolution, not physical resolution + static QRect currentScreenGeometry(); + //! Parse scale factor if any static double parseScaleFactor(int argc, char *argv[]);