]> granicus.if.org Git - procps-ng/commitdiff
top: improve vertical scroll management for 'i' toggle
authorJim Warner <james.warner@comcast.net>
Sun, 12 Jul 2015 09:44:44 +0000 (04:44 -0500)
committerCraig Small <csmall@enc.com.au>
Thu, 23 Jul 2015 20:51:40 +0000 (06:51 +1000)
When a user is taking advantage of the scroll features
it is likely a scrolled vertical position is well past
the first displayable task. That is especially true of
top's forest view ('V') mode where those early systemd
attached processes are generally not very interesting.

As such, should the idle mode toggle ('i') be employed
a distorted display is almost guaranteed because tasks
that have used some cpu, and thus should be displayed,
have already been skipped by virtue of their position.

So this patch temporarily nullifies vertical scrolling
during the period when idle tasks are not being shown.

Signed-off-by: Jim Warner <james.warner@comcast.net>
top/top.c

index 4589b6c7e955ec59bda69e3ceec0d80804e25dbc..ac583d1efdc91780b978df0e2bb913ea42676767 100644 (file)
--- a/top/top.c
+++ b/top/top.c
@@ -4590,6 +4590,12 @@ static void keys_task (int ch) {
          VIZTOGw(w, Show_CMDLIN);
          break;
       case 'i':
+      {  static WIN_t *w_sav;
+         static int beg_sav;
+         if (w_sav != w) { beg_sav = 0; w_sav = w; }
+         if (CHKw(w, Show_IDLEPS)) { beg_sav = w->begtask; w->begtask = 0; }
+         else { w->begtask = beg_sav; beg_sav = 0; }
+      }
          VIZTOGw(w, Show_IDLEPS);
          break;
       case 'J':