aboutsummaryrefslogtreecommitdiff
path: root/src/aoapplication.cpp
diff options
context:
space:
mode:
authorSalanto <62221668+Salanto@users.noreply.github.com>2024-07-12 00:06:21 +0200
committerSalanto <62221668+Salanto@users.noreply.github.com>2024-07-12 00:06:21 +0200
commit8fac2ada62a5256bb0ba563d3e696762cf861a7d (patch)
tree7b7fe2fba7ebd784afbbd9a93a6817f97ad1bb2d /src/aoapplication.cpp
parentb882917af845b4d792daafeadccd05e7840d2395 (diff)
Harden screen position check against missing monitors
Diffstat (limited to 'src/aoapplication.cpp')
-rw-r--r--src/aoapplication.cpp14
1 files changed, 13 insertions, 1 deletions
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()
{