#define SCREEN_ROWS ( Screen_rows - Tagged_rsvd )
// 1 for horizontal separator
#define TAGGED_RSVD ( 1 )
-#define TAGGED_UNDO do { Tagged_task = Tagged_rsvd = Tagged_enum = 0; \
- Fieldstab[eu_GENERIC].item = PIDS_extra; } while (0)
+#define TAGGED_KEEP Tagged_func = NULL
+#define TAGGED_TOSS do { Tagged_func = NULL; \
+ Tagged_task = Tagged_rsvd = Tagged_enum = 0; \
+ Fieldstab[eu_GENERIC].item = PIDS_extra; } while(0)
static int Tagged_task,
Tagged_rsvd,
Tagged_enum;
// these next guys are global, not really windows based
Monpidsidx = 0;
Rc.tics_scaled = 0;
- TAGGED_UNDO;
+ TAGGED_TOSS;
} // end: win_reset
if (i < PIDSmaxt) {
snprintf(buf, sizeof(buf), " command line for pid %d, %s"
, Tagged_task, PID_VAL(EU_CMD, str, Curwin->ppt[i]));
-#ifndef TAG_CMD_MUST
p = PID_VAL(eu_CMDLINE, str, Curwin->ppt[i]);
if (!p || !*p) p = "n/a";
-#else
- p = CHKw(Curwin, Show_CMDLIN) ? PID_VAL(eu_CMDLINE, str, Curwin->ppt[i]) : "n/a";
-#endif
Tagged_rsvd = 1 + TAGGED_RSVD + (strlen(p) / Screen_cols);
putp(fmtmk("%s%s%-*s", tg2(0, SCREEN_ROWS), Curwin->capclr_hdr, Screen_cols, buf));
putp(fmtmk("%s%s", tg2(0, SCREEN_ROWS + 1), Cap_clr_eos));
putp(fmtmk("%s%s", tg2(0, SCREEN_ROWS + 1), Cap_norm));
fputs(p, stdout);
- } else {
- TAGGED_UNDO;
}
+ TAGGED_KEEP;
} // end: wins_tag_cmdline
putp(fmtmk("%s%s", tg2(0, SCREEN_ROWS + 1), Cap_clr_eos));
putp(fmtmk("%s%s", tg2(0, SCREEN_ROWS + 1), Cap_norm));
fputs(p, stdout);
- } else {
- TAGGED_UNDO;
}
+ TAGGED_KEEP;
} // end: wins_tag_generic
def = PID_VAL(EU_PID, s_int, w->ppt[w->begtask]);
// if already targeted, assume user wants to turn it off ...
if (Tagged_task && Fieldstab[eu_GENERIC].item == PIDS_CGROUP) {
- TAGGED_UNDO;
+ TAGGED_TOSS;
} else {
Tagged_task = def;
Tagged_enum = eu_GENERIC;
case kbd_CtrlK:
def = PID_VAL(EU_PID, s_int, w->ppt[w->begtask]);
// if already targeted, assume user wants to turn it off ...
- if (Tagged_task && Tagged_func == wins_tag_cmdline) {
- TAGGED_UNDO;
+ if (Tagged_task && Tagged_enum == eu_CMDLINE) {
+ TAGGED_TOSS;
} else {
Tagged_task = def;
-#ifndef TAG_CMD_MUST
Tagged_enum = eu_CMDLINE;
-#endif
Tagged_func = wins_tag_cmdline;
Fieldstab[eu_GENERIC].item = PIDS_extra;
}
def = PID_VAL(EU_PID, s_int, w->ppt[w->begtask]);
// if already targeted, assume user wants to turn it off ...
if (Tagged_task && Fieldstab[eu_GENERIC].item == PIDS_SUPGROUPS) {
- TAGGED_UNDO;
+ TAGGED_TOSS;
} else {
Tagged_task = def;
Tagged_enum = eu_GENERIC;
def = PID_VAL(EU_PID, s_int, w->ppt[w->begtask]);
// if already targeted, assume user wants to turn it off ...
if (Tagged_task && Fieldstab[eu_GENERIC].item == PIDS_ENVIRON) {
- TAGGED_UNDO;
+ TAGGED_TOSS;
} else {
Tagged_task = def;
Tagged_enum = eu_GENERIC;
/* deal with potential signal(s) since the last time around
plus any input which may change 'tasks_refresh' needs... */
- if (Frames_signal)
+ if (Frames_signal) {
+ if (Frames_signal == BREAK_sig) TAGGED_TOSS;
zap_fieldstab();
+ }
#ifdef THREADED_TSK
sem_post(&Semaphore_tasks_beg);
/* clear to end-of-screen - critical if last window is 'idleps off'
(main loop must iterate such that we're always called before sleep) */
if (scrlins < Max_lines) {
- putp(Cap_nl_clreos);
+ for (i = scrlins + Msg_row + 1; i < SCREEN_ROWS; i++) {
+ putp(tg2(0, i));
+ putp(Cap_clr_eol);
+ }
PSU_CLREOS(Pseudo_row);
}
if (CHKw(w, View_SCROLL) && VIZISw(Curwin)) show_scroll();
- if (Tagged_task) Tagged_func();
+ if (Tagged_func) Tagged_func();
fflush(stdout);
/* we'll deem any terminal not supporting tgoto as dumb and disable