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);
|
w_lobby = new Lobby(this, net_manager);
|
||||||
|
|
||||||
auto point = Options::getInstance().windowPosition("lobby");
|
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();
|
QRect geometry = QGuiApplication::primaryScreen()->geometry();
|
||||||
int x = (geometry.width() - w_lobby->width()) / 2;
|
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))
|
#if (defined(_WIN32) || defined(_WIN64))
|
||||||
void AOApplication::load_bass_plugins()
|
void AOApplication::load_bass_plugins()
|
||||||
{
|
{
|
||||||
|
@ -325,6 +325,8 @@ public:
|
|||||||
// The file name of the log file in base/logs.
|
// The file name of the log file in base/logs.
|
||||||
QString log_filename;
|
QString log_filename;
|
||||||
|
|
||||||
|
bool pointExistsOnScreen(QPoint point);
|
||||||
|
|
||||||
void initBASS();
|
void initBASS();
|
||||||
static void load_bass_plugins();
|
static void load_bass_plugins();
|
||||||
static void CALLBACK BASSreset(HSTREAM handle, DWORD channel, DWORD data, void *user);
|
static void CALLBACK BASSreset(HSTREAM handle, DWORD channel, DWORD data, void *user);
|
||||||
|
@ -1373,7 +1373,7 @@ void Courtroom::done_received()
|
|||||||
if (Options::getInstance().restoreWindowPositionEnabled())
|
if (Options::getInstance().restoreWindowPositionEnabled())
|
||||||
{
|
{
|
||||||
auto maybe_point = Options::getInstance().windowPosition("courtroom");
|
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();
|
qDebug() << maybe_point.value();
|
||||||
QMainWindow::move(maybe_point.value());
|
QMainWindow::move(maybe_point.value());
|
||||||
|
Loading…
Reference in New Issue
Block a user