]> granicus.if.org Git - procps-ng/commitdiff
top: add visual clue when focus toggle ('F') is active
authorJim Warner <james.warner@comcast.net>
Fri, 14 Jan 2022 20:14:14 +0000 (14:14 -0600)
committerCraig Small <csmall@dropbear.xyz>
Mon, 17 Jan 2022 09:26:17 +0000 (20:26 +1100)
When in forest view mode, that focus toggle ('F') is a
useful tool occasionally. But, if a focused parent has
enough cloned siblings to exceed screen rows, it could
be hard to remember that such a toggle remains active.

So, this patch will provide a subtle visual clue added
to the leftmost position in the COMMAND column. Now if
the focus toggle was active, regardless of total tasks
affected, the users will always know when it's active.

Reference(s):
. -7/24/21, introduced new focus toggle
commit 3e922e671daf09ae60ee211b5c0ef94996ee573d
. 09/23/21, ensure focused tasks stay focused
commit 69978e365043f27305e487709474947bb377084d

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

index f064c29d1cd32ff23dbb957c74b23d93681b4286..3aae009e30663003d61d44a5065af6665c7c776d 100644 (file)
--- a/top/top.c
+++ b/top/top.c
@@ -4685,8 +4685,16 @@ static inline const char *forest_display (const WIN_t *q, int idx) {
 #endif
       return buf;
    }
-   if (level > 100) snprintf(buf, sizeof(buf), "%400s%s", " +  ", which);
+   if (level > 100) {
+      snprintf(buf, sizeof(buf), "%400s%s", " +  ", which);
+      return buf;
+   }
+#ifndef FOCUS_VIZOFF
+   if (q->focus_pid) snprintf(buf, sizeof(buf), "|%*s%s", ((4 * level) - 1), "`- ", which);
    else snprintf(buf, sizeof(buf), "%*s%s", (4 * level), " `- ", which);
+#else
+   snprintf(buf, sizeof(buf), "%*s%s", (4 * level), " `- ", which);
+#endif
    return buf;
  #undef rSv
  #undef rSv_Lvl
index 3e28afe430ebbb2b7aff59f12c4975c212fd0c46..527977295da7dd52f674db56d4d592a1ffc216ce 100644 (file)
--- a/top/top.h
+++ b/top/top.h
@@ -31,6 +31,7 @@
 //#define EQUCOLHDRYES            /* yes, equalize the column header lengths */
 //#define FOCUS_HARD_Y            /* 'F' will avoid topmost task distortions */
 //#define FOCUS_TREE_X            /* 'F' resets forest view indentation to 0 */
+//#define FOCUS_VIZOFF            /* 'F' doesn't provide the visual clue '|' */
 //#define GETOPTFIX_NO            /* do not address getopt_long deficiencies */
 //#define INSP_JUSTNOT            /* do not smooth unprintable right margins */
 //#define INSP_OFFDEMO            /* disable demo screens, issue msg instead */