Harden screen position check against missing monitors
This commit is contained in:
parent
b882917af8
commit
8fac2ada62
@ -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()
|
||||
{
|
||||
|
@ -325,6 +325,8 @@ public:
|
||||
// The file name of the log file in base/logs.
|
||||
QString log_filename;
|
||||
|
||||
bool pointExistsOnScreen(QPoint point);
|
||||
|
||||
void initBASS();
|
||||
static void load_bass_plugins();
|
||||
static void CALLBACK BASSreset(HSTREAM handle, DWORD channel, DWORD data, void *user);
|
||||
|
@ -1373,7 +1373,7 @@ void Courtroom::done_received()
|
||||
if (Options::getInstance().restoreWindowPositionEnabled())
|
||||
{
|
||||
auto maybe_point = Options::getInstance().windowPosition("courtroom");
|
||||
if (maybe_point.has_value())
|
||||
if (maybe_point.has_value() && ao_app->pointExistsOnScreen(maybe_point.value()))
|
||||
{
|
||||
qDebug() << maybe_point.value();
|
||||
QMainWindow::move(maybe_point.value());
|
||||
|
Loading…
Reference in New Issue
Block a user