From 1c1ef12761ad6c21ee79742f85745d99dd6c67d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20B=C3=A1lint=20Misius?= Date: Sat, 21 Oct 2023 22:43:09 +0200 Subject: [PATCH] Fix prop tool not remembering settings in some cases Namely, it would not write its settings to powder.pref if the property dropdown was changed with the up/down arrows. --- src/gui/game/PropertyTool.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/gui/game/PropertyTool.cpp b/src/gui/game/PropertyTool.cpp index 8492e0896..eb3f8a794 100644 --- a/src/gui/game/PropertyTool.cpp +++ b/src/gui/game/PropertyTool.cpp @@ -27,6 +27,8 @@ class PropertyWindow: public ui::Window { + void HandlePropertyChange(); + public: ui::DropDown * property; ui::Textbox * textField; @@ -71,8 +73,7 @@ sim(sim_) property = new ui::DropDown(ui::Point(8, 25), ui::Point(Size.X-16, 16)); property->SetActionCallback({ [this] { - FocusComponent(textField); - Update(); + HandlePropertyChange(); } }); AddComponent(property); for (int i = 0; i < int(properties.size()); i++) @@ -97,6 +98,12 @@ sim(sim_) MakeActiveWindow(); } +void PropertyWindow::HandlePropertyChange() +{ + FocusComponent(textField); + Update(); +} + void PropertyWindow::Update() { CheckProperty(); @@ -267,9 +274,15 @@ void PropertyWindow::OnDraw() void PropertyWindow::OnKeyPress(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) { if (key == SDLK_UP) + { property->SetOption(property->GetOption().second-1); + HandlePropertyChange(); + } else if (key == SDLK_DOWN) + { property->SetOption(property->GetOption().second+1); + HandlePropertyChange(); + } } void PropertyTool::OpenWindow(Simulation *sim)