From d9aada29009c66c6d146d88b20ab43f967653566 Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Thu, 11 Jul 2024 15:52:34 +0200 Subject: [PATCH 1/9] Add Courtroom position restore --- src/charselect.cpp | 4 ++-- src/courtroom.cpp | 29 +++++++++++++++++++++-------- src/courtroom.h | 3 +++ src/lobby.cpp | 2 +- src/options.cpp | 25 +++++++++++++++++++++++++ src/options.h | 10 ++++++++++ src/widgets/aooptionsdialog.cpp | 6 +++--- 7 files changed, 65 insertions(+), 14 deletions(-) diff --git a/src/charselect.cpp b/src/charselect.cpp index 8bce410..d36220a 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -230,9 +230,9 @@ void Courtroom::on_char_button_context_menu_requested(const QPoint &pos) } QMenu *menu = new QMenu(this); - menu->addAction(QString("Edit " + char_name + "/char.ini"), this, [=] { QDesktopServices::openUrl(QUrl::fromLocalFile(char_ini_path)); }); + menu->addAction(QString("Edit " + char_name + "/char.ini"), this, [=, this] { QDesktopServices::openUrl(QUrl::fromLocalFile(char_ini_path)); }); menu->addSeparator(); - menu->addAction(QString("Open character folder " + char_name), this, [=] { + menu->addAction(QString("Open character folder " + char_name), this, [=, this] { QString p_path = ao_app->get_real_path(VPath("characters/" + char_name + "/")); if (!dir_exists(p_path)) { diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 75f4557..1a7c761 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -7,14 +7,12 @@ // #define DEBUG_TRANSITION Courtroom::Courtroom(AOApplication *p_ao_app) - : QMainWindow() + : QMainWindow(), + ao_app{p_ao_app} { - ao_app = p_ao_app; - - this->setWindowFlags((this->windowFlags() | Qt::CustomizeWindowHint) & ~Qt::WindowMaximizeButtonHint); + setWindowFlags((this->windowFlags() | Qt::CustomizeWindowHint) & ~Qt::WindowMaximizeButtonHint); ao_app->initBASS(); - keepalive_timer = new QTimer(this); keepalive_timer->start(45000); @@ -1372,6 +1370,14 @@ void Courtroom::done_received() show(); + if (Options::getInstance().restoreWindowPositionEnabled()) { + auto maybe_point = Options::getInstance().windowPosition("courtroom"); + if (maybe_point.has_value()) { + qDebug() << maybe_point.value(); + QMainWindow::move(maybe_point.value()); + } + } + ui_spectator->show(); } @@ -1907,6 +1913,13 @@ void Courtroom::set_judge_buttons() show_judge_controls(ao_app->get_pos_is_judge(current_or_default_side())); } +void Courtroom::closeEvent(QCloseEvent *event) +{ + Options::getInstance().setWindowPosition("courtroom", pos()); + qDebug() << pos(); + QMainWindow::closeEvent(event); +} + void Courtroom::on_chat_return_pressed() { if (is_muted) @@ -5191,7 +5204,7 @@ void Courtroom::on_pos_dropdown_context_menu_requested(const QPoint &pos) QMenu *menu = new QMenu(ui_iniswap_dropdown); menu->setAttribute(Qt::WA_DeleteOnClose); - menu->addAction(QString("Open background " + current_background), this, [=] { + menu->addAction(QString("Open background " + current_background), this, [=, this] { QString p_path = ao_app->get_real_path(VPath("background/" + current_background + "/")); if (!dir_exists(p_path)) { @@ -5303,7 +5316,7 @@ void Courtroom::on_iniswap_context_menu_requested(const QPoint &pos) } menu->addSeparator(); - menu->addAction(QString("Open character folder " + current_char), this, [=] { + menu->addAction(QString("Open character folder " + current_char), this, [=, this] { QString p_path = ao_app->get_real_path(VPath("characters/" + current_char + "/")); if (!dir_exists(p_path)) { @@ -6127,7 +6140,7 @@ void Courtroom::on_text_color_context_menu_requested(const QPoint &pos) QMenu *menu = new QMenu(this); menu->setAttribute(Qt::WA_DeleteOnClose); - menu->addAction(QString("Open currently used chat_config.ini"), this, [=] { + menu->addAction(QString("Open currently used chat_config.ini"), this, [=, this] { QString p_path = ao_app->get_asset("chat_config.ini", Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, ao_app->get_chat(current_char)); if (!file_exists(p_path)) { diff --git a/src/courtroom.h b/src/courtroom.h index c0fff0a..ba771ac 100644 --- a/src/courtroom.h +++ b/src/courtroom.h @@ -297,6 +297,9 @@ public: void set_judge_state(JudgeState new_state); void set_judge_buttons(); +protected: + virtual void closeEvent(QCloseEvent *event) override; + private: AOApplication *ao_app; diff --git a/src/lobby.cpp b/src/lobby.cpp index 9918ca3..78797c0 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -162,7 +162,7 @@ void Lobby::loadUI() FROM_UI(QTextBrowser, server_description_text); FROM_UI(QPushButton, connect_button); connect(ui_connect_button, &QPushButton::released, net_manager, &NetworkManager::join_to_server); - connect(ui_connect_button, &QPushButton::released, this, [=] { ui_server_player_count_lbl->setText(tr("Joining Server...")); }); + connect(ui_connect_button, &QPushButton::released, this, [=, this] { ui_server_player_count_lbl->setText(tr("Joining Server...")); }); connect(net_manager, &NetworkManager::server_connected, ui_connect_button, &QPushButton::setEnabled); FROM_UI(QTextBrowser, motd_text); diff --git a/src/options.cpp b/src/options.cpp index 9145aa4..0b963d6 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -763,3 +763,28 @@ QString Options::getUIAsset(QString f_asset_name) qWarning() << "Unable to locate ui-asset" << f_asset_name << "in theme" << theme() << "Defaulting to embeeded asset."; return QString(":/data/ui/" + f_asset_name); } + +void Options::setWindowPosition(QString widget, QPoint position) +{ + config.setValue("windows/position_" + widget, position); +} + +std::optional Options::windowPosition(QString widget) +{ + QPoint point = config.value("windows/position_" + widget, QPoint()).toPoint(); + if (point.isNull()) + { + return std::nullopt; + } + return std::optional(point); +} + +bool Options::restoreWindowPositionEnabled() const +{ + return config.value("windows/restore", false).toBool(); +} + +void Options::setRestoreWindowPositionEnabled(bool state) +{ + config.setValue("windows/restore", state); +} diff --git a/src/options.h b/src/options.h index 4ccc301..6550177 100644 --- a/src/options.h +++ b/src/options.h @@ -5,6 +5,8 @@ #include #include +#include + class Options { public: @@ -269,6 +271,12 @@ public: // Theming Nonesense! QString getUIAsset(QString f_asset_name); + void setWindowPosition(QString widget, QPoint position); + std::optional windowPosition(QString widget); + + bool restoreWindowPositionEnabled() const; + void setRestoreWindowPositionEnabled(bool state); + private: /** * @brief QSettings object for config.ini @@ -280,6 +288,8 @@ private: */ QSettings favorite; + QSettings windows; + void migrateCallwords(); /** diff --git a/src/widgets/aooptionsdialog.cpp b/src/widgets/aooptionsdialog.cpp index 4d55652..704e407 100644 --- a/src/widgets/aooptionsdialog.cpp +++ b/src/widgets/aooptionsdialog.cpp @@ -157,10 +157,10 @@ void AOOptionsDialog::registerOption(const QString &widgetName, V (Options::*get } OptionEntry entry; - entry.load = [=] { + entry.load = [=, this] { setWidgetData(widget, (Options::getInstance().*getter)()); }; - entry.save = [=] { + entry.save = [=, this] { (Options::getInstance().*setter)(widgetData(widget)); }; @@ -323,7 +323,7 @@ void AOOptionsDialog::setupUI() connect(ui_theme_reload_button, &QPushButton::clicked, this, &::AOOptionsDialog::onReloadThemeClicked); FROM_UI(QPushButton, theme_folder_button); - connect(ui_theme_folder_button, &QPushButton::clicked, this, [=] { + connect(ui_theme_folder_button, &QPushButton::clicked, this, [=, this] { QString p_path = ao_app->get_real_path(ao_app->get_theme_path("", ui_theme_combobox->itemText(ui_theme_combobox->currentIndex()))); if (!dir_exists(p_path)) { From 1a2036d4b624a74caf9799e843e385dc6618748f Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Thu, 11 Jul 2024 16:04:18 +0200 Subject: [PATCH 2/9] Add setting entry --- data/ui/options_dialog.ui | 21 +++++++++++++++++++-- src/widgets/aooptionsdialog.cpp | 2 ++ src/widgets/aooptionsdialog.h | 1 + 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/data/ui/options_dialog.ui b/data/ui/options_dialog.ui index 19100cd..bcdb7a4 100644 --- a/data/ui/options_dialog.ui +++ b/data/ui/options_dialog.ui @@ -39,9 +39,9 @@ 0 - -511 + -555 394 - 850 + 872 @@ -573,6 +573,23 @@ + + + + + + + + + + + If ticked, some windows restore their last known position where they were closed. + + + Restore Window Position + + + diff --git a/src/widgets/aooptionsdialog.cpp b/src/widgets/aooptionsdialog.cpp index 704e407..db3c878 100644 --- a/src/widgets/aooptionsdialog.cpp +++ b/src/widgets/aooptionsdialog.cpp @@ -359,6 +359,7 @@ void AOOptionsDialog::setupUI() FROM_UI(QCheckBox, sfx_on_idle_cb); FROM_UI(QCheckBox, evidence_double_click_cb); FROM_UI(QCheckBox, slides_cb); + FROM_UI(QCheckBox, restoreposition_cb); registerOption("theme_scaling_factor_sb", &Options::themeScalingFactor, &Options::setThemeScalingFactor); registerOption("animated_theme_cb", &Options::animatedThemeEnabled, &Options::setAnimatedThemeEnabled); @@ -402,6 +403,7 @@ void AOOptionsDialog::setupUI() registerOption("sfx_on_idle_cb", &Options::playSelectedSFXOnIdle, &Options::setPlaySelectedSFXOnIdle); registerOption("evidence_double_click_cb", &Options::evidenceDoubleClickEdit, &Options::setEvidenceDoubleClickEdit); registerOption("slides_cb", &Options::slidesEnabled, &Options::setSlidesEnabled); + registerOption("restoreposition_cb", &Options::restoreWindowPositionEnabled, &Options::setRestoreWindowPositionEnabled); // Callwords tab. This could just be a QLineEdit, but no, we decided to allow // people to put a billion entries in. diff --git a/src/widgets/aooptionsdialog.h b/src/widgets/aooptionsdialog.h index b16be33..eb64a53 100644 --- a/src/widgets/aooptionsdialog.h +++ b/src/widgets/aooptionsdialog.h @@ -48,6 +48,7 @@ private: QPushButton *ui_theme_folder_button; QCheckBox *ui_evidence_double_click_cb; QCheckBox *ui_slides_cb; + QCheckBox *ui_restoreposition_cb; QCheckBox *ui_animated_theme_cb; QSpinBox *ui_stay_time_spinbox; QCheckBox *ui_instant_objection_cb; From 3cc0b8f2816fe34f8ee00dbcca31aad0902287cf Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Thu, 11 Jul 2024 16:18:06 +0200 Subject: [PATCH 3/9] Add to lobby --- src/aoapplication.cpp | 16 ++++++++++++---- src/lobby.cpp | 13 +++++++++---- src/lobby.h | 3 +++ 3 files changed, 24 insertions(+), 8 deletions(-) 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; From c7947368b06d0e42ac9f36a2b5b42730eea55ddf Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Thu, 11 Jul 2024 16:53:11 +0200 Subject: [PATCH 4/9] Remove unused QSettings object Forgot that was still there --- src/options.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/options.h b/src/options.h index 6550177..f28dfcd 100644 --- a/src/options.h +++ b/src/options.h @@ -288,8 +288,6 @@ private: */ QSettings favorite; - QSettings windows; - void migrateCallwords(); /** From 9002d1201de55fd13c3853fece80fec25765b8dd Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Thu, 11 Jul 2024 18:00:59 +0200 Subject: [PATCH 5/9] *blood sacrifice for clang* --- src/courtroom.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 1a7c761..0616179 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -7,8 +7,8 @@ // #define DEBUG_TRANSITION Courtroom::Courtroom(AOApplication *p_ao_app) - : QMainWindow(), - ao_app{p_ao_app} + : QMainWindow() + , ao_app{p_ao_app} { setWindowFlags((this->windowFlags() | Qt::CustomizeWindowHint) & ~Qt::WindowMaximizeButtonHint); @@ -1370,12 +1370,14 @@ void Courtroom::done_received() show(); - if (Options::getInstance().restoreWindowPositionEnabled()) { - auto maybe_point = Options::getInstance().windowPosition("courtroom"); - if (maybe_point.has_value()) { - qDebug() << maybe_point.value(); - QMainWindow::move(maybe_point.value()); - } + if (Options::getInstance().restoreWindowPositionEnabled()) + { + auto maybe_point = Options::getInstance().windowPosition("courtroom"); + if (maybe_point.has_value()) + { + qDebug() << maybe_point.value(); + QMainWindow::move(maybe_point.value()); + } } ui_spectator->show(); @@ -1915,9 +1917,9 @@ void Courtroom::set_judge_buttons() void Courtroom::closeEvent(QCloseEvent *event) { - Options::getInstance().setWindowPosition("courtroom", pos()); - qDebug() << pos(); - QMainWindow::closeEvent(event); + Options::getInstance().setWindowPosition("courtroom", pos()); + qDebug() << pos(); + QMainWindow::closeEvent(event); } void Courtroom::on_chat_return_pressed() 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: [PATCH 6/9] Harden screen position check against missing monitors --- src/aoapplication.cpp | 14 +++++++++++++- src/aoapplication.h | 2 ++ src/courtroom.cpp | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index 9abc958..686c88c 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() { diff --git a/src/aoapplication.h b/src/aoapplication.h index b5d7fb5..998f349 100644 --- a/src/aoapplication.h +++ b/src/aoapplication.h @@ -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); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 45fb7d6..39d6ff9 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -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()); From e34b2534edc6513cc57bb71875be4d48e74c73a7 Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Fri, 12 Jul 2024 13:23:40 +0200 Subject: [PATCH 7/9] Restore position in AOApplication --- src/aoapplication.cpp | 36 ++++++++++++++++++++---------------- src/aoapplication.h | 1 + src/courtroom.cpp | 14 ++------------ src/lobby.cpp | 3 ++- 4 files changed, 25 insertions(+), 29 deletions(-) diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index 686c88c..2ee6621 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -51,18 +51,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() || !pointExistsOnScreen(point.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()); - } + centerOrMoveWidgetOnPrimaryScreen(w_lobby); if (Options::getInstance().discordEnabled()) { @@ -104,10 +93,7 @@ void AOApplication::construct_courtroom() w_courtroom = new Courtroom(this); - QRect geometry = QGuiApplication::primaryScreen()->geometry(); - int x = (geometry.width() - w_courtroom->width()) / 2; - int y = (geometry.height() - w_courtroom->height()) / 2; - w_courtroom->move(x, y); + centerOrMoveWidgetOnPrimaryScreen(w_courtroom); if (demo_server != nullptr) { @@ -245,6 +231,24 @@ bool AOApplication::pointExistsOnScreen(QPoint point) return false; } +void AOApplication::centerOrMoveWidgetOnPrimaryScreen(QWidget *widget) +{ + auto point = Options::getInstance().windowPosition(widget->objectName()); + qDebug() << widget->objectName(); + qDebug() << point.has_value(); + if (!Options::getInstance().restoreWindowPositionEnabled() || !point.has_value() || !pointExistsOnScreen(point.value())) + { + QRect geometry = QGuiApplication::primaryScreen()->geometry(); + int x = (geometry.width() - widget->width()) / 2; + int y = (geometry.height() - widget->height()) / 2; + widget->move(x, y); + } + else + { + widget->move(point->x(), point->y()); + } +} + #if (defined(_WIN32) || defined(_WIN64)) void AOApplication::load_bass_plugins() { diff --git a/src/aoapplication.h b/src/aoapplication.h index 998f349..beec23b 100644 --- a/src/aoapplication.h +++ b/src/aoapplication.h @@ -326,6 +326,7 @@ public: QString log_filename; bool pointExistsOnScreen(QPoint point); + void centerOrMoveWidgetOnPrimaryScreen(QWidget *widget); void initBASS(); static void load_bass_plugins(); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 39d6ff9..9d3240c 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -11,6 +11,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) , ao_app{p_ao_app} { setWindowFlags((this->windowFlags() | Qt::CustomizeWindowHint) & ~Qt::WindowMaximizeButtonHint); + setObjectName("courtroom"); ao_app->initBASS(); keepalive_timer = new QTimer(this); @@ -1370,16 +1371,6 @@ void Courtroom::done_received() show(); - if (Options::getInstance().restoreWindowPositionEnabled()) - { - auto maybe_point = Options::getInstance().windowPosition("courtroom"); - if (maybe_point.has_value() && ao_app->pointExistsOnScreen(maybe_point.value())) - { - qDebug() << maybe_point.value(); - QMainWindow::move(maybe_point.value()); - } - } - ui_spectator->show(); } @@ -1917,8 +1908,7 @@ void Courtroom::set_judge_buttons() void Courtroom::closeEvent(QCloseEvent *event) { - Options::getInstance().setWindowPosition("courtroom", pos()); - qDebug() << pos(); + Options::getInstance().setWindowPosition(objectName(), pos()); QMainWindow::closeEvent(event); } diff --git a/src/lobby.cpp b/src/lobby.cpp index f4da9d5..1f37f4b 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -16,6 +16,7 @@ Lobby::Lobby(AOApplication *p_ao_app, NetworkManager *p_net_manager) , net_manager{p_net_manager} { reloadUi(); + setObjectName("lobby"); } void Lobby::on_tab_changed(int index) @@ -83,7 +84,7 @@ int Lobby::pageSelected() void Lobby::closeEvent(QCloseEvent *event) { - Options::getInstance().setWindowPosition("lobby", pos()); + Options::getInstance().setWindowPosition(objectName(), pos()); QMainWindow::closeEvent(event); } From c6e3a38131c02a9862b45340a6752a08c23550f8 Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Fri, 12 Jul 2024 13:24:11 +0200 Subject: [PATCH 8/9] Removing debug statements --- src/aoapplication.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index 2ee6621..efc9a26 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -234,8 +234,6 @@ bool AOApplication::pointExistsOnScreen(QPoint point) void AOApplication::centerOrMoveWidgetOnPrimaryScreen(QWidget *widget) { auto point = Options::getInstance().windowPosition(widget->objectName()); - qDebug() << widget->objectName(); - qDebug() << point.has_value(); if (!Options::getInstance().restoreWindowPositionEnabled() || !point.has_value() || !pointExistsOnScreen(point.value())) { QRect geometry = QGuiApplication::primaryScreen()->geometry(); From 712269b4503989736b8b9b64eeeb69cab938b7f8 Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Fri, 12 Jul 2024 13:24:45 +0200 Subject: [PATCH 9/9] Set default to enabled --- src/options.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/options.cpp b/src/options.cpp index 0b963d6..fbcf01e 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -781,7 +781,7 @@ std::optional Options::windowPosition(QString widget) bool Options::restoreWindowPositionEnabled() const { - return config.value("windows/restore", false).toBool(); + return config.value("windows/restore", true).toBool(); } void Options::setRestoreWindowPositionEnabled(bool state)