From 7ef786a9e27bc4e46df3498a26d36f48dd5f30c3 Mon Sep 17 00:00:00 2001 From: Tw93 Date: Fri, 21 Nov 2025 10:44:09 +0800 Subject: [PATCH] Fix list scrolling performance --- lib/menu_paginated.sh | 6 ++++-- lib/uninstall_batch.sh | 2 +- mole | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/menu_paginated.sh b/lib/menu_paginated.sh index efc7092..df44754 100755 --- a/lib/menu_paginated.sh +++ b/lib/menu_paginated.sh @@ -493,8 +493,6 @@ paginated_multi_select() { # Main interaction loop while true; do draw_menu - # Drain any pending input to prevent mouse wheel scroll issues - drain_pending_input local key key=$(read_key) @@ -698,6 +696,10 @@ paginated_multi_select() { # Removed help screen, users can explore the interface ;; esac + + # Drain any accumulated input after processing (e.g., mouse wheel events) + # This prevents buffered events from causing jumps, without blocking keyboard input + drain_pending_input done } diff --git a/lib/uninstall_batch.sh b/lib/uninstall_batch.sh index e3a1598..52667ff 100755 --- a/lib/uninstall_batch.sh +++ b/lib/uninstall_batch.sh @@ -60,7 +60,6 @@ batch_uninstall_applications() { local -a app_details=() local -a dock_cleanup_paths=() - echo "" # Silent analysis without spinner output (avoid visual flicker) for selected_app in "${selected_apps[@]}"; do [[ -z "$selected_app" ]] && continue @@ -94,6 +93,7 @@ batch_uninstall_applications() { local size_display=$(bytes_to_human "$((total_estimated_size * 1024))") # Display detailed file list for each app before confirmation + echo "" echo -e "${PURPLE}Files to be removed:${NC}" echo "" for detail in "${app_details[@]}"; do diff --git a/mole b/mole index 0a5f296..4c01a4f 100755 --- a/mole +++ b/mole @@ -559,9 +559,6 @@ interactive_main_menu() { first_draw=false fi - # Drain any pending input to prevent touchpad scroll issues - drain_pending_input - local key if ! key=$(read_key); then continue @@ -609,6 +606,9 @@ interactive_main_menu() { ;; "QUIT") cleanup_and_exit ;; esac + + # Drain any accumulated input after processing (e.g., touchpad scroll events) + drain_pending_input done }