From 23a56170607e6c47bbe9b96c3d35cc979bea44a8 Mon Sep 17 00:00:00 2001 From: Christian Heinemann Date: Fri, 3 Jul 2026 17:13:46 +0200 Subject: [PATCH] Auto-focus parameter filter on typing Focus the filter input in the simulation parameters window as soon as the user starts typing, without having to click the field first. Co-Authored-By: Claude Opus 4.8 --- source/Gui/SimulationParametersMainWindow.cpp | 16 ++++++++++++++++ source/Gui/SimulationParametersMainWindow.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/source/Gui/SimulationParametersMainWindow.cpp b/source/Gui/SimulationParametersMainWindow.cpp index b424bd2b77..13b36f9ddc 100644 --- a/source/Gui/SimulationParametersMainWindow.cpp +++ b/source/Gui/SimulationParametersMainWindow.cpp @@ -258,6 +258,9 @@ void SimulationParametersMainWindow::processDetailWidget() //AlienGui::ResetFilterText(); ImGui::Spacing(); + if (shouldStartFilterTyping()) { + ImGui::SetKeyboardFocusHere(); + } AlienGui::InputFilter(AlienGui::InputFilterParameters().width(250.0f), _filter); } AlienGui::EndTreeNode(); @@ -271,6 +274,19 @@ void SimulationParametersMainWindow::processDetailWidget() } } +bool SimulationParametersMainWindow::shouldStartFilterTyping() const +{ + if (ImGui::IsAnyItemActive() || !ImGui::IsWindowFocused(ImGuiFocusedFlags_RootAndChildWindows)) { + return false; + } + for (auto const& c : ImGui::GetIO().InputQueueCharacters) { + if (c >= 32 && c != 127) { + return true; + } + } + return false; +} + void SimulationParametersMainWindow::processExpertWidget() { if (ImGui::BeginChild("##expert", {0, 0})) { diff --git a/source/Gui/SimulationParametersMainWindow.h b/source/Gui/SimulationParametersMainWindow.h index 1d72bb2aaf..1ad954210d 100644 --- a/source/Gui/SimulationParametersMainWindow.h +++ b/source/Gui/SimulationParametersMainWindow.h @@ -26,6 +26,8 @@ class SimulationParametersMainWindow : public AlienWindow void processExpertWidget(); void processStatusBar(); + bool shouldStartFilterTyping() const; + struct Location { std::string name;