mirror of
https://github.com/tw93/Mole.git
synced 2026-02-04 17:24:45 +00:00
feat(ui): allow arrow keys and space during search filtering
- Modified FORCE_CHAR mode in read_key() to recognize arrow keys and space - Users can now navigate and select items while typing in search mode - Improves UX by eliminating need to press Enter before selecting - ESC key still works to cancel search This restores V1.19.0 behavior where navigation worked during search
This commit is contained in:
@@ -201,7 +201,6 @@ paginated_multi_select() {
|
||||
export MOLE_MENU_SORT_MODE="$sort_mode"
|
||||
export MOLE_MENU_SORT_REVERSE="$sort_reverse"
|
||||
restore_terminal
|
||||
unset MOLE_READ_KEY_FORCE_CHAR
|
||||
}
|
||||
|
||||
# Interrupt handler
|
||||
@@ -595,7 +594,6 @@ paginated_multi_select() {
|
||||
"QUIT")
|
||||
if [[ "$filter_mode" == "true" ]]; then
|
||||
filter_mode="false"
|
||||
unset MOLE_READ_KEY_FORCE_CHAR
|
||||
filter_query=""
|
||||
applied_query=""
|
||||
top_index=0
|
||||
@@ -791,7 +789,6 @@ paginated_multi_select() {
|
||||
else
|
||||
# Enter filter mode
|
||||
filter_mode="true"
|
||||
export MOLE_READ_KEY_FORCE_CHAR=1
|
||||
filter_query=""
|
||||
top_index=0
|
||||
cursor_pos=0
|
||||
@@ -839,6 +836,46 @@ paginated_multi_select() {
|
||||
continue
|
||||
fi
|
||||
;;
|
||||
"TOUCHID")
|
||||
if [[ "$filter_mode" == "true" ]]; then
|
||||
filter_query+="t"
|
||||
rebuild_view
|
||||
need_full_redraw=true
|
||||
continue
|
||||
fi
|
||||
;;
|
||||
"RIGHT")
|
||||
if [[ "$filter_mode" == "true" ]]; then
|
||||
filter_query+="l"
|
||||
rebuild_view
|
||||
need_full_redraw=true
|
||||
continue
|
||||
fi
|
||||
;;
|
||||
"LEFT")
|
||||
if [[ "$filter_mode" == "true" ]]; then
|
||||
filter_query+="h"
|
||||
rebuild_view
|
||||
need_full_redraw=true
|
||||
continue
|
||||
fi
|
||||
;;
|
||||
"MORE")
|
||||
if [[ "$filter_mode" == "true" ]]; then
|
||||
filter_query+="m"
|
||||
rebuild_view
|
||||
need_full_redraw=true
|
||||
continue
|
||||
fi
|
||||
;;
|
||||
"UPDATE")
|
||||
if [[ "$filter_mode" == "true" ]]; then
|
||||
filter_query+="u"
|
||||
rebuild_view
|
||||
need_full_redraw=true
|
||||
continue
|
||||
fi
|
||||
;;
|
||||
"CHAR:f" | "CHAR:F")
|
||||
if [[ "$filter_mode" == "true" ]]; then
|
||||
filter_query+="${key#CHAR:}"
|
||||
@@ -906,17 +943,9 @@ paginated_multi_select() {
|
||||
if [[ "$filter_mode" == "true" ]]; then
|
||||
applied_query="$filter_query"
|
||||
filter_mode="false"
|
||||
unset MOLE_READ_KEY_FORCE_CHAR
|
||||
top_index=0
|
||||
cursor_pos=0
|
||||
|
||||
searching="true"
|
||||
draw_menu # paint "searching..."
|
||||
drain_pending_input # drop any extra keypresses (e.g., double-Enter)
|
||||
# Preserve cursor/top_index so navigation during search is respected
|
||||
rebuild_view
|
||||
searching="false"
|
||||
draw_menu
|
||||
continue
|
||||
# Fall through to confirmation logic
|
||||
fi
|
||||
# In normal mode: smart Enter behavior
|
||||
# 1. Check if any items are already selected
|
||||
|
||||
Reference in New Issue
Block a user