From 8fac2ada62a5256bb0ba563d3e696762cf861a7d Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Fri, 12 Jul 2024 00:06:21 +0200 Subject: Harden screen position check against missing monitors --- src/aoapplication.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/aoapplication.cpp') diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index 9abc958c..686c88c0 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -52,7 +52,7 @@ void AOApplication::construct_lobby() w_lobby = new Lobby(this, net_manager); auto point = Options::getInstance().windowPosition("lobby"); - if (!Options::getInstance().restoreWindowPositionEnabled() || !point.has_value()) + if (!Options::getInstance().restoreWindowPositionEnabled() || !point.has_value() || !pointExistsOnScreen(point.value())) { QRect geometry = QGuiApplication::primaryScreen()->geometry(); int x = (geometry.width() - w_lobby->width()) / 2; @@ -233,6 +233,18 @@ void AOApplication::initBASS() } } +bool AOApplication::pointExistsOnScreen(QPoint point) +{ + for (QScreen *screen : QApplication::screens()) + { + if (screen->availableGeometry().contains(point)) + { + return true; + } + } + return false; +} + #if (defined(_WIN32) || defined(_WIN64)) void AOApplication::load_bass_plugins() { -- cgit