diff --git a/top/top.c b/top/top.c index 30a2fc85..dd4b9481 100644 --- a/top/top.c +++ b/top/top.c @@ -4664,7 +4664,8 @@ static void wins_stage_2 (void) { ; // avoid -Wunused-result #endif - // with preserved 'other filters', ensure a visible task on row #1 + // with preserved 'other filters' & command line 'user filters', + // we must ensure that we always have a visible task on row one. mkVIZrow1(Curwin); // lastly, initialize a signal set used to throttle one troublesome signal @@ -5362,7 +5363,10 @@ static void keys_task (int ch) { case 'O': case 'o': case kbd_CtrlO: - if (VIZCHKw(w)) other_filters(ch); + if (VIZCHKw(w)) { + other_filters(ch); + mkVIZrow1(w); + } break; case 'U': case 'u': @@ -5371,6 +5375,7 @@ static void keys_task (int ch) { if (*str != kbd_ESC && (errmsg = user_certify(w, str, ch))) show_msg(errmsg); + mkVIZrow1(w); } break; case 'V': @@ -6254,7 +6259,7 @@ static const char *task_show (const WIN_t *q, const int idx) { * In reality, this function is called: * 1) exclusively for the 'current' window * 2) immediately after interacting with the user - * 3) who struck 1 of these: up, down, pgup, pgdn, home or end + * 3) who struck: up, down, pgup, pgdn, home, end, 'o/O' or 'u/U' * 4) or upon the user switching from one window to another window */ static void window_hlp (void) { WIN_t *w = Curwin; // avoid gcc bloat with a local copy diff --git a/top/top.h b/top/top.h index 4a7c49a8..d274d109 100644 --- a/top/top.h +++ b/top/top.h @@ -471,7 +471,7 @@ typedef struct WIN_t { #endif // Support for a proper (visible) row #1 whenever Curwin changes - // ( or a certain vertical scrolling key has been struck ) + // ( or a key which might affect vertical scrolling was struck ) #define mkVIZrow1(q) { q->begtask -= 1; q->begnext = +1; } /* Special Section: end ------------------------------------------ */