From: Jim Warner Date: Thu, 7 Jun 2018 05:00:00 +0000 (-0500) Subject: top: treat all of those vertical scroll keys uniformly X-Git-Tag: v4.0.0~527 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5705866fb698c8da3816ce57af264cd3f4bdf0c4;p=procps-ng top: treat all of those vertical scroll keys uniformly When not displaying all tasks (the 'i' toggle is off), the concept of vertical scrolling has no real meaning. However, only 2 keys (up/down) impacting that vertical position were currently being disabled with this mode. This patch will extend such treatment to the following additional vertical impact keys: pgup,pgdn,home & end. Signed-off-by: Jim Warner --- diff --git a/top/top.c b/top/top.c index ed0e4788..ffb5568f 100644 --- a/top/top.c +++ b/top/top.c @@ -4694,7 +4694,7 @@ static void keys_window (int ch) { if (VIZCHKw(w)) if (CHKw(w, Show_IDLEPS) && 0 < w->begtask) w->begtask -= 1; break; case kbd_DOWN: - if (VIZCHKw(w)) if (CHKw(w, Show_IDLEPS) && (w->begtask < PIDSmaxt -1)) w->begtask += 1; + if (VIZCHKw(w)) if (CHKw(w, Show_IDLEPS) && (w->begtask < PIDSmaxt - 1)) w->begtask += 1; break; #ifdef USE_X_COLHDR // ------------------------------------ case kbd_LEFT: @@ -4762,33 +4762,39 @@ static void keys_window (int ch) { break; #endif // USE_X_COLHDR ------------------------------------ case kbd_PGUP: - if (VIZCHKw(w)) if (0 < w->begtask) { + if (VIZCHKw(w)) { + if (CHKw(w, Show_IDLEPS) && 0 < w->begtask) { w->begtask -= (w->winlines - 1); if (0 > w->begtask) w->begtask = 0; } + } break; case kbd_PGDN: - if (VIZCHKw(w)) if (w->begtask < PIDSmaxt -1) { + if (VIZCHKw(w)) { + if (CHKw(w, Show_IDLEPS) && w->begtask < PIDSmaxt - 1) { w->begtask += (w->winlines - 1); - if (w->begtask > PIDSmaxt -1) w->begtask = PIDSmaxt -1; + if (w->begtask > PIDSmaxt - 1) w->begtask = PIDSmaxt - 1; if (0 > w->begtask) w->begtask = 0; - } + } + } break; case kbd_HOME: #ifndef SCROLLVAR_NO - if (VIZCHKw(w)) w->begtask = w->begpflg = w->varcolbeg = 0; + if (VIZCHKw(w)) if (CHKw(w, Show_IDLEPS)) w->begtask = w->begpflg = w->varcolbeg = 0; #else - if (VIZCHKw(w)) w->begtask = w->begpflg = 0; + if (VIZCHKw(w)) if (CHKw(w, Show_IDLEPS)) w->begtask = w->begpflg = 0; #endif break; case kbd_END: if (VIZCHKw(w)) { - w->begtask = (PIDSmaxt - w->winlines) +1; - if (0 > w->begtask) w->begtask = 0; - w->begpflg = w->endpflg; + if (CHKw(w, Show_IDLEPS)) { + w->begtask = (PIDSmaxt - w->winlines) + 1; + if (0 > w->begtask) w->begtask = 0; + w->begpflg = w->endpflg; #ifndef SCROLLVAR_NO - w->varcolbeg = 0; + w->varcolbeg = 0; #endif + } } break; default: // keep gcc happy