diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index 7a8e4ea..6a0600a 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -54,10 +54,18 @@ void AOApplication::construct_lobby() w_lobby = new Lobby(this, net_manager); - QRect geometry = QGuiApplication::primaryScreen()->geometry(); - int x = (geometry.width() - w_lobby->width()) / 2; - int y = (geometry.height() - w_lobby->height()) / 2; - w_lobby->move(x, y); + auto point = Options::getInstance().windowPosition("lobby"); + if (!Options::getInstance().restoreWindowPositionEnabled() || !point.has_value()) + { + QRect geometry = QGuiApplication::primaryScreen()->geometry(); + int x = (geometry.width() - w_lobby->width()) / 2; + int y = (geometry.height() - w_lobby->height()) / 2; + w_lobby->move(x, y); + } + else + { + w_lobby->move(point->x(), point->y()); + } if (Options::getInstance().discordEnabled()) { diff --git a/src/lobby.cpp b/src/lobby.cpp index 78797c0..22a3a5b 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -11,11 +11,10 @@ #include Lobby::Lobby(AOApplication *p_ao_app, NetworkManager *p_net_manager) - : QMainWindow() + : QMainWindow{} + , ao_app{p_ao_app} + , net_manager{p_net_manager} { - ao_app = p_ao_app; - net_manager = p_net_manager; - reloadUi(); } @@ -82,6 +81,12 @@ int Lobby::pageSelected() return current_page; } +void Lobby::closeEvent(QCloseEvent *event) +{ + Options::getInstance().setWindowPosition("lobby", pos()); + QMainWindow::closeEvent(event); +} + void Lobby::reset_selection() { last_index = -1; diff --git a/src/lobby.h b/src/lobby.h index 4b4d624..8b894f4 100644 --- a/src/lobby.h +++ b/src/lobby.h @@ -31,6 +31,9 @@ public: int get_selected_server(); int pageSelected(); +protected: + void closeEvent(QCloseEvent *event) override; + private: AOApplication *ao_app; NetworkManager *net_manager;