Merge branch 'master' into win32-x64-working

Conflicts:
	include/hack.h
	win/X11/winmenu.c
	win/X11/winstat.c
This commit is contained in:
nhmall
2015-05-06 19:53:26 -04:00
22 changed files with 659 additions and 402 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 hack.h $NHDT-Date: 1429136301 2015/04/15 22:18:21 $ $NHDT-Branch: win32-x64-working $:$NHDT-Revision: 1.59 $ */
/* NetHack 3.5 hack.h $NHDT-Date: 1430897858 2015/05/06 07:37:38 $ $NHDT-Branch: master $:$NHDT-Revision: 1.59 $ */
/* SCCS Id: @(#)hack.h 3.5 2008/03/19 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -9,37 +9,7 @@
#ifndef CONFIG_H
#include "config.h"
#endif
/* [DEBUG shouldn't be defined unless you know what you're doing...] */
#ifdef DEBUG
# define showdebug(file) debugcore(file, TRUE)
# define explicitdebug(file) debugcore(file, FALSE)
# define ifdebug(stmt) do { if (showdebug(__FILE__)) stmt; } while (0)
# ifdef _MSC_VER
/* if we have microsoft's C runtime we can use these instead */
# include <crtdbg.h>
# define crtdebug(stmt) do { if (showdebug(__FILE__)) stmt; \
_RPT0(_CRT_WARN,"\n"); } while (0)
# define debugpline0(str) crtdebug(_RPT0(_CRT_WARN,str))
# define debugpline1(fmt,arg) crtdebug(_RPT1(_CRT_WARN,fmt,arg))
# define debugpline2(fmt,a1,a2) crtdebug(_RPT2(_CRT_WARN,fmt,a1,a2))
# define debugpline3(fmt,a1,a2,a3) crtdebug(_RPT3(_CRT_WARN,fmt,a1,a2,a3))
# define debugpline4(fmt,a1,a2,a3,a4) crtdebug(_RPT4(_CRT_WARN,fmt,a1,a2,a3,a4))
# else
/* these don't require compiler support for C99 variadic macros */
# define debugpline0(str) ifdebug(pline(str))
# define debugpline1(fmt,arg) ifdebug(pline(fmt,arg))
# define debugpline2(fmt,a1,a2) ifdebug(pline(fmt,a1,a2))
# define debugpline3(fmt,a1,a2,a3) ifdebug(pline(fmt,a1,a2,a3))
# define debugpline4(fmt,a1,a2,a3,a4) ifdebug(pline(fmt,a1,a2,a3,a4))
# endif
#else
# define debugpline0(str) /*empty*/
# define debugpline1(fmt,arg) /*empty*/
# define debugpline2(fmt,a1,a2) /*empty*/
# define debugpline3(fmt,a1,a2,a3) /*empty*/
# define debugpline4(fmt,a1,a2,a3,a4) /*empty*/
#endif /*DEBUG*/
#include "lint.h"
#define TELL 1
#define NOTELL 0

52
include/lint.h Normal file
View File

@@ -0,0 +1,52 @@
/* NetHack 3.5 lint.h $NHDT-Date: 1430897871 2015/05/06 07:37:51 $ $NHDT-Branch: master $:$NHDT-Revision: 1.0 $ */
/* NetHack may be freely redistributed. See license for details. */
/*
* Hacks to suppress compiler warnings. Use with caution.
* Assumes it has been preceded by '#include "config.h"' but
* not necessarily by '#include "hack.h"'.
*/
#ifndef LINT_H
#define LINT_H
/* cast away implicit const from a string literal (caller's responsibility
to ensure that) in order to avoid a warning from 'gcc -Wwrite-strings'
(also caller's responsibility to ensure it isn't actually modified!) */
#define nhStr(str) ((char *)str)
#if defined(GCC_WARN) && !defined(FORCE_ARG_USAGE)
# define FORCE_ARG_USAGE
#endif
#ifdef FORCE_ARG_USAGE
/* force an unused function argument to become used in an arbitrary
manner in order to suppress warning about unused function arguments;
viable for scalar and pointer arguments */
# define nhUse(arg) nhUse_dummy += (unsigned)arg;
extern unsigned nhUse_dummy;
#else
# define nhUse(arg) /*empty*/
#endif
/*
* This stuff isn't related to lint suppression but lives here to
* avoid cluttering up hack.h.
*/
/* [DEBUG shouldn't be defined unless you know what you're doing...] */
#ifdef DEBUG
# define ifdebug(stmt) do { if (showdebug(__FILE__)) stmt; } while (0)
/* these don't require compiler support for C99 variadic macros */
# define debugpline0(str) ifdebug(pline(str))
# define debugpline1(fmt,arg) ifdebug(pline(fmt,arg))
# define debugpline2(fmt,a1,a2) ifdebug(pline(fmt,a1,a2))
# define debugpline3(fmt,a1,a2,a3) ifdebug(pline(fmt,a1,a2,a3))
# define debugpline4(fmt,a1,a2,a3,a4) ifdebug(pline(fmt,a1,a2,a3,a4))
#else
# define debugpline0(str) /*empty*/
# define debugpline1(fmt,arg) /*empty*/
# define debugpline2(fmt,a1,a2) /*empty*/
# define debugpline3(fmt,a1,a2,a3) /*empty*/
# define debugpline4(fmt,a1,a2,a3,a4) /*empty*/
#endif /*DEBUG*/
#endif /* LINT_H */

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 winX.h $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 winX.h $NHDT-Date: 1430899132 2015/05/06 07:58:52 $ $NHDT-Branch: master $:$NHDT-Revision: 1.10 $ */
/* NetHack 3.5 winX.h $Date: 2012/01/24 04:26:18 $ $Revision: 1.9 $ */
/* Copyright (c) Dean Luick, 1992 */
/* NetHack may be freely redistributed. See license for details. */
@@ -356,7 +356,7 @@ E void FDECL(calculate_rip_text, (int,time_t));
/* ### winval.c ### */
E Widget FDECL(create_value,(Widget, const char*));
E void FDECL(set_name,(Widget, char*));
E void FDECL(set_name,(Widget, const char*));
E void FDECL(set_name_width,(Widget, int));
E int FDECL(get_name_width,(Widget));
E void FDECL(set_value,(Widget, const char*));

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 decl.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 decl.c $NHDT-Date: 1430897862 2015/05/06 07:37:42 $ $NHDT-Branch: master $:$NHDT-Revision: 1.56 $ */
/* NetHack 3.5 decl.c $Date: 2012/04/09 02:56:30 $ $Revision: 1.37 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -331,6 +331,9 @@ NEARDATA struct savefile_info sfrestinfo, sfsaveinfo = {
char *ARGV0;
#endif
/* support for lint.h */
unsigned nhUse_dummy = 0;
/* dummy routine used to force linkage */
void
decl_init()

View File

@@ -568,6 +568,7 @@ int ttyp;
if (!ttmp) return;
newobjs = level.objects[x][y];
ttmp->madeby_u = madeby_u;
ttmp->tseen = 0;
if (cansee(x,y)) seetrap(ttmp);
else if (madeby_u) feeltrap(ttmp);

View File

@@ -217,7 +217,8 @@ const char *verb;
/* Globby things like puddings might stick together */
while (obj && (otmp = obj_nexto_xy(obj->otyp, x, y, obj->o_id)) != (struct obj*)0) {
pudding_merge_message(obj, otmp);
obj = obj_meld(&obj, &otmp);
/* intentionally not getting the melded object; obj_meld may set obj to null. */
(void) obj_meld(&obj, &otmp);
}
return (obj == NULL);
}

View File

@@ -239,10 +239,15 @@ boolean devour;
unseen spot to eat the food there, avoid referring to that
pet as "it". However, we want "it" if invisible/unsensed
pet eats visible food. */
if (seeobj || sawpet)
pline("%s %s %s.",
(sawpet || canspotmon(mtmp)) ? noit_Monnam(mtmp) : "It",
devour ? "devours" : "eats", distant_name(obj, doname));
if (sawpet || (seeobj && canspotmon(mtmp))) {
if (tunnels(mtmp->data))
pline("%s digs in.", noit_Monnam(mtmp));
else
pline("%s %s %s.", noit_Monnam(mtmp),
devour ? "devours" : "eats", distant_name(obj, doname));
} else if (seeobj)
pline("It %s %s.", devour ? "devours" : "eats",
distant_name(obj, doname));
}
if (obj->unpaid) {
Strcpy(objnambuf, xname(obj));

View File

@@ -425,8 +425,8 @@ struct obj *obj;
goto added;
}
/* didn't merge, so insert into chain */
assigninvlet(obj);
if (flags.invlet_constant || !prev) {
if (flags.invlet_constant) assigninvlet(obj);
obj->nobj = invent; /* insert at beginning */
invent = obj;
if (flags.invlet_constant) reorder_invent();
@@ -1134,7 +1134,14 @@ register const char *let,*word;
}
/* they typed a letter (not a space) at the prompt */
}
if (ilet == def_oc_syms[COIN_CLASS].sym) {
/* find the item which was picked */
for (otmp = invent; otmp; otmp = otmp->nobj)
if (otmp->invlet == ilet) break;
/* some items have restrictions */
if (ilet == def_oc_syms[COIN_CLASS].sym
/* guard against the [hypothetical] chace of having more
than one invent slot of gold and picking the non-'$' one */
|| (otmp && otmp->oclass == COIN_CLASS)) {
if (!usegold) {
You("cannot %s gold.", word);
return(struct obj *)0;
@@ -1156,7 +1163,8 @@ register const char *let,*word;
/* permit counts for throwing gold, but don't accept
* counts for other things since the throw code will
* split off a single item anyway */
if (ilet != def_oc_syms[COIN_CLASS].sym)
if (ilet != def_oc_syms[COIN_CLASS].sym
&& !(otmp && otmp->oclass == COIN_CLASS))
allowcnt = 1;
if (cnt == 0 && prezero) return (struct obj *)0;
if (cnt > 1) {
@@ -1166,8 +1174,9 @@ register const char *let,*word;
}
context.botl = 1; /* May have changed the amount of money */
savech(ilet);
for (otmp = invent; otmp; otmp = otmp->nobj)
if (otmp->invlet == ilet) break;
/* [we used to set otmp (by finding ilet in invent) here, but
that's been moved above so that otmp can be checked earlier] */
/* verify the chosen object */
if(!otmp) {
You("don't have that object.");
if (in_doagain) return((struct obj *) 0);
@@ -2958,23 +2967,33 @@ free_invbuf()
invbufsiz = 0;
}
/* give consecutive letters to every item in inventory (for !fixinv mode) */
/* give consecutive letters to every item in inventory (for !fixinv mode);
gold is always forced to '$' slot at head of list */
void
reassign()
{
register int i;
register struct obj *obj;
int i;
struct obj *obj, *prevobj, *goldobj;
for(obj = invent, i = 0; obj; obj = obj->nobj, i++) {
if (obj->oclass == COIN_CLASS && obj->invlet == GOLD_SYM)
--i; /* keep $ instead of using up i'th letter */
else
if (i < 52)
obj->invlet = (i < 26) ? ('a'+i) : ('A'+i-26);
else if (obj->oclass == COIN_CLASS)
obj->invlet = GOLD_SYM;
else
obj->invlet = NOINVSYM;
/* first, remove [first instance of] gold from invent, if present */
prevobj = goldobj = 0;
for (obj = invent; obj; prevobj = obj, obj = obj->nobj)
if (obj->oclass == COIN_CLASS) {
goldobj = obj;
if (prevobj)
prevobj->nobj = goldobj->nobj;
else
invent = goldobj->nobj;
break;
}
/* second, re-letter the rest of the list */
for (obj = invent, i = 0; obj; obj = obj->nobj, i++)
obj->invlet = (i < 26) ? ('a'+i) : (i < 52) ? ('A'+i-26) : NOINVSYM;
/* third, assign gold the "letter" '$' and re-insert it at head */
if (goldobj) {
goldobj->invlet = GOLD_SYM;
goldobj->nobj = invent;
invent = goldobj;
}
if (i >= 52) i = 52 - 1;
lastinvnr = i;

View File

@@ -1818,6 +1818,8 @@ struct permonst _mons2[] = {
M3_INFRAVISIBLE|M3_INFRAVISION, HI_LORD),
/*
* Puddings
*
* must be in the same order as the pudding globs in objects.c
*/
MON("gray ooze", S_PUDDING,
LVL(3, 1, 8, 0, 0), (G_GENO|G_NOCORPSE|2),

View File

@@ -675,7 +675,8 @@ OBJECT(OBJ("meat ring", (char *)0),
BITS(1,0,0,0,0,0,0,0,0,0,0,0,FLESH),
0, FOOD_CLASS, 0, 1, 5, 1, 0, 0, 0, 0, 5, CLR_BROWN),
/* pudding 'corpses' will turn into these and combine */
/* pudding 'corpses' will turn into these and combine.
must be in same order as the pudding monsters */
FOOD("glob of gray ooze", 0, 2, 20, 0, FLESH, 20, CLR_GRAY),
FOOD("glob of brown pudding", 0, 2, 20, 0, FLESH, 20, CLR_BROWN),
FOOD("glob of green slime", 0, 2, 20, 0, FLESH, 20, CLR_GREEN),

View File

@@ -115,6 +115,7 @@ register struct monst *mtmp;
tmp = (somegold(money_cnt(invent)) + gold_price - 1) / gold_price;
tmp = min(tmp, ygold->quan);
if (tmp < ygold->quan) ygold = splitobj(ygold, tmp);
else setnotworn(ygold);
freeinv(ygold);
add_to_minv(mtmp, ygold);
Your("purse feels lighter.");

View File

@@ -1,5 +1,5 @@
# NetHack Makefile.
# NetHack 3.5 Makefile.src $NHDT-Date: 1428590253 2015/04/09 14:37:33 $ $NHDT-Branch: scshunt-regex $:$NHDT-Revision: 1.38 $
# NetHack 3.5 Makefile.src $NHDT-Date: 1430897864 2015/05/06 07:37:44 $ $NHDT-Branch: master $:$NHDT-Revision: 1.39 $
# NetHack 3.5 Makefile.src $Date: 2012/01/20 03:41:33 $ $Revision: 1.37 $
# Root of source tree:
@@ -369,7 +369,8 @@ CSOURCES = $(HACKCSRC) $(SYSCSRC) $(WINCSRC) $(CHAINSRC) $(GENCSRC)
HACKINCL = align.h amiconf.h artifact.h artilist.h attrib.h beconf.h botl.h \
color.h config.h config1.h context.h coord.h decl.h def_os2.h \
display.h dlb.h dungeon.h engrave.h extern.h flag.h func_tab.h \
global.h hack.h lev.h macconf.h mextra.h mfndpos.h micro.h mkroom.h \
global.h hack.h lev.h lint.h macconf.h mextra.h mfndpos.h micro.h \
mkroom.h \
monattk.h mondata.h monflag.h monst.h monsym.h obj.h objclass.h \
os2conf.h patchlevel.h pcconf.h permonst.h prop.h rect.h region.h rm.h \
sp_lev.h spell.h sys.h system.h tcap.h timeout.h tosconf.h tradstdc.h \
@@ -572,7 +573,7 @@ $(CONFIG_H): ../include/config.h ../include/config1.h ../include/tradstdc.h \
../include/wceconf.h ../include/ntconf.h
touch $(CONFIG_H)
# hack.h timestamp
$(HACK_H): ../include/hack.h $(CONFIG_H) ../include/align.h \
$(HACK_H): ../include/hack.h $(CONFIG_H) ../include/lint.h ../include/align.h \
../include/dungeon.h ../include/monsym.h ../include/mkroom.h \
../include/objclass.h ../include/youprop.h ../include/prop.h \
../include/permonst.h ../include/monattk.h \
@@ -624,7 +625,7 @@ topl.o: ../win/tty/topl.c $(HACK_H) ../include/tcap.h
wintty.o: ../win/tty/wintty.c $(HACK_H) ../include/dlb.h ../include/tcap.h
$(CC) $(CFLAGS) -c ../win/tty/wintty.c
Window.o: ../win/X11/Window.c ../include/xwindowp.h ../include/xwindow.h \
$(CONFIG_H)
$(CONFIG_H) ../include/lint.h
$(CC) $(CFLAGS) -c ../win/X11/Window.c
dialogs.o: ../win/X11/dialogs.c $(CONFIG_H)
$(CC) $(CFLAGS) -c ../win/X11/dialogs.c

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 Window.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 Window.c $NHDT-Date: 1430899134 2015/05/06 07:58:54 $ $NHDT-Branch: master $:$NHDT-Revision: 1.5 $ */
/* NetHack 3.5 Window.c $Date: 2009/05/06 10:55:43 $ $Revision: 1.4 $ */
/* SCCS Id: @(#)Window.c 3.5 1993/02/02 */
/* Copyright (c) Dean Luick, 1992 */
@@ -34,55 +34,56 @@
#include "xwindowp.h"
#include "config.h"
#include "lint.h"
static XtResource resources[] = {
#define offset(field) XtOffset(WindowWidget, window.field)
/* {name, class, type, size, offset, default_type, default_addr}, */
{ XtNrows, XtCRows, XtRDimension, sizeof(Dimension),
{ nhStr(XtNrows), nhStr(XtCRows), XtRDimension, sizeof(Dimension),
offset(rows), XtRImmediate, (XtPointer) 21},
{ XtNcolumns, XtCColumns, XtRDimension, sizeof(Dimension),
{ nhStr(XtNcolumns), nhStr(XtCColumns), XtRDimension, sizeof(Dimension),
offset(columns), XtRImmediate, (XtPointer) 80},
{ XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
offset(foreground), XtRString, XtDefaultForeground },
{ nhStr(XtNforeground), XtCForeground, XtRPixel, sizeof(Pixel),
offset(foreground), XtRString, (XtPointer) XtDefaultForeground },
{ XtNblack, XtCColor, XtRPixel, sizeof(Pixel),
offset(black), XtRString, "black"},
{ XtNred, XtCColor, XtRPixel, sizeof(Pixel),
offset(red), XtRString, "red" },
{ XtNgreen, XtCColor, XtRPixel, sizeof(Pixel),
offset(green), XtRString, "pale green" },
{ XtNbrown, XtCColor, XtRPixel, sizeof(Pixel),
offset(brown), XtRString, "brown" },
{ XtNblue, XtCColor, XtRPixel, sizeof(Pixel),
offset(blue), XtRString, "blue" },
{ XtNmagenta, XtCColor, XtRPixel, sizeof(Pixel),
offset(magenta), XtRString, "magenta" },
{ XtNcyan, XtCColor, XtRPixel, sizeof(Pixel),
offset(cyan), XtRString, "light cyan" },
{ XtNgray, XtCColor, XtRPixel, sizeof(Pixel),
offset(gray), XtRString, "gray" },
{ XtNorange, XtCColor, XtRPixel, sizeof(Pixel),
offset(orange), XtRString, "orange" },
{ XtNbright_green, XtCColor, XtRPixel, sizeof(Pixel),
offset(bright_green), XtRString, "green" },
{ XtNyellow, XtCColor, XtRPixel, sizeof(Pixel),
offset(yellow), XtRString, "yellow" },
{ XtNbright_blue, XtCColor, XtRPixel, sizeof(Pixel),
offset(bright_blue), XtRString, "royal blue" },
{ XtNbright_magenta, XtCColor, XtRPixel, sizeof(Pixel),
offset(bright_magenta), XtRString, "violet" },
{ XtNbright_cyan, XtCColor, XtRPixel, sizeof(Pixel),
offset(bright_cyan), XtRString, "cyan" },
{ XtNwhite, XtCColor, XtRPixel, sizeof(Pixel),
offset(white), XtRString, "white" },
{ nhStr(XtNblack), XtCColor, XtRPixel, sizeof(Pixel),
offset(black), XtRString, (XtPointer) "black"},
{ nhStr(XtNred), XtCColor, XtRPixel, sizeof(Pixel),
offset(red), XtRString, (XtPointer) "red" },
{ nhStr(XtNgreen), XtCColor, XtRPixel, sizeof(Pixel),
offset(green), XtRString, (XtPointer) "pale green" },
{ nhStr(XtNbrown), XtCColor, XtRPixel, sizeof(Pixel),
offset(brown), XtRString, (XtPointer) "brown" },
{ nhStr(XtNblue), XtCColor, XtRPixel, sizeof(Pixel),
offset(blue), XtRString, (XtPointer) "blue" },
{ nhStr(XtNmagenta), XtCColor, XtRPixel, sizeof(Pixel),
offset(magenta), XtRString, (XtPointer) "magenta" },
{ nhStr(XtNcyan), XtCColor, XtRPixel, sizeof(Pixel),
offset(cyan), XtRString, (XtPointer) "light cyan" },
{ nhStr(XtNgray), XtCColor, XtRPixel, sizeof(Pixel),
offset(gray), XtRString, (XtPointer) "gray" },
{ nhStr(XtNorange), XtCColor, XtRPixel, sizeof(Pixel),
offset(orange), XtRString, (XtPointer) "orange" },
{ nhStr(XtNbright_green), XtCColor, XtRPixel, sizeof(Pixel),
offset(bright_green), XtRString, (XtPointer) "green" },
{ nhStr(XtNyellow), XtCColor, XtRPixel, sizeof(Pixel),
offset(yellow), XtRString, (XtPointer) "yellow" },
{ nhStr(XtNbright_blue), XtCColor, XtRPixel, sizeof(Pixel),
offset(bright_blue), XtRString, (XtPointer) "royal blue" },
{ nhStr(XtNbright_magenta), XtCColor, XtRPixel, sizeof(Pixel),
offset(bright_magenta), XtRString, (XtPointer) "violet" },
{ nhStr(XtNbright_cyan), XtCColor, XtRPixel, sizeof(Pixel),
offset(bright_cyan), XtRString, (XtPointer) "cyan" },
{ nhStr(XtNwhite), XtCColor, XtRPixel, sizeof(Pixel),
offset(white), XtRString, (XtPointer) "white" },
{ XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *),
offset(font), XtRString, XtDefaultFont },
{ XtNexposeCallback, XtCCallback, XtRCallback, sizeof(XtCallbackList),
{ nhStr(XtNfont), XtCFont, XtRFontStruct, sizeof(XFontStruct *),
offset(font), XtRString, (XtPointer) XtDefaultFont },
{ nhStr(XtNexposeCallback), XtCCallback, XtRCallback, sizeof(XtCallbackList),
offset(expose_callback), XtRCallback, (char *)0 },
{ XtNcallback, XtCCallback, XtRCallback, sizeof(XtCallbackList),
{ nhStr(XtNcallback), XtCCallback, XtRCallback, sizeof(XtCallbackList),
offset(input_callback), XtRCallback, (char *)0 },
{ XtNresizeCallback, XtCCallback, XtRCallback, sizeof(XtCallbackList),
{ nhStr(XtNresizeCallback), XtCCallback, XtRCallback, sizeof(XtCallbackList),
offset(resize_callback), XtRCallback, (char *)0 },
#undef offset
};
@@ -94,11 +95,17 @@ static void no_op(w, event, params, num_params)
String *params; /* unused */
Cardinal *num_params; /* unused */
{
nhUse(w);
nhUse(event);
nhUse(params);
nhUse(num_params);
return;
}
static XtActionsRec actions[] =
{
{"no-op", no_op},
{ nhStr("no-op"), no_op },
};
static char translations[] =
@@ -111,6 +118,8 @@ static void Redisplay(w, event, region)
XEvent *event;
Region region; /* unused */
{
nhUse(region);
/* This isn't correct - we need to call the callback with region. */
XtCallCallbacks(w, XtNexposeCallback, (caddr_t) event);
}
@@ -126,7 +135,7 @@ static void Resize(w)
WindowClassRec windowClassRec = {
{ /* core fields */
/* superclass */ (WidgetClass) &widgetClassRec,
/* class_name */ "Window",
/* class_name */ nhStr("Window"),
/* widget_size */ sizeof(WindowRec),
/* class_initialize */ 0,
/* class_part_initialize */ 0,

View File

@@ -40,7 +40,15 @@
* + Changed the default width response text widget to be as wide as the
* window itself. Suggestion from David E. Wexelblat, dwex@goblin.org.
*
* $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$
* Modified 5/2015, anonymous.
* + Include nethack's lint.h to get nhStr() macro.
* + Use nhStr() on string literals (or macros from <X11/StringDefs.h>
* that hide string literals) to cast away implicit 'const' in order
* to suppress "warning: assignment discards qualifers from pointer
* target type" issued by 'gcc -Wwrite-strings' as used by nethack.
* (For this file, always the second parameter to XtSetArg().)
*
* $NHDT-Date: 1430899133 2015/05/06 07:58:53 $ $NHDT-Branch: master $:$NHDT-Revision: 1.3 $
* $Date: 2002/03/31 17:11:23 $ $Revision: 1.2 $
*/
@@ -65,6 +73,7 @@
#endif
#include "config.h" /* #define for const for non __STDC__ compilers */
#include "lint.h" /* for nethack's nhStr() macro */
/* ":" added to both translations below to allow limited redefining of
* keysyms before testing for keysym values -- dlc */
@@ -98,7 +107,7 @@ CreateDialog(parent, name, okay_callback, cancel_callback)
num_args = 0;
#ifdef SPECIAL_CMAP
if (special_cmap) {
XtSetArg(args[num_args], XtNbackground, white); num_args++;
XtSetArg(args[num_args], nhStr(XtNbackground), white); num_args++;
}
#endif
form = XtCreateManagedWidget(name, formWidgetClass, parent, args, num_args);
@@ -106,52 +115,52 @@ CreateDialog(parent, name, okay_callback, cancel_callback)
num_args = 0;
#ifdef SPECIAL_CMAP
if (special_cmap) {
XtSetArg(args[num_args], XtNforeground, black); num_args++;
XtSetArg(args[num_args], XtNbackground, white); num_args++;
XtSetArg(args[num_args], nhStr(XtNforeground), black); num_args++;
XtSetArg(args[num_args], nhStr(XtNbackground), white); num_args++;
}
#endif
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNresizable, True); num_args++;
XtSetArg(args[num_args], XtNborderWidth, 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNresizable), True); num_args++;
XtSetArg(args[num_args], nhStr(XtNborderWidth), 0); num_args++;
prompt = XtCreateManagedWidget("prompt", labelWidgetClass,
form, args, num_args);
num_args = 0;
#ifdef SPECIAL_CMAP
if (special_cmap) {
XtSetArg(args[num_args], XtNforeground, black); num_args++;
XtSetArg(args[num_args], XtNbackground, white); num_args++;
XtSetArg(args[num_args], nhStr(XtNforeground), black); num_args++;
XtSetArg(args[num_args], nhStr(XtNbackground), white); num_args++;
}
#endif
XtSetArg(args[num_args], XtNfromVert, prompt); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNresizable, True); num_args++;
XtSetArg(args[num_args], XtNeditType, XawtextEdit); num_args++;
XtSetArg(args[num_args], XtNresize, XawtextResizeWidth); num_args++;
XtSetArg(args[num_args], XtNstring, ""); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), prompt); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNresizable), True); num_args++;
XtSetArg(args[num_args], nhStr(XtNeditType), XawtextEdit); num_args++;
XtSetArg(args[num_args], nhStr(XtNresize), XawtextResizeWidth); num_args++;
XtSetArg(args[num_args], nhStr(XtNstring), ""); num_args++;
response = XtCreateManagedWidget("response", asciiTextWidgetClass,
form, args, num_args);
num_args = 0;
#ifdef SPECIAL_CMAP
if (special_cmap) {
XtSetArg(args[num_args], XtNforeground, black); num_args++;
XtSetArg(args[num_args], XtNbackground, white); num_args++;
XtSetArg(args[num_args], nhStr(XtNforeground), black); num_args++;
XtSetArg(args[num_args], nhStr(XtNbackground), white); num_args++;
}
#endif
XtSetArg(args[num_args], XtNfromVert, response); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNresizable, True); num_args++;
XtSetArg(args[num_args], XtNaccelerators,
XtSetArg(args[num_args], nhStr(XtNfromVert), response); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNresizable), True); num_args++;
XtSetArg(args[num_args], nhStr(XtNaccelerators),
XtParseAcceleratorTable(okay_accelerators)); num_args++;
okay = XtCreateManagedWidget("okay", commandWidgetClass,
form, args, num_args);
@@ -162,18 +171,18 @@ CreateDialog(parent, name, okay_callback, cancel_callback)
num_args = 0;
#ifdef SPECIAL_CMAP
if (special_cmap) {
XtSetArg(args[num_args], XtNforeground, black); num_args++;
XtSetArg(args[num_args], XtNbackground, white); num_args++;
XtSetArg(args[num_args], nhStr(XtNforeground), black); num_args++;
XtSetArg(args[num_args], nhStr(XtNbackground), white); num_args++;
}
#endif
XtSetArg(args[num_args], XtNfromVert, response); num_args++;
XtSetArg(args[num_args], XtNfromHoriz, okay); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNresizable, True); num_args++;
XtSetArg(args[num_args], XtNaccelerators,
XtSetArg(args[num_args], nhStr(XtNfromVert), response); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromHoriz), okay); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNresizable), True); num_args++;
XtSetArg(args[num_args], nhStr(XtNaccelerators),
XtParseAcceleratorTable(cancel_accelerators)); num_args++;
cancel = XtCreateManagedWidget("cancel", commandWidgetClass,
form, args, num_args);
@@ -199,7 +208,7 @@ GetDialogPrompt(w)
String s;
label = XtNameToWidget(w, "prompt");
XtSetArg(args[0], XtNlabel, &s);
XtSetArg(args[0], nhStr(XtNlabel), &s);
XtGetValues(label, args, ONE);
return XtNewString(s);
}
@@ -215,7 +224,7 @@ SetDialogPrompt(w, newprompt)
Widget label;
label = XtNameToWidget(w, "prompt");
XtSetArg(args[0], XtNlabel, newprompt);
XtSetArg(args[0], nhStr(XtNlabel), newprompt);
XtSetValues(label, args, ONE);
}
@@ -229,7 +238,7 @@ GetDialogResponse(w)
String s;
response = XtNameToWidget(w, "response");
XtSetArg(args[0], XtNstring, &s);
XtSetArg(args[0], nhStr(XtNstring), &s);
XtGetValues(response, args, ONE);
return XtNewString(s);
}
@@ -247,18 +256,18 @@ SetDialogResponse(w, s)
Dimension width, nwidth, leftMargin, rightMargin;
response = XtNameToWidget(w, "response");
XtSetArg(args[0], XtNfont, &font);
XtSetArg(args[1], XtNleftMargin, &leftMargin);
XtSetArg(args[2], XtNrightMargin, &rightMargin);
XtSetArg(args[3], XtNwidth, &width);
XtSetArg(args[0], nhStr(XtNfont), &font);
XtSetArg(args[1], nhStr(XtNleftMargin), &leftMargin);
XtSetArg(args[2], nhStr(XtNrightMargin), &rightMargin);
XtSetArg(args[3], nhStr(XtNwidth), &width);
XtGetValues(response, args, FOUR);
/* width includes margins as per Xaw documentation */
nwidth = (font->max_bounds.width * strlen(s))+leftMargin+rightMargin;
if (nwidth < width)
nwidth = width;
XtSetArg(args[0], XtNstring, s);
XtSetArg(args[1], XtNwidth, nwidth);
XtSetArg(args[0], nhStr(XtNstring), s);
XtSetArg(args[1], nhStr(XtNwidth), nwidth);
XtSetValues(response, args, TWO);
XawTextSetInsertionPoint(response, strlen(s));
}
@@ -273,8 +282,8 @@ ClearDialogResponse(w)
Widget response;
response = XtNameToWidget(w, "response");
XtSetArg(args[0], XtNstring, "");
XtSetArg(args[1], XtNwidth, 100);
XtSetArg(args[0], nhStr(XtNstring), "");
XtSetArg(args[1], nhStr(XtNwidth), 100);
XtSetValues(response, args, TWO);
}
#endif

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 winX.c $NHDT-Date: 1430040327 2015/04/26 09:25:27 $ $NHDT-Branch: master $:$NHDT-Revision: 1.28 $ */
/* NetHack 3.5 winX.c $NHDT-Date: 1430899139 2015/05/06 07:58:59 $ $NHDT-Branch: master $:$NHDT-Revision: 1.29 $ */
/* NetHack 3.5 winX.c $Date: 2012/01/24 04:26:26 $ $Revision: 1.27 $ */
/* Copyright (c) Dean Luick, 1992 */
/* NetHack may be freely redistributed. See license for details. */
@@ -418,18 +418,17 @@ XtPointer *closure_ret;
*closure_ret = (char*)True;
done(Pixel, screenColor.pixel);
}
type = "noColormap";
msg = "Cannot allocate colormap entry for \"%s\"";
}
else {
type = nhStr("noColormap");
msg = nhStr("Cannot allocate colormap entry for \"%s\"");
} else {
/* some versions of XLookupColor also don't allow #xxyyzz names */
if(str[0] == '#' &&
(nhApproxColor(screen, colormap, (char*) str, &screenColor))) {
*closure_ret = (char*)True;
done(Pixel, screenColor.pixel);
}
type = "badValue";
msg = "Color name \"%s\" is not defined";
type = nhStr("badValue");
msg = nhStr("Color name \"%s\" is not defined");
}
XtAppWarningMsg(app, type, "cvtStringToPixel",
@@ -884,14 +883,24 @@ void X11_wait_synch() { if (x_inited) XFlush(XtDisplay(toplevel)); }
/* Both resume_ and suspend_ are called from ioctl.c and unixunix.c. */
void X11_resume_nhwindows() { return; }
/* ARGSUSED */
void X11_suspend_nhwindows(str) const char *str; { return; }
void X11_suspend_nhwindows(str)
const char *str;
{
nhUse(str);
return;
}
/* Under X, we don't need to initialize the number pad. */
/* ARGSUSED */
void X11_number_pad(state) int state; { return; } /* called from options.c */
void X11_number_pad(state) /* called from options.c */
int state;
{
nhUse(state);
return;
}
void X11_start_screen() { return; } /* called from setftty() in unixtty.c */
void X11_end_screen() { return; } /* called from settty() in unixtty.c */
@@ -924,60 +933,65 @@ Widget toplevel = (Widget) 0; /* toplevel widget */
Atom wm_delete_window; /* pop down windows */
static XtActionsRec actions[] = {
{"dismiss_file", dismiss_file}, /* action for file viewing widget */
{"delete_file", delete_file}, /* action for file delete-window */
{"dismiss_text", dismiss_text}, /* button action for text widget */
{"delete_text", delete_text}, /* delete action for text widget */
{"key_dismiss_text",key_dismiss_text},/* key action for text widget */
{nhStr("dismiss_file"), dismiss_file}, /* file viewing widget */
{nhStr("delete_file"), delete_file}, /* file delete-window */
{nhStr("dismiss_text"), dismiss_text}, /* text widget button action */
{nhStr("delete_text"), delete_text}, /* text widget delete action */
{nhStr("key_dismiss_text"), key_dismiss_text}, /* text widget key action */
#ifdef GRAPHIC_TOMBSTONE
{"rip_dismiss_text",rip_dismiss_text},/* action for rip in text widget */
{nhStr("rip_dismiss_text"), rip_dismiss_text}, /* rip in text widget */
#endif
{"menu_key", menu_key}, /* action for menu accelerators */
{"yn_key", yn_key}, /* action for yn accelerators */
{"yn_delete", yn_delete}, /* action for yn delete-window */
{"askname_delete", askname_delete},/* action for askname delete-window */
{"getline_delete", getline_delete},/* action for getline delete-window */
{"menu_delete", menu_delete}, /* action for menu delete-window */
{"ec_key", ec_key}, /* action for extended commands */
{"ec_delete", ec_delete}, /* action for ext-com menu delete */
{"ps_key", ps_key}, /* action for player selection */
{"race_key", race_key}, /* action for race selection */
{"gend_key", gend_key}, /* action for gender selection */
{"algn_key", algn_key}, /* action for alignment selection */
{"X11_hangup", X11_hangup}, /* action for delete of top-level */
{"input", map_input}, /* action for key input */
{"scroll", nh_keyscroll}, /* action for scrolling by keys */
{nhStr("menu_key"), menu_key}, /* menu accelerators */
{nhStr("yn_key"), yn_key}, /* yn accelerators */
{nhStr("yn_delete"), yn_delete}, /* yn delete-window */
{nhStr("askname_delete"), askname_delete}, /* askname delete-window */
{nhStr("getline_delete"), getline_delete}, /* getline delete-window */
{nhStr("menu_delete"), menu_delete}, /* menu delete-window */
{nhStr("ec_key"), ec_key}, /* extended commands */
{nhStr("ec_delete"), ec_delete}, /* ext-com menu delete */
{nhStr("ps_key"), ps_key}, /* player selection */
{nhStr("race_key"), race_key}, /* race selection */
{nhStr("gend_key"), gend_key}, /* gender selection */
{nhStr("algn_key"), algn_key}, /* alignment selection */
{nhStr("X11_hangup"), X11_hangup}, /* delete of top-level */
{nhStr("input"), map_input}, /* key input */
{nhStr("scroll"), nh_keyscroll}, /* scrolling by keys */
};
static XtResource resources[] = {
{ "slow", "Slow", XtRBoolean, sizeof(Boolean),
XtOffset(AppResources *,slow), XtRString, "True" },
{ "autofocus", "AutoFocus", XtRBoolean, sizeof(Boolean),
XtOffset(AppResources *,autofocus), XtRString, "False" },
{ "message_line", "Message_line", XtRBoolean, sizeof(Boolean),
XtOffset(AppResources *,message_line), XtRString, "False" },
{ "double_tile_size", "Double_tile_size", XtRBoolean, sizeof(Boolean),
XtOffset(AppResources *,double_tile_size), XtRString, "False" },
{ "tile_file", "Tile_file", XtRString, sizeof(String),
XtOffset(AppResources *,tile_file), XtRString, "x11tiles" },
{ "icon", "Icon", XtRString, sizeof(String),
XtOffset(AppResources *,icon), XtRString, "nh72" },
{ "message_lines", "Message_lines", XtRInt, sizeof(int),
XtOffset(AppResources *,message_lines), XtRString, "12" },
{ "pet_mark_bitmap", "Pet_mark_bitmap", XtRString, sizeof(String),
XtOffset(AppResources *,pet_mark_bitmap), XtRString, "pet_mark.xbm" },
{ "pet_mark_color", "Pet_mark_color", XtRPixel, sizeof(XtRPixel),
XtOffset(AppResources *,pet_mark_color), XtRString, "Red" },
{ nhStr("slow"), nhStr("Slow"), XtRBoolean, sizeof(Boolean),
XtOffset(AppResources *,slow), XtRString, nhStr("True") },
{ nhStr("autofocus"), nhStr("AutoFocus"), XtRBoolean, sizeof(Boolean),
XtOffset(AppResources *,autofocus), XtRString, nhStr("False") },
{ nhStr("message_line"), nhStr("Message_line"), XtRBoolean,
sizeof(Boolean),
XtOffset(AppResources *,message_line), XtRString, nhStr("False") },
{ nhStr("double_tile_size"), nhStr("Double_tile_size"), XtRBoolean,
sizeof(Boolean),
XtOffset(AppResources *,double_tile_size), XtRString, nhStr("False") },
{ nhStr("tile_file"), nhStr("Tile_file"), XtRString, sizeof(String),
XtOffset(AppResources *,tile_file), XtRString, nhStr("x11tiles") },
{ nhStr("icon"), nhStr("Icon"), XtRString, sizeof(String),
XtOffset(AppResources *,icon), XtRString, nhStr("nh72") },
{ nhStr("message_lines"), nhStr("Message_lines"), XtRInt, sizeof(int),
XtOffset(AppResources *,message_lines), XtRString, nhStr("12") },
{ nhStr("pet_mark_bitmap"), nhStr("Pet_mark_bitmap"), XtRString,
sizeof(String),
XtOffset(AppResources *,pet_mark_bitmap), XtRString,
nhStr("pet_mark.xbm") },
{ nhStr("pet_mark_color"), nhStr("Pet_mark_color"), XtRPixel,
sizeof(XtRPixel),
XtOffset(AppResources *,pet_mark_color), XtRString, nhStr("Red") },
#ifdef GRAPHIC_TOMBSTONE
{ "tombstone", "Tombstone", XtRString, sizeof(String),
{ nhStr("tombstone"), "Tombstone", XtRString, sizeof(String),
XtOffset(AppResources *,tombstone), XtRString, "rip.xpm" },
{ "tombtext_x", "Tombtext_x", XtRInt, sizeof(int),
{ nhStr("tombtext_x"), "Tombtext_x", XtRInt, sizeof(int),
XtOffset(AppResources *,tombtext_x), XtRString, "155" },
{ "tombtext_y", "Tombtext_y", XtRInt, sizeof(int),
{ nhStr("tombtext_y"), "Tombtext_y", XtRInt, sizeof(int),
XtOffset(AppResources *,tombtext_y), XtRString, "78" },
{ "tombtext_dx", "Tombtext_dx", XtRInt, sizeof(int),
{ nhStr("tombtext_dx"), "Tombtext_dx", XtRInt, sizeof(int),
XtOffset(AppResources *,tombtext_dx), XtRString, "0" },
{ "tombtext_dy", "Tombtext_dy", XtRInt, sizeof(int),
{ nhStr("tombtext_dy"), "Tombtext_dy", XtRInt, sizeof(int),
XtOffset(AppResources *,tombtext_dy), XtRString, "13" },
#endif
};
@@ -1085,6 +1099,8 @@ void X11_exit_nhwindows(dummy)
{
extern Pixmap tile_pixmap; /* from winmap.c */
nhUse(dummy);
/* explicitly free the icon and tile pixmaps */
if (icon_pixmap != None) {
XFreePixmap(XtDisplay(toplevel), icon_pixmap);
@@ -1121,6 +1137,9 @@ X11_sig_cb(not_used, id)
XEvent event;
XClientMessageEvent *mesg;
nhUse(not_used);
nhUse(id);
/* Set up a fake message to the event handler. */
mesg = (XClientMessageEvent *) &event;
mesg->type = ClientMessage;
@@ -1150,6 +1169,9 @@ d_timeout(client_data, id)
XEvent event;
XClientMessageEvent *mesg;
nhUse(client_data);
nhUse(id);
/* Set up a fake message to the event handler. */
mesg = (XClientMessageEvent *) &event;
mesg->type = ClientMessage;
@@ -1188,6 +1210,11 @@ X11_hangup(w, event, params, num_params)
String *params;
Cardinal *num_params;
{
nhUse(w);
nhUse(event);
nhUse(params);
nhUse(num_params);
hangup(1); /* 1 is commonly SIGHUP, but ignored anyway */
exit_x_event = TRUE;
}
@@ -1201,6 +1228,10 @@ askname_delete(w, event, params, num_params)
String *params;
Cardinal *num_params;
{
nhUse(event);
nhUse(params);
nhUse(num_params);
nh_XtPopdown(w);
(void) strcpy(plname, "Mumbles"); /* give them a name... ;-) */
exit_x_event = TRUE;
@@ -1218,17 +1249,20 @@ askname_done(w, client_data, call_data)
char *s;
Widget dialog = (Widget) client_data;
nhUse(w);
nhUse(call_data);
s = (char *) GetDialogResponse(dialog);
len = strlen(s);
len = (int) strlen(s);
if (len == 0) {
X11_nhbell();
return;
}
/* Truncate name if necessary */
if (len >= sizeof(plname)-1)
len = sizeof(plname)-1;
if (len >= (int) sizeof(plname)-1)
len = (int) sizeof(plname)-1;
(void) strncpy(plname, s, len);
plname[len] = '\0';
@@ -1251,11 +1285,11 @@ X11_askname()
XtOverrideTranslations(popup,
XtParseTranslationTable("<Message>WM_PROTOCOLS: askname_delete()"));
dialog = CreateDialog(popup, "dialog",
dialog = CreateDialog(popup, nhStr("dialog"),
askname_done, (XtCallbackProc) 0);
SetDialogPrompt(dialog, "What is your name?"); /* set prompt */
SetDialogResponse(dialog, ""); /* set default answer */
SetDialogPrompt(dialog, nhStr("What is your name?")); /* set prompt */
SetDialogResponse(dialog, nhStr("")); /* set default answer */
XtRealizeWidget(popup);
positionpopup(popup, TRUE); /* center,bottom */
@@ -1288,6 +1322,9 @@ done_button(w, client_data, call_data)
char *s;
Widget dialog = (Widget) client_data;
nhUse(w);
nhUse(call_data);
s = (char *) GetDialogResponse(dialog);
len = strlen(s);
@@ -1310,6 +1347,10 @@ getline_delete(w, event, params, num_params)
String *params;
Cardinal *num_params;
{
nhUse(event);
nhUse(params);
nhUse(num_params);
Strcpy(getline_input, CANCEL_STR);
nh_XtPopdown(w);
exit_x_event = TRUE;
@@ -1325,6 +1366,9 @@ abort_button(w, client_data, call_data)
{
Widget dialog = (Widget) client_data;
nhUse(w);
nhUse(call_data);
Strcpy(getline_input, CANCEL_STR);
nh_XtPopdown(XtParent(dialog));
exit_x_event = TRUE;
@@ -1353,7 +1397,7 @@ X11_getlin(question, input)
XtOverrideTranslations(getline_popup,
XtParseTranslationTable("<Message>WM_PROTOCOLS: getline_delete()"));
getline_dialog = CreateDialog(getline_popup, "dialog",
getline_dialog = CreateDialog(getline_popup, nhStr("dialog"),
done_button, abort_button);
XtRealizeWidget(getline_popup);
@@ -1361,7 +1405,7 @@ X11_getlin(question, input)
&wm_delete_window, 1);
}
SetDialogPrompt(getline_dialog, (String)question); /* set prompt */
SetDialogResponse(getline_dialog, ""); /* set default answer */
SetDialogResponse(getline_dialog, nhStr("")); /* set default answer */
positionpopup(getline_popup, TRUE); /* center,bottom */
nh_XtPopup(getline_popup, (int)XtGrabExclusive, getline_dialog);
@@ -1388,6 +1432,10 @@ delete_file(w, event, params, num_params)
String *params;
Cardinal *num_params;
{
nhUse(event);
nhUse(params);
nhUse(num_params);
nh_XtPopdown(w);
XtDestroyWidget(w);
}
@@ -1402,6 +1450,11 @@ dismiss_file(w, event, params, num_params)
Cardinal *num_params;
{
Widget popup = XtParent(w);
nhUse(event);
nhUse(params);
nhUse(num_params);
nh_XtPopdown(popup);
XtDestroyWidget(popup);
}
@@ -1468,7 +1521,7 @@ X11_display_file(str, complain)
(void) dlb_fclose(fp);
num_args = 0;
XtSetArg(args[num_args], XtNtitle, str); num_args++;
XtSetArg(args[num_args], nhStr(XtNtitle), str); num_args++;
popup = XtCreatePopupShell("display_file", topLevelShellWidgetClass,
toplevel, args, num_args);
@@ -1476,15 +1529,15 @@ X11_display_file(str, complain)
XtParseTranslationTable("<Message>WM_PROTOCOLS: delete_file()"));
num_args = 0;
XtSetArg(args[num_args], XtNscrollHorizontal,
XawtextScrollWhenNeeded); num_args++;
XtSetArg(args[num_args], XtNscrollVertical,
XawtextScrollAlways); num_args++;
XtSetArg(args[num_args], XtNtype, XawAsciiString); num_args++;
XtSetArg(args[num_args], XtNstring, textlines); num_args++;
XtSetArg(args[num_args], XtNdisplayCaret, False); num_args++;
XtSetArg(args[num_args], XtNtranslations,
XtParseTranslationTable(display_translations)); num_args++;
XtSetArg(args[num_args], nhStr(XtNscrollHorizontal),
XawtextScrollWhenNeeded); num_args++;
XtSetArg(args[num_args], nhStr(XtNscrollVertical),
XawtextScrollAlways); num_args++;
XtSetArg(args[num_args], nhStr(XtNtype), XawAsciiString); num_args++;
XtSetArg(args[num_args], nhStr(XtNstring), textlines); num_args++;
XtSetArg(args[num_args], nhStr(XtNdisplayCaret), False); num_args++;
XtSetArg(args[num_args], nhStr(XtNtranslations),
XtParseTranslationTable(display_translations)); num_args++;
dispfile = XtCreateManagedWidget(
"text", /* name */
@@ -1495,11 +1548,12 @@ X11_display_file(str, complain)
/* Get font and border information. */
num_args = 0;
XtSetArg(args[num_args], XtNfont, &fs); num_args++;
XtSetArg(args[num_args], XtNtopMargin, &top_margin); num_args++;
XtSetArg(args[num_args], XtNbottomMargin, &bottom_margin); num_args++;
XtSetArg(args[num_args], XtNleftMargin, &left_margin); num_args++;
XtSetArg(args[num_args], XtNrightMargin, &right_margin); num_args++;
XtSetArg(args[num_args], nhStr(XtNfont), &fs); num_args++;
XtSetArg(args[num_args], nhStr(XtNtopMargin), &top_margin); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottomMargin),
&bottom_margin); num_args++;
XtSetArg(args[num_args], nhStr(XtNleftMargin), &left_margin); num_args++;
XtSetArg(args[num_args], nhStr(XtNrightMargin), &right_margin); num_args++;
XtGetValues(dispfile, args, num_args);
/*
@@ -1573,6 +1627,11 @@ yn_delete(w, event, params, num_params)
String *params;
Cardinal *num_params;
{
nhUse(w);
nhUse(event);
nhUse(params);
nhUse(num_params);
yn_getting_num = FALSE;
/* Only use yn_esc_map if we have choices. Otherwise, return ESC. */
yn_return = yn_choices ? yn_esc_map : '\033';
@@ -1808,6 +1867,10 @@ msgkey(w, data, event)
XEvent *event;
{
Cardinal num = 0;
nhUse(w);
nhUse(data);
map_input(window_list[WIN_MAP].w, event, (String*) 0, &num);
}
@@ -1821,6 +1884,9 @@ win_visible(w, data, event, flag) /* only called for autofocus */
{
XVisibilityEvent *vis_event = (XVisibilityEvent *)event;
nhUse(data);
nhUse(flag);
if (vis_event->state != VisibilityFullyObscured) {
/* one-time operation; cancel ourself */
XtRemoveEventHandler(toplevel, VisibilityChangeMask, False,
@@ -1871,9 +1937,9 @@ init_standard_windows()
/* Tell the form that contains it that resizes are OK. */
num_args = 0;
XtSetArg(args[num_args], XtNresizable, True); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNresizable), True); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetValues(message_viewport, args, num_args);
if(appResources.slow) {
@@ -1885,10 +1951,12 @@ init_standard_windows()
form,
args, num_args);
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, message_viewport); num_args++;
XtSetArg(args[num_args], XtNjustify, XtJustifyLeft); num_args++;
XtSetArg(args[num_args], XtNresizable, True); num_args++;
XtSetArg(args[num_args], XtNlabel, " "); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert),
message_viewport); num_args++;
XtSetArg(args[num_args], nhStr(XtNjustify),
XtJustifyLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNresizable), True); num_args++;
XtSetArg(args[num_args], nhStr(XtNlabel), " "); num_args++;
XtSetValues(yn_label, args, num_args);
}
@@ -1906,11 +1974,12 @@ init_standard_windows()
/* Chain beneath message_viewport or yn window. */
num_args = 0;
if(appResources.slow) {
XtSetArg(args[num_args], XtNfromVert, yn_label); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), yn_label); num_args++;
} else {
XtSetArg(args[num_args], XtNfromVert, message_viewport);num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert),
message_viewport); num_args++;
}
XtSetArg(args[num_args], XtNbottom, XtChainBottom); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainBottom); num_args++;
XtSetValues(map_viewport, args, num_args);
/* Create the status window, with the form as it's parent. */
@@ -1929,11 +1998,11 @@ init_standard_windows()
* will never expand or contract.
*/
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, map_viewport); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainBottom); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainBottom); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), map_viewport); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainBottom); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainBottom); num_args++;
XtSetValues(status, args, num_args);
@@ -1980,13 +2049,13 @@ init_standard_windows()
/*
* Now get the default widths of the windows.
*/
XtSetArg(args[0], XtNwidth, &message_vp_width);
XtSetArg(args[0], nhStr(XtNwidth), &message_vp_width);
XtGetValues(message_viewport, args, ONE);
XtSetArg(args[0], XtNwidth, &map_vp_width);
XtSetArg(args[1], XtNhorizDistance, &map_vp_hd);
XtSetArg(args[0], nhStr(XtNwidth), &map_vp_width);
XtSetArg(args[1], nhStr(XtNhorizDistance), &map_vp_hd);
XtGetValues(map_viewport, args, TWO);
XtSetArg(args[0], XtNwidth, &status_width);
XtSetArg(args[1], XtNhorizDistance, &status_hd);
XtSetArg(args[0], nhStr(XtNwidth), &status_width);
XtSetArg(args[1], nhStr(XtNhorizDistance), &status_hd);
XtGetValues(status, args, TWO);
/*
@@ -1996,17 +2065,18 @@ init_standard_windows()
*/
if (map_vp_width < status_width || map_vp_width < message_vp_width) {
if (status_width > message_vp_width) {
XtSetArg(args[0], XtNwidth, status_width);
XtSetArg(args[0], nhStr(XtNwidth), status_width);
XtSetValues(message_viewport, args, ONE);
max_width = status_width;
} else {
max_width = message_vp_width;
}
XtSetArg(args[0], XtNhorizDistance, map_vp_hd+((int)(max_width-map_vp_width)/2));
XtSetArg(args[0], nhStr(XtNhorizDistance),
map_vp_hd + ((int)(max_width - map_vp_width) / 2));
XtSetValues(map_viewport, args, ONE);
} else { /* map is widest */
XtSetArg(args[0], XtNwidth, map_vp_width);
XtSetArg(args[0], nhStr(XtNwidth), map_vp_width);
XtSetValues(message_viewport, args, ONE);
}
/*
@@ -2094,6 +2164,8 @@ nh_keyscroll(viewport, event, params, num_params)
int direction;
Cardinal in_nparams = (num_params ? *num_params : 0);
nhUse(event);
if (in_nparams != 1) return; /* bad translation */
direction=atoi(params[0]);
@@ -2115,8 +2187,8 @@ nh_keyscroll(viewport, event, params, num_params)
/* The V_DELTA is 1/2 the value of shown. */
if (horiz_sb) {
XtSetArg(arg[0], XtNshown, &shown);
XtSetArg(arg[1], XtNtopOfThumb, &top);
XtSetArg(arg[0], nhStr(XtNshown), &shown);
XtSetArg(arg[1], nhStr(XtNtopOfThumb), &top);
XtGetValues(horiz_sb, arg, TWO);
do_call = True;
@@ -2138,8 +2210,8 @@ nh_keyscroll(viewport, event, params, num_params)
}
if (vert_sb) {
XtSetArg(arg[0], XtNshown, &shown);
XtSetArg(arg[1], XtNtopOfThumb, &top);
XtSetArg(arg[0], nhStr(XtNshown), &shown);
XtSetArg(arg[1], nhStr(XtNtopOfThumb), &top);
XtGetValues(vert_sb, arg, TWO);
do_call = True;

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 winmap.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 winmap.c $NHDT-Date: 1430899135 2015/05/06 07:58:55 $ $NHDT-Branch: master $:$NHDT-Revision: 1.17 $ */
/* NetHack 3.5 winmap.c $Date: 2009/05/06 10:55:49 $ $Revision: 1.14 $ */
/* SCCS Id: @(#)winmap.c 3.5 2005/11/12 */
/* Copyright (c) Dean Luick, 1992 */
@@ -66,7 +66,7 @@ static void FDECL(map_check_size_change, (struct xwindow *));
static void FDECL(map_update, (struct xwindow *,int,int,int,int,BOOLEAN_P));
static void FDECL(init_text, (struct xwindow *));
static void FDECL(map_exposed, (Widget,XtPointer,XtPointer));
static void FDECL(set_gc, (Widget,Font,char *,Pixel,GC *,GC *));
static void FDECL(set_gc, (Widget,Font,const char *,Pixel,GC *,GC *));
static void FDECL(get_text_gc, (struct xwindow *,Font));
static void FDECL(get_char_info, (struct xwindow *));
static void FDECL(display_cursor, (struct xwindow *));
@@ -249,7 +249,8 @@ init_tiles(wp)
unsigned char *tb, *tile_bytes = (unsigned char *)0;
int size;
XColor *colors = (XColor *)0;
int i, x, y;
unsigned i;
int x, y;
int bitmap_pad;
int ddepth;
#endif
@@ -348,7 +349,7 @@ init_tiles(wp)
goto tiledone;
}
if (fread((char *) &header, sizeof(header), 1, fp) != 1) {
if ((int) fread((char *) &header, sizeof(header), 1, fp) != 1) {
X11_raw_print("read of header failed");
result = FALSE;
goto tiledone;
@@ -374,7 +375,7 @@ init_tiles(wp)
size = 3*header.ncolors;
colormap = (unsigned char *) alloc((unsigned)size);
if (fread((char *) colormap, 1, size, fp) != size) {
if ((int) fread((char *) colormap, 1, size, fp) != size) {
X11_raw_print("read of colormap failed");
result = FALSE;
goto tiledone;
@@ -410,13 +411,13 @@ init_tiles(wp)
tile_count += header.per_row - (tile_count % header.per_row);
}
tile_bytes = (unsigned char *) alloc((unsigned)tile_count*size);
if (fread((char *) tile_bytes, size, tile_count, fp) != tile_count) {
if ((int) fread((char *) tile_bytes, size, tile_count, fp) != tile_count) {
X11_raw_print("read of tile bytes failed");
result = FALSE;
goto tiledone;
}
if (header.ntiles < total_tiles_used) {
if (header.ntiles < (unsigned) total_tiles_used) {
Sprintf(buf, "tile file incomplete, expecting %d tiles, found %lu",
total_tiles_used, header.ntiles);
X11_raw_print(buf);
@@ -463,27 +464,27 @@ init_tiles(wp)
if (appResources.double_tile_size) {
unsigned long *expanded_row =
(unsigned long *)alloc(sizeof(unsigned long)*(unsigned)image_width);
(unsigned long *)alloc(sizeof (unsigned long) * image_width);
tb = tile_bytes;
for (y = 0; y < image_height; y++) {
for (x = 0; x < image_width/2; x++)
for (y = 0; y < (int) image_height; y++) {
for (x = 0; x < (int) image_width / 2; x++)
expanded_row[2*x] =
expanded_row[(2*x)+1] = colors[*tb++].pixel;
for (x = 0; x < image_width; x++)
for (x = 0; x < (int) image_width; x++)
XPutPixel(tile_image, x, y, expanded_row[x]);
y++; /* duplicate row */
for (x = 0; x < image_width; x++)
for (x = 0; x < (int) image_width; x++)
XPutPixel(tile_image, x, y, expanded_row[x]);
}
free((genericptr_t)expanded_row);
} else {
for (tb = tile_bytes, y = 0; y < image_height; y++)
for (x = 0; x < image_width; x++, tb++)
for (tb = tile_bytes, y = 0; y < (int) image_height; y++)
for (x = 0; x < (int) image_width; x++, tb++)
XPutPixel(tile_image, x, y, colors[*tb].pixel);
}
#endif /* USE_XPM */
@@ -569,7 +570,7 @@ check_cursor_visibility(wp)
if (horiz_sb) {
XtSetArg(arg[0], XtNshown, &shown);
XtSetArg(arg[1], XtNtopOfThumb, &top);
XtSetArg(arg[1], nhStr(XtNtopOfThumb), &top);
XtGetValues(horiz_sb, arg, TWO);
/* [ALI] Don't assume map widget is the same size as actual map */
@@ -620,7 +621,7 @@ check_cursor_visibility(wp)
if (vert_sb) {
XtSetArg(arg[0], XtNshown, &shown);
XtSetArg(arg[1], XtNtopOfThumb, &top);
XtSetArg(arg[1], nhStr(XtNtopOfThumb), &top);
XtGetValues(vert_sb, arg, TWO);
if (wp->map_information->is_tile)
@@ -742,7 +743,7 @@ static void
set_gc(w, font, resource_name, bgpixel, regular, inverse)
Widget w;
Font font;
char *resource_name;
const char *resource_name;
Pixel bgpixel;
GC *regular, *inverse;
{
@@ -751,7 +752,7 @@ set_gc(w, font, resource_name, bgpixel, regular, inverse)
Pixel curpixel;
Arg arg[1];
XtSetArg(arg[0], resource_name, &curpixel);
XtSetArg(arg[0], (char *) resource_name, &curpixel);
XtGetValues(w, arg, ONE);
values.foreground = curpixel;
@@ -1124,6 +1125,8 @@ map_exposed(w, client_data, widget_data)
XExposeEvent *event = (XExposeEvent *) widget_data;
int t_height, t_width; /* tile/text height & width */
nhUse(client_data);
if (!XtIsRealized(w) || event->count > 0) return;
wp = find_widget(w);
@@ -1489,8 +1492,8 @@ create_map_window(wp, create_popup, parent)
* realized, then the map can resize to its normal size.
*/
num_args = 0;
XtSetArg(args[num_args], XtNrows, &rows); num_args++;
XtSetArg(args[num_args], XtNcolumns, &columns); num_args++;
XtSetArg(args[num_args], nhStr(XtNrows), &rows); num_args++;
XtSetArg(args[num_args], nhStr(XtNcolumns), &columns); num_args++;
XtGetValues(wp->w, args, num_args);
/* Don't bother with windows larger than ROWNOxCOLNO. */

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 winmenu.c $NHDT-Date: 1428828477 2015/04/12 08:47:57 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
/* NetHack 3.5 winmenu.c $NHDT-Date: 1430899135 2015/05/06 07:58:55 $ $NHDT-Branch: master $:$NHDT-Revision: 1.8 $ */
/* SCCS Id: @(#)winmenu.c 3.5 1996/08/15 */
/* Copyright (c) Dean Luick, 1992 */
/* NetHack may be freely redistributed. See license for details. */
@@ -97,6 +97,8 @@ menu_select(w, client_data, call_data)
#endif
long how_many;
nhUse(client_data);
wp = find_widget(w);
menu_info = wp->menu_information;
how_many = menu_info->counting ? menu_info->menu_count : -1L;
@@ -156,6 +158,10 @@ menu_delete(w, event, params, num_params)
String *params;
Cardinal *num_params;
{
nhUse(event);
nhUse(params);
nhUse(num_params);
menu_cancel((Widget)None, (XtPointer) find_widget(w), (XtPointer) 0);
}
@@ -170,6 +176,9 @@ invert_line(wp, curr, which, how_many)
int which;
long how_many;
{
#ifndef USE_FWF
nhUse(which);
#endif
reset_menu_count(wp->menu_information);
curr->selected = !curr->selected;
if (curr->selected) {
@@ -207,6 +216,9 @@ menu_key(w, event, params, num_params)
int count;
boolean selected_something;
nhUse(params);
nhUse(num_params);
wp = find_widget(w);
menu_info = wp->menu_information;
@@ -345,6 +357,9 @@ menu_ok(w, client_data, call_data)
{
struct xwindow *wp = (struct xwindow *) client_data;
nhUse(w);
nhUse(call_data);
menu_popdown(wp);
}
@@ -356,6 +371,9 @@ menu_cancel(w, client_data, call_data)
{
struct xwindow *wp = (struct xwindow *) client_data;
nhUse(w);
nhUse(call_data);
if (wp->menu_information->is_active) {
select_none(wp);
wp->menu_information->cancelled = TRUE;
@@ -369,6 +387,9 @@ menu_all(w, client_data, call_data)
Widget w;
XtPointer client_data, call_data;
{
nhUse(w);
nhUse(call_data);
select_all((struct xwindow *) client_data);
}
@@ -378,6 +399,9 @@ menu_none(w, client_data, call_data)
Widget w;
XtPointer client_data, call_data;
{
nhUse(w);
nhUse(call_data);
select_none((struct xwindow *) client_data);
}
@@ -387,6 +411,9 @@ menu_invert(w, client_data, call_data)
Widget w;
XtPointer client_data, call_data;
{
nhUse(w);
nhUse(call_data);
invert_all((struct xwindow *) client_data);
}
@@ -400,6 +427,9 @@ menu_search(w, client_data, call_data)
struct menu_info_t *menu_info = wp->menu_information;
char buf[BUFSZ+2], tmpbuf[BUFSZ];
nhUse(w);
nhUse(call_data);
X11_getlin("Search for:", tmpbuf);
if (!*tmpbuf || *tmpbuf == '\033') return;
/* convert "string" into "*string*" for use with pmatch() */
@@ -613,6 +643,9 @@ X11_add_menu(window, glyph, identifier, ch, gch, attr, str, preselected)
x11_menu_item *item;
struct menu_info_t *menu_info;
nhUse(glyph);
nhUse(preselected); /*FIXME*/
check_winid(window);
menu_info = window_list[window].menu_information;
if (!menu_info->is_menu) {
@@ -804,10 +837,10 @@ X11_select_menu(window, how, menu_list)
num_args = 0;
XtSetArg(args[num_args], XtNborderWidth, 0); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
if (labeled)
label = XtCreateManagedWidget(menu_info->new_menu.query,
@@ -820,11 +853,11 @@ X11_select_menu(window, how, menu_list)
* Create ok, cancel, all, none, invert, and search buttons..
*/
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, label); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), label); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
ok = XtCreateManagedWidget("OK",
commandWidgetClass,
form,
@@ -832,13 +865,14 @@ X11_select_menu(window, how, menu_list)
XtAddCallback(ok, XtNcallback, menu_ok, (XtPointer) wp);
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, label); num_args++;
XtSetArg(args[num_args], XtNfromHoriz, ok); num_args++;
XtSetArg(args[num_args], XtNsensitive, how!=PICK_NONE); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), label); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromHoriz), ok); num_args++;
XtSetArg(args[num_args], nhStr(XtNsensitive),
how != PICK_NONE); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
cancel = XtCreateManagedWidget("cancel",
commandWidgetClass,
form,
@@ -847,13 +881,13 @@ X11_select_menu(window, how, menu_list)
sens = (how == PICK_ANY);
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, label); num_args++;
XtSetArg(args[num_args], XtNfromHoriz, cancel); num_args++;
XtSetArg(args[num_args], XtNsensitive, sens); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), label); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromHoriz), cancel); num_args++;
XtSetArg(args[num_args], nhStr(XtNsensitive), sens); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
all = XtCreateManagedWidget("all",
commandWidgetClass,
form,
@@ -861,13 +895,13 @@ X11_select_menu(window, how, menu_list)
XtAddCallback(all, XtNcallback, menu_all, (XtPointer) wp);
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, label); num_args++;
XtSetArg(args[num_args], XtNfromHoriz, all); num_args++;
XtSetArg(args[num_args], XtNsensitive, sens); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), label); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromHoriz), all); num_args++;
XtSetArg(args[num_args], nhStr(XtNsensitive), sens); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
none = XtCreateManagedWidget("none",
commandWidgetClass,
form,
@@ -875,13 +909,13 @@ X11_select_menu(window, how, menu_list)
XtAddCallback(none, XtNcallback, menu_none, (XtPointer) wp);
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, label); num_args++;
XtSetArg(args[num_args], XtNfromHoriz, none); num_args++;
XtSetArg(args[num_args], XtNsensitive, sens); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), label); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromHoriz), none); num_args++;
XtSetArg(args[num_args], nhStr(XtNsensitive), sens); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
invert = XtCreateManagedWidget("invert",
commandWidgetClass,
form,
@@ -889,13 +923,14 @@ X11_select_menu(window, how, menu_list)
XtAddCallback(invert, XtNcallback, menu_invert, (XtPointer) wp);
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, label); num_args++;
XtSetArg(args[num_args], XtNfromHoriz, invert); num_args++;
XtSetArg(args[num_args], XtNsensitive, how!=PICK_NONE); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), label); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromHoriz), invert); num_args++;
XtSetArg(args[num_args], nhStr(XtNsensitive),
how != PICK_NONE); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainLeft); num_args++;
search = XtCreateManagedWidget("search",
commandWidgetClass,
form,
@@ -903,18 +938,18 @@ X11_select_menu(window, how, menu_list)
XtAddCallback(search, XtNcallback, menu_search, (XtPointer) wp);
num_args = 0;
XtSetArg(args[num_args], XtNallowVert, True); num_args++;
XtSetArg(args[num_args], XtNallowHoriz, False); num_args++;
XtSetArg(args[num_args], XtNuseBottom, True); num_args++;
XtSetArg(args[num_args], XtNuseRight, True); num_args++;
XtSetArg(args[num_args], nhStr(XtNallowVert), True); num_args++;
XtSetArg(args[num_args], nhStr(XtNallowHoriz), False); num_args++;
XtSetArg(args[num_args], nhStr(XtNuseBottom), True); num_args++;
XtSetArg(args[num_args], nhStr(XtNuseRight), True); num_args++;
/*
XtSetArg(args[num_args], XtNforceBars, True); num_args++;
XtSetArg(args[num_args], nhStr(XtNforceBars), True); num_args++;
*/
XtSetArg(args[num_args], XtNfromVert, all); num_args++;
XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++;
XtSetArg(args[num_args], XtNbottom, XtChainBottom); num_args++;
XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++;
XtSetArg(args[num_args], XtNright, XtChainRight); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), all); num_args++;
XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottom), XtChainBottom); num_args++;
XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++;
XtSetArg(args[num_args], nhStr(XtNright), XtChainRight); num_args++;
viewport_widget = XtCreateManagedWidget(
"menu_viewport", /* name */
viewportWidgetClass,
@@ -925,15 +960,15 @@ X11_select_menu(window, how, menu_list)
move_menu(&menu_info->new_menu, &menu_info->curr_menu);
num_args = 0;
XtSetArg(args[num_args], XtNforceColumns, True); num_args++;
XtSetArg(args[num_args], XtNcolumnSpacing, 1); num_args++;
XtSetArg(args[num_args], XtNdefaultColumns, 1); num_args++;
XtSetArg(args[num_args], XtNlist,
XtSetArg(args[num_args], nhStr(XtNforceColumns), True); num_args++;
XtSetArg(args[num_args], nhStr(XtNcolumnSpacing), 1); num_args++;
XtSetArg(args[num_args], nhStr(XtNdefaultColumns), 1); num_args++;
XtSetArg(args[num_args], nhStr(XtNlist),
menu_info->curr_menu.list_pointer); num_args++;
#ifdef USE_FWF
XtSetArg(args[num_args], XtNsensitiveArray,
XtSetArg(args[num_args], nhStr(XtNsensitiveArray),
menu_info->curr_menu.sensitive); num_args++;
XtSetArg(args[num_args], XtNmaxSelectable,
XtSetArg(args[num_args], nhStr(XtNmaxSelectable),
menu_info->curr_menu.count); num_args++;
#endif
wp->w = XtCreateManagedWidget(
@@ -956,7 +991,8 @@ X11_select_menu(window, how, menu_list)
&menu_info->internal_height); num_args++;
XtSetArg(args[num_args], XtNinternalWidth,
&menu_info->internal_width); num_args++;
XtSetArg(args[num_args], XtNrowSpacing, &row_spacing); num_args++;
XtSetArg(args[num_args], nhStr(XtNrowSpacing),
&row_spacing); num_args++;
XtGetValues(wp->w, args, num_args);
/* font height is ascent + descent */

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 winmesg.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 winmesg.c $NHDT-Date: 1430899136 2015/05/06 07:58:56 $ $NHDT-Branch: master $:$NHDT-Revision: 1.5 $ */
/* NetHack 3.5 winmesg.c $Date: 2009/05/06 10:55:57 $ $Revision: 1.4 $ */
/* SCCS Id: @(#)winmesg.c 3.5 1996/04/05 */
/* Copyright (c) Dean Luick, 1992 */
@@ -92,8 +92,8 @@ create_message_window(wp, create_popup, parent)
mesg_info->dirty = False;
mesg_info->viewport_width = mesg_info->viewport_height = 0;
if (iflags.msg_history < appResources.message_lines)
iflags.msg_history = appResources.message_lines;
if (iflags.msg_history < (unsigned) appResources.message_lines)
iflags.msg_history = (unsigned) appResources.message_lines;
if (iflags.msg_history > MAX_HISTORY) /* a sanity check */
iflags.msg_history = MAX_HISTORY;
@@ -534,6 +534,8 @@ mesg_exposed(w, client_data, widget_data)
{
XExposeEvent *event = (XExposeEvent *) widget_data;
nhUse(client_data);
if (XtIsRealized(w) && event->count == 0) {
struct xwindow *wp;
Display *dpy;
@@ -603,6 +605,9 @@ mesg_resized(w, client_data, call_data)
old_lines = wp->mesg_information->num_lines;;
#endif
nhUse(call_data);
nhUse(client_data);
num_args = 0;
XtSetArg(args[num_args], XtNwidth, &pixel_width); num_args++;
XtSetArg(args[num_args], XtNheight, &pixel_height); num_args++;

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 winmisc.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 winmisc.c $NHDT-Date: 1430899137 2015/05/06 07:58:57 $ $NHDT-Branch: master $:$NHDT-Revision: 1.8 $ */
/* NetHack 3.5 winmisc.c $Date: 2009/05/06 10:55:57 $ $Revision: 1.7 $ */
/* SCCS Id: @(#)winmisc.c 3.5 2000/05/21 */
/* Copyright (c) Dean Luick, 1992 */
@@ -89,6 +89,10 @@ ps_quit(w, client_data, call_data)
Widget w;
XtPointer client_data, call_data;
{
nhUse(w);
nhUse(client_data);
nhUse(call_data);
ps_selected = PS_QUIT;
exit_x_event = TRUE; /* leave event loop */
}
@@ -99,6 +103,10 @@ ps_random(w, client_data, call_data)
Widget w;
XtPointer client_data, call_data;
{
nhUse(w);
nhUse(client_data);
nhUse(call_data);
ps_selected = PS_RANDOM;
exit_x_event = TRUE; /* leave event loop */
}
@@ -109,6 +117,9 @@ ps_select(w, client_data, call_data)
Widget w;
XtPointer client_data, call_data;
{
nhUse(w);
nhUse(call_data);
ps_selected = (int) client_data;
exit_x_event = TRUE; /* leave event loop */
}
@@ -125,6 +136,10 @@ ps_key(w, event, params, num_params)
char rolechars[QBUFSZ];
int i;
nhUse(w);
nhUse(params);
nhUse(num_params);
(void)memset(rolechars, '\0', sizeof rolechars); /* for index() */
for (i = 0; roles[i].name.m; ++i) {
ch = lowc(*roles[i].name.m);
@@ -167,6 +182,10 @@ race_key(w, event, params, num_params)
char racechars[QBUFSZ];
int i;
nhUse(w);
nhUse(params);
nhUse(num_params);
(void)memset(racechars, '\0', sizeof racechars); /* for index() */
for (i = 0; races[i].noun; ++i) {
ch = lowc(*races[i].noun);
@@ -207,6 +226,10 @@ gend_key(w, event, params, num_params)
char ch, *mark;
static char gendchars[] = "mf";
nhUse(w);
nhUse(params);
nhUse(num_params);
ch = key_event_to_char((XKeyEvent *) event);
if (ch == '\0') { /* don't accept nul char/modifier event */
/* don't beep */
@@ -239,6 +262,10 @@ algn_key(w, event, params, num_params)
char ch, *mark;
static char algnchars[] = "LNC";
nhUse(w);
nhUse(params);
nhUse(num_params);
ch = key_event_to_char((XKeyEvent *) event);
if (ch == '\0') { /* don't accept nul char/modifier event */
/* don't beep */
@@ -565,6 +592,9 @@ extend_select(w, client_data, call_data)
{
int selected = (int) client_data;
nhUse(w);
nhUse(call_data);
if (extended_command_selected != selected) {
/* visibly deselect old one */
if (extended_command_selected >= 0)
@@ -588,6 +618,10 @@ extend_dismiss(w, client_data, call_data)
Widget w;
XtPointer client_data, call_data;
{
nhUse(w);
nhUse(client_data);
nhUse(call_data);
ec_dismiss();
}
@@ -597,6 +631,10 @@ extend_help(w, client_data, call_data)
Widget w;
XtPointer client_data, call_data;
{
nhUse(w);
nhUse(client_data);
nhUse(call_data);
/* We might need to make it known that we already have one listed. */
(void) doextlist();
}
@@ -624,6 +662,10 @@ popup_delete(w, event, params, num_params)
String *params;
Cardinal *num_params;
{
nhUse(event);
nhUse(params);
nhUse(num_params);
ps_selected = PS_QUIT;
nh_XtPopdown(w);
exit_x_event = TRUE; /* leave event loop */
@@ -653,6 +695,10 @@ ec_key(w, event, params, num_params)
int i;
XKeyEvent *xkey = (XKeyEvent *) event;
nhUse(w);
nhUse(params);
nhUse(num_params);
ch = key_event_to_char(xkey);
if (ch == '\0') { /* don't accept nul char/modifier event */
@@ -812,7 +858,7 @@ make_menu(popup_name, popup_label, popup_translations,
/* Get the default distance between objects in the form widget. */
num_args = 0;
XtSetArg(args[num_args], XtNdefaultDistance, &distance); num_args++;
XtSetArg(args[num_args], nhStr(XtNdefaultDistance), &distance); num_args++;
XtGetValues(form, args, num_args);
/*
@@ -829,9 +875,9 @@ make_menu(popup_name, popup_label, popup_translations,
* Create the left button.
*/
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, label); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), label); num_args++;
/*
XtSetArg(args[num_args], XtNshapeStyle,
XtSetArg(args[num_args], nhStr(XtNshapeStyle),
XmuShapeRoundedRectangle); num_args++;
*/
left = XtCreateManagedWidget(left_name,
@@ -846,10 +892,10 @@ make_menu(popup_name, popup_label, popup_translations,
* Create right button.
*/
num_args = 0;
XtSetArg(args[num_args], XtNfromHoriz, left); num_args++;
XtSetArg(args[num_args], XtNfromVert, label); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromHoriz), left); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), label); num_args++;
/*
XtSetArg(args[num_args], XtNshapeStyle,
XtSetArg(args[num_args], nhStr(XtNshapeStyle),
XmuShapeRoundedRectangle); num_args++;
*/
right = XtCreateManagedWidget(right_name,
@@ -867,10 +913,10 @@ make_menu(popup_name, popup_label, popup_translations,
for (i = 0, above = left, curr = commands; i < num_names; i++) {
if (!widget_names[i]) continue;
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, above); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), above); num_args++;
if (above == left) {
/* if first, we are farther apart */
XtSetArg(args[num_args], XtNvertDistance, skip); num_args++;
XtSetArg(args[num_args], nhStr(XtNvertDistance), skip); num_args++;
}
*curr = XtCreateManagedWidget(widget_names[i],

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 winstat.c $NHDT-Date: 1425083083 2015/02/28 00:24:43 $ $NHDT-Branch: master $:$NHDT-Revision: 1.5 $ */
/* NetHack 3.5 winstat.c $NHDT-Date: 1430899137 2015/05/06 07:58:57 $ $NHDT-Branch: master $:$NHDT-Revision: 1.11 $ */
/* SCCS Id: @(#)winstat.c 3.5 1996/04/05 */
/* Copyright (c) Dean Luick, 1992 */
/* NetHack may be freely redistributed. See license for details. */
@@ -85,10 +85,10 @@ create_status_window(wp, create_popup, parent)
*/
num_args = 0;
XtSetArg(args[num_args], XtNdisplayCaret, False); num_args++;
XtSetArg(args[num_args], XtNscrollHorizontal,
XtSetArg(args[num_args], nhStr(XtNdisplayCaret), False); num_args++;
XtSetArg(args[num_args], nhStr(XtNscrollHorizontal),
XawtextScrollWhenNeeded); num_args++;
XtSetArg(args[num_args], XtNscrollVertical,
XtSetArg(args[num_args], nhStr(XtNscrollVertical),
XawtextScrollWhenNeeded); num_args++;
wp->w = XtCreateManagedWidget(
@@ -105,11 +105,15 @@ create_status_window(wp, create_popup, parent)
/* Get the font and margin information. */
num_args = 0;
XtSetArg(args[num_args], XtNfont, &fs); num_args++;
XtSetArg(args[num_args], XtNtopMargin, &top_margin); num_args++;
XtSetArg(args[num_args], XtNbottomMargin, &bottom_margin); num_args++;
XtSetArg(args[num_args], XtNleftMargin, &left_margin); num_args++;
XtSetArg(args[num_args], XtNrightMargin, &right_margin); num_args++;
XtSetArg(args[num_args], XtNfont, &fs); num_args++;
XtSetArg(args[num_args], nhStr(XtNtopMargin),
&top_margin); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottomMargin),
&bottom_margin); num_args++;
XtSetArg(args[num_args], nhStr(XtNleftMargin),
&left_margin); num_args++;
XtSetArg(args[num_args], nhStr(XtNrightMargin),
&right_margin); num_args++;
XtGetValues(wp->w, args, num_args);
wp->pixel_height = 2 * nhFontHeight(wp->w) + top_margin + bottom_margin;
@@ -182,13 +186,14 @@ adjust_status(wp, str)
static int hilight_time = 1; /* number of turns to hilight a changed value */
struct X_status_value {
char *name; /* text name */
int type; /* status type */
Widget w; /* widget of name/value pair */
long last_value; /* value displayed */
int turn_count; /* last time the value changed */
boolean set; /* if hilighed */
boolean after_init; /* don't hilight on first change (init) */
/* we have to cast away 'const' when assigning new names */
const char *name; /* text name */
int type; /* status type */
Widget w; /* widget of name/value pair */
long last_value; /* value displayed */
int turn_count; /* last time the value changed */
boolean set; /* if hilighed */
boolean after_init; /* don't hilight on first change (init) */
};
/* valid type values */
@@ -202,7 +207,7 @@ static const char *FDECL(width_string, (int));
static void FDECL(create_widget, (Widget,struct X_status_value *,int));
static void FDECL(get_widths, (struct X_status_value *,int *,int *));
static void FDECL(set_widths, (struct X_status_value *,int,int));
static Widget FDECL(init_column, (char *,Widget,Widget,Widget,int *));
static Widget FDECL(init_column, (const char *,Widget,Widget,Widget,int *));
static Widget FDECL(init_info_form, (Widget,Widget,Widget));
/*
@@ -369,8 +374,9 @@ update_val(attr_rec, new_value)
if (strcmp(buf, attr_rec->name) == 0) return; /* same */
/* Set the label. */
Strcpy(attr_rec->name, buf);
/* Set the label. 'name' field is const for most entries;
we need to cast away that const for this assignment */
Strcpy((char *) attr_rec->name, buf);
XtSetArg(args[0], XtNlabel, buf);
XtSetValues(attr_rec->w, args, ONE);
@@ -714,7 +720,8 @@ create_widget(parent, sv, sv_index)
case SV_LABEL:
/* Labels get their own buffer. */
sv->name = (char *) alloc(BUFSZ);
sv->name[0] = '\0';
/* we need to cast away 'const' when assigning a value */
*(char *)(sv->name) = '\0';
num_args = 0;
XtSetArg(args[num_args], XtNborderWidth, 0); num_args++;
@@ -791,7 +798,7 @@ set_widths(sv, width1, width2)
static Widget
init_column(name, parent, top, left, col_indices)
char *name;
const char *name;
Widget parent, top, left;
int *col_indices;
{
@@ -804,12 +811,12 @@ init_column(name, parent, top, left, col_indices)
num_args = 0;
if (top != (Widget) 0) {
XtSetArg(args[num_args], XtNfromVert, top); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), top); num_args++;
}
if (left != (Widget) 0) {
XtSetArg(args[num_args], XtNfromHoriz, left); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromHoriz), left); num_args++;
}
XtSetArg(args[num_args], XtNdefaultDistance, 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNdefaultDistance), 0); num_args++;
form = XtCreateManagedWidget(name,
formWidgetClass,
parent, args, num_args);
@@ -820,8 +827,8 @@ init_column(name, parent, top, left, col_indices)
create_widget(form, sv, *ip); /* will set init width */
if (ip != col_indices) { /* not first */
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, shown_stats[*(ip-1)].w);
num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert),
shown_stats[*(ip-1)].w); num_args++;
XtSetValues(sv->w, args, num_args);
}
get_widths(sv, &width1, &width2);
@@ -877,12 +884,12 @@ init_info_form(parent, top, left)
num_args = 0;
if (top != (Widget) 0) {
XtSetArg(args[num_args], XtNfromVert, top); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), top); num_args++;
}
if (left != (Widget) 0) {
XtSetArg(args[num_args], XtNfromHoriz, left); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromHoriz), left); num_args++;
}
XtSetArg(args[num_args], XtNdefaultDistance, 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNdefaultDistance), 0); num_args++;
form = XtCreateManagedWidget("status_info",
formWidgetClass,
parent,
@@ -897,7 +904,7 @@ init_info_form(parent, top, left)
create_widget(form, sv_dlevel, F_DLEVEL);
num_args = 0;
XtSetArg(args[num_args], XtNfromVert, sv_name->w); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), sv_name->w); num_args++;
XtSetValues(sv_dlevel->w, args, num_args);
/* two columns beneath */
@@ -939,10 +946,10 @@ create_fancy_status(parent, top)
num_args = 0;
if (top != (Widget) 0) {
XtSetArg(args[num_args], XtNfromVert, top); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromVert), top); num_args++;
}
XtSetArg(args[num_args], XtNdefaultDistance, 0); num_args++;
XtSetArg(args[num_args], XtNborderWidth, 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNdefaultDistance), 0); num_args++;
XtSetArg(args[num_args], XtNborderWidth, 0); num_args++;
XtSetArg(args[num_args], XtNorientation, XtorientHorizontal); num_args++;
form = XtCreateManagedWidget("fancy_status",
panedWidgetClass,

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 wintext.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 wintext.c $NHDT-Date: 1430899138 2015/05/06 07:58:58 $ $NHDT-Branch: master $:$NHDT-Revision: 1.10 $ */
/* NetHack 3.5 wintext.c $Date: 2012/01/24 04:26:27 $ $Revision: 1.7 $ */
/* SCCS Id: @(#)wintext.c 3.5 1996/04/05 */
/* Copyright (c) Dean Luick, 1992 */
@@ -66,6 +66,10 @@ delete_text(w, event, params, num_params)
struct xwindow *wp;
struct text_info_t *text_info;
nhUse(event);
nhUse(params);
nhUse(num_params);
wp = find_widget(w);
text_info = wp->text_information;
@@ -94,6 +98,10 @@ dismiss_text(w, event, params, num_params)
struct xwindow *wp;
struct text_info_t *text_info;
nhUse(event);
nhUse(params);
nhUse(num_params);
wp = find_widget(w);
text_info = wp->text_information;
@@ -142,6 +150,8 @@ add_to_text_window(wp, attr, str)
struct text_info_t *text_info = wp->text_information;
int width;
nhUse(attr);
append_text_buffer(&text_info->text, str, FALSE);
/* Calculate text width and save longest line */
@@ -223,12 +233,12 @@ display_text_window(wp, blocking)
/* if added before the window is displayed, so do it afterward. */
num_args = 0;
if (nlines < text_info->text.num_lines) { /* add vert scrollbar */
XtSetArg(args[num_args], XtNscrollVertical, XawtextScrollAlways);
num_args++;
XtSetArg(args[num_args], nhStr(XtNscrollVertical),
XawtextScrollAlways); num_args++;
}
if (width >= (Dimension) (XtScreen(wp->w)->width-20)) { /* too wide */
XtSetArg(args[num_args], XtNscrollHorizontal, XawtextScrollAlways);
num_args++;
XtSetArg(args[num_args], nhStr(XtNscrollHorizontal),
XawtextScrollAlways); num_args++;
}
if (num_args) XtSetValues(wp->w, args, num_args);
@@ -286,7 +296,7 @@ create_text_window(wp)
args, num_args);
num_args = 0;
XtSetArg(args[num_args], XtNdisplayCaret, False); num_args++;
XtSetArg(args[num_args], nhStr(XtNdisplayCaret), False); num_args++;
XtSetArg(args[num_args], XtNresize, XawtextResizeBoth); num_args++;
XtSetArg(args[num_args], XtNtranslations,
XtParseTranslationTable(text_translations)); num_args++;
@@ -301,11 +311,15 @@ create_text_window(wp)
/* Get the font and margin information. */
num_args = 0;
XtSetArg(args[num_args], XtNfont, &text_info->fs); num_args++;
XtSetArg(args[num_args], XtNtopMargin, &top_margin); num_args++;
XtSetArg(args[num_args], XtNbottomMargin, &bottom_margin); num_args++;
XtSetArg(args[num_args], XtNleftMargin, &left_margin); num_args++;
XtSetArg(args[num_args], XtNrightMargin, &right_margin); num_args++;
XtSetArg(args[num_args], XtNfont, &text_info->fs); num_args++;
XtSetArg(args[num_args], nhStr(XtNtopMargin),
&top_margin); num_args++;
XtSetArg(args[num_args], nhStr(XtNbottomMargin),
&bottom_margin); num_args++;
XtSetArg(args[num_args], nhStr(XtNleftMargin),
&left_margin); num_args++;
XtSetArg(args[num_args], nhStr(XtNrightMargin),
&right_margin); num_args++;
XtGetValues(wp->w, args, num_args);
text_info->extra_width = left_margin + right_margin;

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 winval.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 winval.c $NHDT-Date: 1430899139 2015/05/06 07:58:59 $ $NHDT-Branch: master $:$NHDT-Revision: 1.5 $ */
/* NetHack 3.5 winval.c $Date: 2009/05/06 10:56:06 $ $Revision: 1.4 $ */
/* SCCS Id: @(#)winval.c 3.5 1992/3/7 */
/* Copyright (c) Dean Luick, 1992 */
@@ -45,7 +45,7 @@ create_value(parent, name_value)
num_args = 0;
XtSetArg(args[num_args], XtNborderWidth, 0); num_args++;
XtSetArg(args[num_args], XtNdefaultDistance, 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNdefaultDistance), 0); num_args++;
form = XtCreateManagedWidget(name_value,
formWidgetClass,
parent, args, num_args);
@@ -62,7 +62,7 @@ create_value(parent, name_value)
num_args = 0;
XtSetArg(args[num_args], XtNjustify, XtJustifyRight); num_args++;
XtSetArg(args[num_args], XtNborderWidth, 0); num_args++;
XtSetArg(args[num_args], XtNfromHoriz, name); num_args++;
XtSetArg(args[num_args], nhStr(XtNfromHoriz), name); num_args++;
XtSetArg(args[num_args], XtNinternalHeight, 0); num_args++;
(void) XtCreateManagedWidget(WVALUE,
labelWidgetClass,
@@ -73,7 +73,7 @@ create_value(parent, name_value)
void
set_name(w, new_label)
Widget w;
char *new_label;
const char *new_label;
{
Arg args[1];
Widget name;