ITADN

Fix search auto-selecting wrong item before programs finish loading

#2451Pull Requestnnyj 创建于 2026-04-18
N
nnyjcommented
## Summary - Fix search auto-selecting Settings/Control Panel items before Programs load - When search is still collecting programs, skip auto-selection until programs are ready - 3-line change in `OnRefresh()`, no behavior change once search completes ## Related Issues Fixes #456 — typing program name fast sometimes launches wrong program Related to #1982 — search results reorder while user tries to select (mouse interaction, different code path) Related to #4 — search results shift mid-click (same as #1982) ## Problem When typing fast in the search box (e.g. `sc`), the UI refreshes with partial results. Programs take ~220ms to collect from Start Menu folders. During that window, if only Settings/Control Panel results are available, `OnRefresh()` blindly auto-selects the first result, which is a Settings item. If the user hits Enter before programs finish loading, the wrong item launches. The root cause is an early `RefreshSearch()` call in `SearchThread()` that fires before program collection begins (when `m_ProgramItemsOld` is not empty). This pushes stale/filtered results to the UI, and `OnRefresh()` auto-selects `m_OriginalCount+1` without checking whether programs have loaded. ## Fix In `MenuContainer.cpp` `OnRefresh()`, defer auto-selection when search is still in progress and no programs have been found yet. The cursor stays unset until the next refresh after programs load, which then selects correctly. ## Evidence **Before (wrong auto-select on Settings):** https://github.com/user-attachments/assets/9cd307cd-d354-4dbb-b41e-f1fcc3ba277b **After (waits for Programs before selecting):** https://github.com/user-attachments/assets/b22a8450-8084-4ce0-8e99-fe5ce3d42791 ## Test plan - Type `sc` rapidly in search box, verify Programs category selected first - Type queries that match only Settings (no program matches), verify Settings selected after search completes - Press Enter before results load, verify no premature execution - Normal typing speed, verify no visible delay in selection > 🤖 Generated with [Claude Code](https://claude.ai/code)
合并状态:未合并 1 条评论