]> granicus.if.org Git - procps-ng/commitdiff
top: treat all of those vertical scroll keys uniformly
authorJim Warner <james.warner@comcast.net>
Thu, 7 Jun 2018 05:00:00 +0000 (00:00 -0500)
committerCraig Small <csmall@enc.com.au>
Sat, 9 Jun 2018 11:45:38 +0000 (21:45 +1000)
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 <james.warner@comcast.net>
top/top.c

index ed0e478830c11497910c06ea94bc052edce1f8f8..ffb5568f285fc766760532cea5c5bc2f97c5ee71 100644 (file)
--- 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