Skip to content

Commit b7f13c4

Browse files
committed
Fix for process filtering after proc scroll change
1 parent 4ccd8b9 commit b7f13c4

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

bashtop

+14-8
Original file line numberDiff line numberDiff line change
@@ -2755,7 +2755,7 @@ collect_processes_psutil() {
27552755
fi
27562756

27572757
if ((i==height-2)); then
2758-
if [[ ${proc[selected]} -gt 0 || ${proc[start]} -gt 1 ]] || [[ ${proc[detailed]} -eq 1 && -z ${proc[detailed_cpu]} && -z ${proc[detailed_killed]} ]]; then :
2758+
if [[ ${proc[selected]} -gt 0 || -n $filter || ${proc[start]} -gt 1 ]] || [[ ${proc[detailed]} -eq 1 && -z ${proc[detailed_cpu]} && -z ${proc[detailed_killed]} ]]; then :
27592759
else break; fi
27602760
fi
27612761

@@ -3380,10 +3380,14 @@ draw_processes() { #? Draw processes and values to screen
33803380
fi
33813381

33823382
#* Print processes
3383-
if (( proc[start]>(${#proc_array[@]}-1)-p_height )); then
3383+
if ((${#proc_array[@]}<=p_height)); then
3384+
proc[start]=1
3385+
elif (( proc[start]>(${#proc_array[@]}-1)-p_height )); then
33843386
proc[start]=$(( (${#proc_array[@]}-1)-p_height ))
33853387
fi
33863388

3389+
if ((proc[selected]>${#proc_array[@]}-1)); then proc[selected]=$((${#proc_array[@]}-1)); fi
3390+
33873391
if [[ $proc_gradient == true ]] && ((proc[selected]>1)); then
33883392
fg_r="$(( fg_r-( fg_add_r*(proc[selected]-1) ) ))"
33893393
fg_g="$(( fg_g-( fg_add_g*(proc[selected]-1) ) ))"
@@ -3450,7 +3454,7 @@ draw_processes() { #? Draw processes and values to screen
34503454
done
34513455

34523456
if ((proc[selected]>0)); then sel_string=$((proc[start]-1+proc[selected])); else sel_string=0; fi
3453-
page_string="${sel_string}/$((${#proc_array[@]}-2))"
3457+
page_string="${sel_string}/$((${#proc_array[@]}-2${filter:++1}))"
34543458
print -v proc_out -m $((line+height-1)) $((col+width-20)) -fg ${box[processes_color]} -rp 19 -t ""
34553459
print -v proc_out -m $((line+height-1)) $((col+width-${#page_string}-4)) -fg ${box[processes_color]} -t "" -b -fg ${theme[title]} -t "$page_string" -rs -fg ${box[processes_color]} -t ""
34563460

@@ -3496,7 +3500,7 @@ draw_processes() { #? Draw processes and values to screen
34963500
unset proc_misc2
34973501
proc[page_change]=0
34983502
if ((proc[selected]>0)); then kill_fg="${theme[hi_fg]}"; com_fg="${theme[title]}"; else kill_fg="${theme[inactive_fg]}"; com_fg="${theme[inactive_fg]}"; fi
3499-
if ((proc[selected]==(${#proc_array[@]}-1)-proc[start])); then down_fg="${theme[inactive_fg]}"; else down_fg="${theme[hi_fg]}"; fi
3503+
if ((proc[selected]==(${#proc_array[@]}-1${filter:++1})-proc[start])); then down_fg="${theme[inactive_fg]}"; else down_fg="${theme[hi_fg]}"; fi
35003504
if ((proc[selected]>0 | proc[start]>1)); then up_fg="${theme[hi_fg]}"; else up_fg="${theme[inactive_fg]}"; fi
35013505

35023506
print -v proc_misc2 -m $((line+height-1)) $((col+2)) -fg ${box[processes_color]} -t "" -fg $up_fg -b -t "" -fg ${theme[title]} -t " select " -fg $down_fg -t "" -rs -fg ${box[processes_color]} -t ""
@@ -4443,7 +4447,7 @@ process_input() { #? Process keypresses for main ui
44434447
"enter") unset input_to_filter ;;
44444448
"backspace") if [[ ${#filter} -gt 0 ]]; then filter="${filter:: (-1)}"; else unset filter_change; fi ;;
44454449
"escape") unset input_to_filter filter ;;
4446-
*) if [[ ${#keypress} -eq 1 ]]; then filter+="${keypress//[\\\$\"\']/}"; else unset filter_change; fi ;;
4450+
*) if [[ ${#keypress} -eq 1 && $keypress =~ ^[A-Za-z0-9\!\@\#\%\&\/\(\)\[\+\-\_\*\,\;\.\:]$ ]]; then filter+="${keypress//[\\\$\"\']/}"; else unset filter_change; fi ;;
44474451
esac
44484452

44494453
else
@@ -4504,10 +4508,10 @@ process_input() { #? Process keypresses for main ui
45044508
fi
45054509
;;
45064510
down|tab) #* Move process selector down one
4507-
if ((proc[selected]<p_height & proc[start]+proc[selected]<(${#proc_array[@]}-1) )); then
4511+
if ((proc[selected]<p_height & proc[start]+proc[selected]<(${#proc_array[@]}) )); then
45084512
((++proc[selected]))
45094513
proc[page_change]=1
4510-
elif ((proc[start]+proc[selected]<(${#proc_array[@]}-1) )); then
4514+
elif ((proc[start]+proc[selected]<(${#proc_array[@]}) )); then
45114515
((++proc[start]))
45124516
proc[page_change]=1
45134517
fi
@@ -4543,7 +4547,7 @@ process_input() { #? Process keypresses for main ui
45434547
if ((proc[start]<(${#proc_array[@]}-1)-p_height)); then
45444548
if ((proc[start]==1)) && [[ $use_psutil == false ]]; then collect_processes now; fi
45454549
proc[start]=$(( proc[start]+p_height ))
4546-
if (( proc[start]>(${#proc_array[@]}-1)-p_height )); then proc[start]=$(( (${#proc_array[@]}-1)-p_height )); fi
4550+
if (( proc[start]>(${#proc_array[@]})-p_height )); then proc[start]=$(( (${#proc_array[@]})-p_height )); fi
45474551
proc[page_change]=1
45484552
elif ((proc[selected]>0)); then
45494553
proc[selected]=$((p_height))
@@ -4606,6 +4610,8 @@ process_input() { #? Process keypresses for main ui
46064610
f|F) #* Start process filtering input
46074611
input_to_filter=1
46084612
filter_change=1
4613+
if ((proc[selected]>1)); then proc[selected]=1; fi
4614+
proc[start]=1
46094615
;;
46104616
c|C) #* Clear process filter
46114617
if [[ -n $filter ]]; then

0 commit comments

Comments
 (0)