Skip to content

Fix search auto-selecting wrong item before programs finish loading#2451

Merged
ge0rdi merged 1 commit into
Open-Shell:masterfrom
nnyj:fix/search-reorder
Apr 18, 2026
Merged

Fix search auto-selecting wrong item before programs finish loading#2451
ge0rdi merged 1 commit into
Open-Shell:masterfrom
nnyj:fix/search-reorder

Conversation

@nnyj
Copy link
Copy Markdown

@nnyj nnyj commented Apr 18, 2026

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

Related to #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):

search_bug_before.mp4

After (waits for Programs before selecting):

search_bug_after.mp4

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

…result selection

When search results refresh mid-collection, OnRefresh auto-selects the
first result item. If programs haven't loaded yet, Settings category
appears first and gets selected. If user hits Enter in that window,
wrong item launches.

Skip auto-select when search is still in progress and no programs
have been found yet. Next refresh after programs load will select
correctly.

Fixes Open-Shell#456
Fixes Open-Shell#1982
Fixes Open-Shell#4

> 🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@AppVeyorBot
Copy link
Copy Markdown

@ge0rdi ge0rdi self-requested a review April 18, 2026 13:16
@ge0rdi
Copy link
Copy Markdown
Member

ge0rdi commented Apr 18, 2026

Looks good to me.
Thank you (and Claude 😄).

@ge0rdi ge0rdi merged commit 32ad90f into Open-Shell:master Apr 18, 2026
1 check passed
zcomputerwiz pushed a commit to zcomputerwiz/Open-Shell-Menu that referenced this pull request May 9, 2026
…pen-Shell#2451)

fix: defer auto-select until programs loaded to prevent wrong search result selection

When search results refresh mid-collection, OnRefresh auto-selects the
first result item. If programs haven't loaded yet, Settings category
appears first and gets selected. If user hits Enter in that window,
wrong item launches.

Skip auto-select when search is still in progress and no programs
have been found yet. Next refresh after programs load will select
correctly.

Fixes Open-Shell#456
Fixes Open-Shell#1982
Fixes Open-Shell#4

> 🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants