Remove old code

This commit is contained in:
Ray Chason
2026-08-10 09:28:04 +03:00
committed by Pasi Kallinen
parent b763944fb4
commit ba2c99f28c
-627
View File
@@ -98,17 +98,6 @@
static int condcolor(long, unsigned long *);
static int condattr(long, unsigned long *);
#if 0 /*RLC*/
static void HiliteField(Widget, int, int, int, XFontStruct **);
static void PrepStatusField(int, Widget, const char *);
static void DisplayCond(int, unsigned long *);
static int render_conditions(int, int);
#ifdef STATUS_HILITES
static void tt_reset_color(int, int, unsigned long *);
#endif
static void tt_status_fixup(void);
static Widget create_tty_status_field(int, int, Widget, Widget);
#endif /*RLC*/
static Widget create_tty_status(Widget, Widget);
static void stat_resized(Widget, XtPointer, XtPointer);
static void update_fancy_status_field(int, int, int);
@@ -136,11 +125,6 @@ static int X11_status_colors[MAXBLSTATS],
old_field_colors[MAXBLSTATS],
old_cond_colors[32];
static int hpbar_percent, hpbar_color;
/* Number of conditions displayed during this update and last update.
When the last update had more, the excess need to be erased. */
#if 0 /*RLC*/
static int next_cond_indx = 0, prev_cond_indx = 0;
#endif /*RLC*/
static enum statusfields X11_fieldorder_2[][18] = {
{ BL_TITLE, BL_STR, BL_DX, BL_CO, BL_IN, BL_WI, BL_CH, BL_ALIGN,
@@ -224,10 +208,6 @@ static struct tty_status_field X11_status_labels[MAXBLSTATS];
static struct tty_cond_field X11_cond_labels[32]; /* Ugh */
static boolean blink;
static const unsigned long blink_interval = 500; /* milliseconds */
#if 0 /*RLC*/
static XFontStruct *X11_status_font;
static Pixel X11_status_fg, X11_status_bg;
#endif /*RLC*/
struct xwindow *xw_status_win;
@@ -327,369 +307,6 @@ cond_bm2idx(unsigned long bm)
}
#endif
#if 0 /*RLC*/
/* highlight a tty-style status field (or condition) */
static void
HiliteField(Widget label,
int fld, int cond, int colrattr,
XFontStruct **font_p)
{
#ifdef STATUS_HILITES
static Pixel grayPxl, blackPxl, whitePxl;
Arg args[6];
Cardinal num_args;
XFontStruct *font = X11_status_font;
Pixel px, fg = X11_status_fg, bg = X11_status_bg;
struct xwindow *xw = xw_status_win;
int colr, attr;
if ((colrattr & 0x00ff) >= CLR_MAX)
colrattr = (colrattr & ~0x00ff) | NO_COLOR;
colr = colrattr & 0x00ff; /* guaranteed to be >= 0 and < CLR_MAX */
attr = (colrattr >> 8) & 0x00ff;
if (!grayPxl) {/* one-time init */
grayPxl = get_nhcolor(xw, CLR_GRAY).pixel;
blackPxl = get_nhcolor(xw, CLR_BLACK).pixel;
whitePxl = get_nhcolor(xw, CLR_WHITE).pixel;
}
/* [shouldn't be necessary; setting up gray will set up all colors] */
if (colr != NO_COLOR && !xw->nh_colors[colr].pixel)
(void) get_nhcolor(xw, colr);
/* handle highlighting if caller has specified that; set foreground,
background, and font even if not specified this time in case they
used modified values last time (which would stick if not reset) */
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
if (colr != NO_COLOR)
fg = xw->nh_colors[colr].pixel;
if ((attr & HL_INVERSE) != 0) {
px = fg;
fg = bg;
bg = px;
}
/* foreground and background might both default to black, so we
need to force one to be different if/when they're the same
(actually, tt_status_fixup() takes care of that nowadays);
using gray to implement 'dim' only works for black and white
(or color+'inverse' when former background was black or white) */
if (fg == bg
|| ((attr & HL_DIM) != 0 && (fg == whitePxl || fg == blackPxl)))
fg = (fg != grayPxl) ? grayPxl
: (fg != blackPxl) ? blackPxl
: whitePxl;
XtSetArg(args[num_args], nhStr(XtNforeground), fg); num_args++;
XtSetArg(args[num_args], nhStr(XtNbackground), bg); num_args++;
if (attr & HL_BOLD) {
load_boldfont(xw_status_win, label);
if (xw_status_win->boldfs)
font = xw_status_win->boldfs;
}
XtSetArg(args[num_args], nhStr(XtNfont), font); num_args++;
XtSetValues(label, args, num_args);
/* return possibly modified font to caller so that text width
measurement can use it */
if (font_p)
*font_p = font;
#else /*!STATUS_HILITES*/
nhUse(label);
nhUse(font_p);
#endif /*?STATUS_HILITES*/
if (fld != BL_CONDITION)
old_field_colors[fld] = colrattr;
else
old_cond_colors[cond] = colrattr;
}
/* set up a specific field other than 'condition'; its general location
was specified during widget creation but it might need adjusting */
static void
PrepStatusField(int fld, Widget label, const char *text)
{
Arg args[6];
Cardinal num_args;
Dimension lbl_wid;
XFontStruct *font = X11_status_font;
int colrattr = X11_status_colors[fld];
struct status_info_t *si = xw_status_win->Win_info.Status_info;
/* highlight if color and/or attribute(s) are different from last time */
if (colrattr != old_field_colors[fld])
HiliteField(label, fld, 0, colrattr, &font);
num_args = 0;
(void) memset((genericptr_t) args, 0, sizeof args);
/* set up the current text to be displayed */
if (text && *text) {
lbl_wid = 2 * si->in_wd + XTextWidth(font, text, (int) strlen(text));
} else {
text = "";
lbl_wid = 1;
}
XtSetArg(args[num_args], nhStr(XtNlabel), text); num_args++;
/*XtSetArg(args[num_args], nhStr(XtNwidth), lbl_wid); num_args++;*/
XtSetValues(label, args, num_args);
XtResizeWidget(label, lbl_wid, si->ht, si->brd);
}
/* set up one status condition for tty-style status display */
static void
DisplayCond(
int c_idx, /* index into tt_condorder[] */
unsigned long *colormasks)
{
Widget label;
Arg args[6];
Cardinal num_args;
Dimension lbl_wid;
XFontStruct *font = X11_status_font;
int coloridx, attrmask, colrattr, idx;
unsigned long bm = tt_condorder[c_idx].mask;
const char *text = tt_condorder[c_idx].text;
struct status_info_t *si = xw_status_win->Win_info.Status_info;
if ((X11_condition_bits & bm) == 0)
return;
/* widgets have been created for every condition; we allocate them
from left to right rather than keeping their original assignments */
idx = next_cond_indx;
label = X11_cond_labels[idx];
/* handle highlighting if caller requests it */
coloridx = condcolor(bm, colormasks);
attrmask = condattr(bm, colormasks);
colrattr = (attrmask << 8) | coloridx;
if (colrattr != old_cond_colors[c_idx])
HiliteField(label, BL_CONDITION, c_idx, colrattr, &font);
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
/* set the condition text and its width; this widget might have
been displaying a different condition last time around */
XtSetArg(args[num_args], nhStr(XtNlabel), text); num_args++;
/* measure width after maybe changing font [HiliteField()] */
lbl_wid = 2 * si->in_wd + XTextWidth(font, text, (int) strlen(text));
/*XtSetArg(args[num_args], nhStr(XtNwidth), lbl_wid); num_args++;*/
/* make this condition widget be ready for display */
XtSetValues(label, args, num_args);
XtResizeWidget(label, lbl_wid, si->ht, si->brd);
++next_cond_indx;
}
/* display the tty-style status conditions; the number shown varies and
we might be showing more, same, or fewer than during previous status */
static int
render_conditions(int row, int dx)
{
Widget label;
Arg args[6];
Cardinal num_args;
Position lbl_x;
int i, gap = 5;
struct status_info_t *si = xw_status_win->Win_info.Status_info;
Dimension lbl_wid, brd_wid = si->brd;
for (i = 0; i < next_cond_indx; i++) {
label = X11_cond_labels[i];
/* width of this widget was set in DisplayCond(); fetch it */
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
XtSetArg(args[num_args], nhStr(XtNwidth), &lbl_wid); num_args++;
XtGetValues(label, args, num_args);
/* figure out where to draw this widget and place it there */
lbl_x = (Position) (dx + 1 + gap);
XtConfigureWidget(label, lbl_x, si->y[row], lbl_wid, si->ht, brd_wid);
/* keep track of where the end of our text appears */
dx = (int) lbl_x + (int) (lbl_wid + 2 * brd_wid) - 1;
}
/* if we have fewer conditions shown now than last time, set the
excess ones to blank; unlike the set drawn above, these haven't
been prepared in advance by DisplayCond because they aren't
being displayed; they might have been highlighted last time so
we need to specify more than just an empty text string */
if (next_cond_indx < prev_cond_indx) {
XFontStruct *font = X11_status_font;
Pixel fg = X11_status_fg, bg = X11_status_bg;
lbl_x = dx + 1;
lbl_wid = 1 + 2 * brd_wid;
for (i = next_cond_indx; i < prev_cond_indx; ++i) {
label = X11_cond_labels[i];
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
XtSetArg(args[num_args], nhStr(XtNlabel), ""); num_args++;
XtSetArg(args[num_args], nhStr(XtNfont), font); num_args++;
XtSetArg(args[num_args], nhStr(XtNforeground), fg); num_args++;
XtSetArg(args[num_args], nhStr(XtNbackground), bg); num_args++;
/*XtSetArg(args[num_args], nhStr(XtNwidth), lbl_wid); num_args++;*/
/*XtSetArg(args[num_args], nhStr(XtNx), lbl_x); num_args++;*/
XtSetValues(label, args, num_args);
old_cond_colors[i] = NO_COLOR; /* fg, bg, font were just reset */
XtConfigureWidget(label, lbl_x, si->y[row], lbl_wid, si->ht, 0);
/* don't advance 'dx' here */
}
}
return dx;
}
#ifdef STATUS_HILITES
/* reset status_hilite for BL_RESET; if highlighting has been disabled or
this field is disabled, clear highlighting for this field or condition */
static void
tt_reset_color(
int fld,
int cond,
unsigned long *colormasks)
{
Widget label;
int colrattr = NO_COLOR;
if (fld != BL_CONDITION) {
if (iflags.hilite_delta != 0L && status_activefields[fld])
colrattr = X11_status_colors[fld];
cond = 0;
label = X11_status_labels[fld];
} else {
unsigned long bm = tt_condorder[cond].mask;
if (iflags.hilite_delta != 0L && (X11_condition_bits & bm) != 0) {
/* BL_RESET before first BL_CONDITION will have colormasks==Null
but condcolor() and condattr() can cope with that */
colrattr = condcolor(bm, colormasks);
colrattr |= (condattr(bm, colormasks) << 8);
}
label = X11_cond_labels[cond];
}
HiliteField(label, fld, cond, colrattr, (XFontStruct **) 0);
}
#endif
/* make sure foreground, background, and font have reasonable values,
then explicitly set them for all the status widgets;
also cache some geometry settings in (*xw_status_win).Status_info */
static void
tt_status_fixup(void)
{
Arg args[6];
Cardinal num_args;
Widget w;
Position lbl_y;
int x, y, ci, fld;
XFontStruct *font = 0;
Pixel fg = 0, bg = 0;
struct status_info_t *si = xw_status_win->Win_info.Status_info;
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
XtSetArg(args[num_args], nhStr(XtNfont), &font); num_args++;
XtSetArg(args[num_args], nhStr(XtNforeground), &fg); num_args++;
XtSetArg(args[num_args], nhStr(XtNbackground), &bg); num_args++;
XtGetValues(X11_status_widget, args, num_args);
if (fg == bg) {
XColor black = get_nhcolor(xw_status_win, CLR_BLACK),
white = get_nhcolor(xw_status_win, CLR_WHITE);
fg = (bg == white.pixel) ? black.pixel : white.pixel;
}
X11_status_fg = si->fg = fg, X11_status_bg = si->bg = bg;
if (!font) {
w = X11_status_widget;
XtSetArg(args[0], nhStr(XtNfont), &font);
do {
XtGetValues(w, args, ONE);
} while (!font && (w = XtParent(w)) != 0);
if (!font) {
/* trial and error time -- this is where we've actually
been obtaining the font even though we aren't setting
it for any of the field widgets (until for(y,x) below) */
XtGetValues(X11_status_labels[0], args, ONE);
if (!font) { /* this bit is untested... */
/* write some text and hope Xaw sets up font for us */
XtSetArg(args[0], nhStr(XtNlabel), "NetHack");
XtSetValues(X11_status_labels[0], args, ONE);
(void) XFlush(XtDisplay(X11_status_labels[0]));
XtSetArg(args[0], nhStr(XtNfont), &font);
XtGetValues(X11_status_labels[0], args, ONE);
/* if still Null, XTextWidth() would crash so bail out */
if (!font)
panic("X11 status can't determine font.");
}
}
}
X11_status_font = si->fs = font;
/* amount of space to advance a widget's location by one space;
increase width a tiny bit beyond the actual space */
si->spacew = XTextWidth(X11_status_font, " ", 1) + (Dimension) 1;
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
XtSetArg(args[num_args], nhStr(XtNfont), font); num_args++;
XtSetArg(args[num_args], nhStr(XtNforeground), fg); num_args++;
XtSetArg(args[num_args], nhStr(XtNbackground), bg); num_args++;
XtSetValues(X11_status_widget, args, num_args);
for (y = 0; y < X11_NUM_STATUS_LINES; y++) {
for (x = 0; x < X11_NUM_STATUS_FIELD; x++) {
fld = X11_fieldorder[y][x]; /* next field to handle */
if (fld <= BL_FLUSH)
continue; /* skip fieldorder[][] padding */
XtSetValues(X11_status_labels[fld], args, num_args);
old_field_colors[fld] = NO_COLOR;
if (fld == BL_CONDITION) {
for (ci = 0; ci < SIZE(X11_cond_labels); ++ci) { /* 0..31 */
XtSetValues(X11_cond_labels[ci], args, num_args);
old_cond_colors[ci] = NO_COLOR;
}
}
}
}
/* cache the y coordinate of each row for XtConfigureWidget() */
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
XtSetArg(args[0], nhStr(XtNy), &lbl_y); num_args++;
for (y = 0; y < X11_NUM_STATUS_LINES; y++) {
fld = X11_fieldorder[y][0];
XtGetValues(X11_status_labels[fld], args, num_args);
si->y[y] = lbl_y;
}
/* cache height, borderWidth, and internalWidth for XtResizeWidget() */
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
XtSetArg(args[num_args], nhStr(XtNheight), &si->ht); num_args++;
XtSetArg(args[num_args], nhStr(XtNborderWidth), &si->brd); num_args++;
XtSetArg(args[num_args], nhStr(XtNinternalWidth), &si->in_wd); num_args++;
XtGetValues(X11_status_labels[0], args, num_args);
/* X11_status_update_tty() wants this in order to right justify 'vers' */
if (!xw_status_win->pixel_width) {
XtSetArg(args[0], nhStr(XtNwidth), &xw_status_win->pixel_width);
XtGetValues(xw_status_win->w, args, ONE);
}
}
#endif /*RLC*/
DISABLE_WARNING_FORMAT_NONLITERAL
/* core requests updating one status field (or is indicating that it's time
@@ -756,176 +373,6 @@ X11_status_update_tty(
}
break;
}
#if 0 /*RLC*/
static int xtra_space[MAXBLSTATS];
static unsigned long *cond_colormasks = (unsigned long *) 0;
Arg args[6];
Cardinal num_args;
Position lbl_x;
Dimension lbl_wid, brd_wid;
Widget label;
struct status_info_t *si;
char goldbuf[40];
const char *fmt;
const char *text;
unsigned long *condptr;
int f, x, y, dx;
if (X11_status_fg == X11_status_bg || !X11_status_font)
tt_status_fixup();
if (fld == BL_RESET) {
#ifdef STATUS_HILITES
for (y = 0; y < X11_NUM_STATUS_LINES; y++) {
for (x = 0; x < X11_NUM_STATUS_FIELD; x++) {
f = X11_fieldorder[y][x];
if (f <= BL_FLUSH)
continue; /* skip padding in the fieldorder[][] layout */
if (f != BL_CONDITION) {
tt_reset_color(f, 0, (unsigned long *) 0);
} else {
int c_i;
for (c_i = 0; c_i < SIZE(tt_condorder); ++c_i)
tt_reset_color(f, c_i, cond_colormasks);
}
}
}
#endif
fld = BL_FLUSH;
}
if (fld == BL_CONDITION) {
condptr = (unsigned long *) ptr;
X11_condition_bits = *condptr;
cond_colormasks = colormasks; /* expected to be non-Null */
prev_cond_indx = next_cond_indx;
next_cond_indx = 0;
/* if any conditions are active, set up their widgets */
if (X11_condition_bits)
for (f = 0; f < SIZE(tt_condorder); ++f)
DisplayCond(f, cond_colormasks);
return;
} else if (fld != BL_FLUSH) {
/* set up a specific field other than 'condition' */
text = (char *) ptr;
if (fld == BL_GOLD)
text = decode_mixed(goldbuf, text);
xtra_space[fld] = 0;
if (status_activefields[fld]) {
fmt = (fld == BL_TITLE && iflags.wc2_hitpointbar) ? "%-30s"
: status_fieldfmt[fld] ? status_fieldfmt[fld] : "%s";
if (*fmt == ' ') {
++xtra_space[fld];
++fmt;
}
Sprintf(status_vals[fld], fmt, text);
} else {
/* don't expect this since core won't call status_update()
for a field which isn't active */
*status_vals[fld] = '\0';
}
#ifdef STATUS_HILITES
if (!iflags.hilite_delta)
color = NO_COLOR;
#endif
X11_status_colors[fld] = color;
if (iflags.wc2_hitpointbar && fld == BL_HP) {
hpbar_percent = percent;
hpbar_color = color;
}
label = X11_status_labels[fld];
text = status_vals[fld];
PrepStatusField(fld, label, text);
return;
}
/*
* BL_FLUSH: draw all the status fields.
*/
si = xw_status_win->Win_info.Status_info; /* for cached geometry */
for (y = 0; y < X11_NUM_STATUS_LINES; y++) { /* row */
dx = 0; /* no pixels written to this row yet */
for (x = 0; x < X11_NUM_STATUS_FIELD; x++) { /* 'column' */
f = X11_fieldorder[y][x];
if (f <= BL_FLUSH)
continue; /* skip padding in the fieldorder[][] layout */
if (f == BL_CONDITION) {
if (next_cond_indx > 0 || prev_cond_indx > 0)
dx = render_conditions(y, dx);
continue;
}
label = X11_status_labels[f];
text = status_vals[f];
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
XtSetArg(args[num_args], nhStr(XtNwidth), &lbl_wid); num_args++;
XtGetValues(label, args, num_args);
brd_wid = si->brd;
/* for a field which shouldn't be shown, we can't just skip
it because we might need to remove its previous content
if it has just been toggled off */
if (!status_activefields[f]) {
if (lbl_wid <= 1)
continue;
text = "";
lbl_wid = (Dimension) 1;
brd_wid = (Dimension) 0;
} else if (xtra_space[f]) {
/* if this field was to be formatted with a leading space
to separate it from the preceding field, we suppressed
that space during formatting; insert separation between
fields here; this prevents inverse video highlighting
from inverting the separating space along with the text */
dx += xtra_space[f] * si->spacew;
}
/* where to display the current widget */
lbl_x = (Position) (dx + 1);
if (f == BL_VERS) {
Dimension win_wid = xw_status_win->pixel_width,
fld_wid = lbl_wid + 2 * brd_wid;
/* in case the doodad for resizing the window via click and
drag is in the lower right corner; justifying all the way
to the edge results in the last character being obscured;
avoid that by treating the 'vers' widget as one char
bigger than it actually is (an implicit trailing space) */
fld_wid += si->spacew;
/* right justify if there's room */
if (dx < win_wid - fld_wid)
lbl_x = win_wid - fld_wid;
}
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
XtSetArg(args[num_args], nhStr(XtNlabel), text); num_args++;
/*XtSetArg(args[num_args], nhStr(XtNwidth), lbl_wid); num_args++;*/
/*XtSetArg(args[num_args], nhStr(XtNx), lbl_x); num_args++;*/
XtSetValues(label, args, num_args);
XtConfigureWidget(label, lbl_x, si->y[y],
lbl_wid, si->ht, brd_wid);
/* track the right-most pixel written so far */
dx = (int) lbl_x + (int) (lbl_wid + 2 * brd_wid) - 1;
} /* [x] fields/columns in current row */
} /* [y] rows */
/* this probably doesn't buy us anything but it isn't a sure thing
that nethack will immediately ask for input (triggering auto-flush) */
(void) XFlush(XtDisplay(X11_status_labels[0]));
#endif /*RLC*/
}
RESTORE_WARNING_FORMAT_NONLITERAL
@@ -1045,63 +492,14 @@ X11_status_update(
X11_status_update_tty(fld, ptr, chg, percent, color, colormasks);
}
#if 0 /*RLC*/
/* create a widget for a particular status field or potential condition */
static Widget
create_tty_status_field(int fld, int condindx, Widget above, Widget left)
{
Arg args[16];
Cardinal num_args;
char labelname[40];
int gap = condindx ? 5 : 0;
if (!condindx)
Sprintf(labelname, "label_%s", bl_idx_to_fldname(fld));
else
Sprintf(labelname, "cond_%02d", condindx);
/* set up widget attributes which (mostly) aren't going to be changing */
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
if (above) {
XtSetArg(args[num_args], nhStr(XtNfromVert), above); num_args++;
}
if (left) {
XtSetArg(args[num_args], nhStr(XtNfromHoriz), left); num_args++;
}
XtSetArg(args[num_args], nhStr(XtNhorizDistance), gap); num_args++;
XtSetArg(args[num_args], nhStr(XtNvertDistance), 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNtopMargin), 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottomMargin), 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNleftMargin), 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNrightMargin), 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNjustify), XtJustifyLeft); num_args++;
/* internalWidth: default is 4; cut that it half and adjust regular
width to have it on both left and right instead of just on the left */
XtSetArg(args[num_args], nhStr(XtNinternalWidth), 2); num_args++;
XtSetArg(args[num_args], nhStr(XtNborderWidth), 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNlabel), ""); num_args++;
return XtCreateManagedWidget(labelname, labelWidgetClass,
X11_status_widget, args, num_args);
}
#endif /*RLC*/
/* create an overall status widget (X11_status_widget) and also
separate widgets for all status fields and potential conditions */
static Widget
create_tty_status(Widget parent, Widget top)
{
Widget form; /* viewport that holds the form that surrounds everything */
#if 0 /*RLC*/
Widget w, over_w, prev_w;
#endif /*RLC*/
Arg args[6];
Cardinal num_args;
#if 0 /*RLC*/
int x, y, i, fld;
#endif /*RLC*/
(void) memset((genericptr_t) args, 0, sizeof args);
num_args = 0;
@@ -1133,31 +531,6 @@ create_tty_status(Widget parent, Widget top)
XtAppAddTimeOut(app_context, blink_interval, tty_status_blink,
(XtPointer) X11_status_widget);
#if 0 /*RLC*/
for (y = 0; y < X11_NUM_STATUS_LINES; y++) {
fld = (y > 0) ? X11_fieldorder[y - 1][0] : 0; /* temp, for over_w */
/* for row(s) beyond the first, pick a widget in the previous
row to put this one underneath (in 'y' terms; 'x' is fluid) */
over_w = (y > 0) ? X11_status_labels[fld] : (Widget) 0;
/* widget on current row to put the next one to the right of ('x') */
prev_w = (Widget) 0;
for (x = 0; x < X11_NUM_STATUS_FIELD; x++) {
fld = X11_fieldorder[y][x]; /* next field to handle */
if (fld <= BL_FLUSH)
continue; /* skip fieldorder[][] padding */
w = create_tty_status_field(fld, 0, over_w, prev_w);
X11_status_labels[fld] = prev_w = w;
if (fld == BL_CONDITION) {
for (i = 1; i <= SIZE(X11_cond_labels); ++i) { /* 1..32 */
w = create_tty_status_field(fld, i, over_w, prev_w);
X11_cond_labels[i - 1] = prev_w = w;
}
}
}
}
#endif /*RLC*/
return X11_status_widget;
}