]> granicus.if.org Git - procps-ng/commitdiff
top: avoid premature forced loss of that bottom window <=== port of newlib f40fc402
authorJim Warner <james.warner@comcast.net>
Wed, 15 Jun 2022 05:00:00 +0000 (00:00 -0500)
committerCraig Small <csmall@dropbear.xyz>
Sun, 19 Jun 2022 10:58:51 +0000 (20:58 +1000)
______________________________ original newlib message
----------------------------------- ( minus git hash )

In the commit shown below the bottom window was forced
off if a full screen replacement function was invoked.
It did so by setting Frames_signal after calling those
routines from the keys_global function. However, there
was sometimes a possibility such action was premature.

At least two of those full screen replacement routines
may issue an error message & return without corrupting
the screen. As such, forcing off that bottom window is
totally unnecessary. It therefore should be preserved.

So this commit just moves the setting of Frames_signal
to the full screen replacement routines when possible.

Reference(s):
. May, 2022 - bottom window forced off for some
commit ........................................

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

index 90b02a59b371d3e76549f21ed62c7e6291702f11..ffd76c0e6fdeff714b314b2b1466ca36ca2794f3 100644 (file)
--- a/top/top.c
+++ b/top/top.c
@@ -2476,6 +2476,9 @@ signify_that:
             break;
       }
    } while (key != 'q' && key != kbd_ESC);
+
+   // signal that we just corrupted entire screen
+   Frames_signal = BREAK_screen;
  #undef unSCRL
  #undef swapEM
  #undef spewFI
@@ -3633,8 +3636,11 @@ signify_that:
       }
    } while (key != 'q' && key != kbd_ESC);
 
+   // signal that we just corrupted entire screen
+   Frames_signal = BREAK_screen;
  #undef mkSEL
 } // end: inspection_utility
+
 #undef INSP_MKSL
 #undef INSP_RLEN
 #undef INSP_BUSY
@@ -4758,7 +4764,8 @@ signify_that:
    } while (key != kbdAPPLY && key != kbdABORT);
 
    if (key == kbdABORT || key == kbd_ESC) wins_clrhlp(w, 0);
-
+   // signal that we just corrupted entire screen
+   Frames_signal = BREAK_screen;
  #undef kbdABORT
  #undef kbdAPPLY
 } // end: wins_colors
@@ -5443,6 +5450,8 @@ signify_that:
       default:
          goto signify_that;
    }
+   // signal that we just corrupted entire screen
+   Frames_signal = BREAK_screen;
 } // end: help_view
 
 
@@ -5575,8 +5584,6 @@ static void keys_global (int ch) {
       case '?':
       case 'h':
          help_view();
-         // signal that we just corrupted entire screen
-         Frames_signal = BREAK_screen;
          mkVIZrow1
          break;
       case 'B':
@@ -5601,8 +5608,6 @@ static void keys_global (int ch) {
          break;
       case 'f':
          fields_utility();
-         // signal that we just corrupted entire screen
-         Frames_signal = BREAK_screen;
          break;
       case 'g':
          win_select(0);
@@ -5685,18 +5690,12 @@ static void keys_global (int ch) {
             pid = get_int(fmtmk(N_fmt(YINSP_pidsee_fmt), def));
             if (pid > GET_NUM_ESC) {
                if (pid == GET_NUM_NOT) pid = def;
-               if (pid) {
-                  inspection_utility(pid);
-                  // signal that we just corrupted entire screen
-                  Frames_signal = BREAK_screen;
-               }
+               if (pid) inspection_utility(pid);
             }
          }
          break;
       case 'Z':
          wins_colors();
-         // signal that we just corrupted entire screen
-         Frames_signal = BREAK_screen;
          mkVIZrow1
          break;
       case '0':