Wire ↑↓↵ keyboard navigation in the command overlay
The footer chips already advertised ↑↓ to navigate and ↵ to open; they now match reality. - chrome::command_match exposes COMMAND_ACTIONS / matching_actions alongside the tab/history/bookmark match helpers and a CommandSelection enum + visible_command_rows that returns the flat ordered list of activatable rows. command_overlay drops its private copies of the action const and matcher and consumes them from the shared module so render and key handling share one source of truth. - ElyShell tracks command_selected_index with command_select_next / command_select_prev (cyclic, no notify when index doesn't change) and activate_selected_command which dispatches the right shell call for the currently selected CommandSelection variant and dismisses the overlay. Dismissing command mode resets the index to 0. - The shell root captures key_down via on_command_overlay_key_down. When the live snapshot's command_query starts with '>', up / down / enter run the matching helper and the event stops propagating so the omnibar input doesn't move its caret. - Each rendered row receives a `selected` flag. The selected row gets the design's tinted bg + accent-bar on the left edge so the active result is unambiguous at any keyboard step.
This commit is contained in:
@@ -67,6 +67,7 @@ pub struct ElyShell {
|
||||
pub(crate) translucency_slider: Entity<SliderState>,
|
||||
pub(crate) workspace_picker_open: bool,
|
||||
pub(crate) sidebar_hover_expanded: bool,
|
||||
pub(crate) command_selected_index: usize,
|
||||
download_action_error: Option<String>,
|
||||
download_clear_confirmation: bool,
|
||||
download_security_confirmation: Option<PendingDownloadFileAction>,
|
||||
@@ -179,6 +180,7 @@ impl ElyShell {
|
||||
translucency_slider,
|
||||
workspace_picker_open: false,
|
||||
sidebar_hover_expanded: false,
|
||||
command_selected_index: 0,
|
||||
download_action_error: None,
|
||||
download_clear_confirmation: false,
|
||||
download_security_confirmation: None,
|
||||
|
||||
Reference in New Issue
Block a user