Commit Graph

1763 Commits

Author SHA1 Message Date
PatR
67d94d2930 partial fix for #K3262 - X11 perm_invent panic
Prevent the "X Error (bad Atom)" situation that causes an
"X Error" panic.

The issue isn't fixed.  This fails to implement the intended
functionality of having the X server remember the persistent
inventory window's location across games (until the next time
that the X server restarts).  Worse, on OSX the window creeps
each time it is updated (visually it seems to be moving down by
the height of the window's title bar).

That's not as bad as having it move to the pointer's location as
it did in 3.6.1, but prior to the commit which introduced this
code that had been fixed and it stayed put during the current
game, so more work is definitely needed.
2021-02-06 16:04:44 -08:00
nhmall
bf3c84a4ce wasm cross-compile bit 2021-02-05 19:16:49 -05:00
PatR
74213666bf curses: honor menu_next_page/&c option settings
tty and X11 honor the menu_xxx options.  Qt currently doesn't
support menu manipulation by keyboard.  curses does support that
but was only handling the default menu keys.
2021-02-05 01:04:48 -08:00
nhmall
d2f570154a another old-style-definition 2021-02-04 19:40:38 -05:00
Bart House
1efae34cc7 Disable warning 4774 for lua source files. 2021-02-04 11:28:41 -08:00
PatR
14cb015d72 Qt close-window handling
Handle the unused variable 'ok' differently.
2021-02-03 13:42:17 -08:00
nhmall
78532e3855 Qt follow-up bit 2021-02-03 15:36:00 -05:00
nhmall
44b16979cf unused-but-set-variable warning in qt_main.cpp
../win/Qt/qt_main.cpp: In member function ‘virtual void nethack_qt_::NetHackQtMainWindow::closeEvent(QCloseEvent*)’:
../win/Qt/qt_main.cpp:1377:9: warning: variable ‘ok’ set but not used [-Wunused-but-set-variable]
 1377 |     int ok = 0;
      |         ^~
2021-02-03 15:33:30 -05:00
nhmall
21ca9e1ec5 Qt setChecked() takes a boolean argument 2021-02-03 15:21:38 -05:00
nhmall
c5b74aee63 variable set but not used warning in qt_yndlg.cpp
../win/Qt/qt_yndlg.cpp: In member function ‘char nethack_qt_::NetHackQtYnDialog::Exec()’:
../win/Qt/qt_yndlg.cpp:80:9: warning: variable ‘ch_per_line’ set but not used [-Wunused-but-set-variable]
   80 |     int ch_per_line=6;
      |         ^~~~~~~~~~~
2021-02-03 12:56:55 -05:00
nhmall
8f3dc3b21b prevent a warning about a multi-line comment in qt_svsel.cpp 2021-02-03 12:51:26 -05:00
nhmall
24c829ecf7 wording fix 2021-02-03 09:42:59 -05:00
nhmall
b1e5c99906 extend the Qt clang fix pertaining to shadowing of global variables to g++ 2021-02-03 09:22:57 -05:00
nhmall
7b454f8ba3 Windows format string bits 2021-02-02 21:55:34 -05:00
nhmall
6f3337b75a more macOS whitelisting
X11, Qt, and util

also ensure the functional warnings.h macro definitions are used
with c++ clang compiler
2021-02-02 20:11:43 -05:00
nhmall
5b1d668c44 enable -Wformat-nonliteral for linux and equivalent for windows compilers
Whitelist all the verified existing triggers:
makedefs.c: In function ‘name_file’
attrib.c: one compiler balks at a ? b : c for fmtstring
cmd.c: In function ‘extcmd_via_menu’
cmd.c: In function ‘wiz_levltyp_legend’
do.c: In function ‘goto_level’
do_name.c: In function ‘coord_desc’
dungeon.c: In function ‘overview_stats’
eat.c:  one compiler balks at a ? b : c for fmtstring
end.c:  one compiler balks at a ? b : c for fmtstring
engrave.c: In function ‘engr_stats’
hack:c one compiler balks at a ? b : c for fmtstring
hacklib.c: one compiler balks at a ? b : c for fmtstring
insight.c: one compiler balks at a ? b : c for fmtstring
invent.c: In function ‘let_to_name’
light.c: In function ‘light_stats’
mhitm.c: In function ‘missmm’
options.c: In function ‘handler_symset’
options.c: In function ‘basic_menu_colors’
options.c: In function ‘optfn_o_autopickup_exceptions’
options.c: In function ‘optfn_o_menu_colors’
options.c: In function ‘optfn_o_message_types’
options.c: In function ‘optfn_o_status_cond’
options.c: In function ‘optfn_o_status_hilites’
options.c: In function ‘doset’
options.c: In function ‘doset_add_menu’
options.c: In function ‘show_menu_controls’
options.c: In function ‘handle_add_list_remove’
pager.c: In function ‘do_supplemental_info’
pager.c: In function ‘dohelp’
region.c: In function ‘region_stats’
rumors.c: sscanf usage
sounds.c: In function ‘domonnoise’
spell.c: In function ‘dospellmenu’
timeout.c: In function ‘timer_stats’
topten.c: In function ‘outentry’, fscanf, sscanf, fprintf usage
windows.c: In function ‘genl_status_update’
zap.c: one compiler balks at a ? b : c for fmtstring
win/curses/cursstat.c: In function ‘curses_status_update’
win/tty/wintty.c: In function ‘tty_status_update’
win/win32/mswproc.c: In function ‘mswin_status_update’
2021-02-02 19:03:12 -05:00
nhmall
102007d7cf visual studio project update; also recover.c 2021-02-01 13:24:14 -05:00
nhmall
a6631e3bb0 suppress a particular warning for an individual function; useful for non-gcc
Microsoft and other non-GNU compilers don't recognize gcc tricks
like  /*NOTREACHED*/ to suppress individual warnings. clang recognizes most
of them because it tries to be gcc-compatible. Because of that, a lot of
potentially useful warnings have had to be completely suppressed in the
past in all source files when using the non-gcc compatible compilers.

Now that the code is C99, take advantage of a way to suppress warnings for
individual functions, a big step up from suppressing the warnings
altogether.

Unfortunately, it does require a bit of ugliness caused by the
insertion of some macros in a few spots, but I'm not aware of
a cleaner alternative that still allows warnings to be enabled
in general, while suppressing a warning for known white-listed
instances.

Prior to the warning-tiggering function, place whichever one of
the following is needed to suppress the warning being encountered:

DISABLE_WARNING_UNREACHABLE_CODE
DISABLE_WARNING_CONDEXPR_IS_CONSTANT

After the warning-triggering function, place this:

RESTORE_WARNINGS

Under the hood, the compiler-appropriate warning-disabling
mechanics involve the use of C99 _Pragma, which can be used
in macros.

For unrecognized or inappropriate compilers, or if
DISABLE_WARNING_PRAGMAS is defined, the macros expand
to nothing.
2021-02-01 12:54:19 -05:00
nhmall
322293993f follow-up to remove some remnant wingem.h references
this should correct the broken mingw tty build
2021-01-31 13:44:15 -05:00
Bart House
9862e19a36 Disable warning for LUA files in Visual Studio builds. 2021-01-29 20:49:37 -08:00
nhmall
262f0d11b5 a couple of curses warnings on one compiler 2021-01-29 23:14:16 -05:00
nhmall
ca1f7c88d4 deal with some win/win32 warnings
win/win32/mhdlg.c(137)   : warning C4456: declaration of 'wbuf' hides
                           previous local declaration
win/win32/mhdlg.c(62)    : note: see declaration of 'wbuf'
win/win32/mhdlg.c(875)   : warning C4189: 'gender': local variable is
                           initialized but not referenced
win/win32/mhdlg.c(874)   : warning C4189: 'race': local variable is
                           initialized but not referenced
win/win32/mhdlg.c(876)   : warning C4189: 'alignment': local variable is
                           initialized but not referenced
win/win32/mhdlg.c(873)   : warning C4189: 'role': local variable is
                           initialized but not referenced
win/win32/mhinput.h(24)  : warning C4201: nonstandard extension used:
                           nameless struct/union
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhinput.h(24)  : warning C4201: nonstandard extension used:
                           nameless struct/union
win/win32/mhinput.h(24)  : warning C4201: nonstandard extension used:
                           nameless struct/union
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhmenu.c(62)   : warning C4201: nonstandard extension used:
                           nameless struct/union
win/win32/mhmenu.c(1082) : warning C4456: declaration of 'monitorScale'
                           hides previous local declaration
win/win32/mhmenu.c(995)  : note: see declaration of 'monitorScale'
win/win32/mhmenu.c(1142) : warning C4456: declaration of 'wbuf' hides
                           previous local declaration
win/win32/mhmenu.c(986)  : note: see declaration of 'wbuf'
win/win32/mhmenu.c(1082) : warning C4189: 'monitorScale': local variable
                           is initialized but not referenced
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhmsgwnd.c(700): warning C4701: potentially uninitialized
                           local variable 'size' used
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhsplash.c(158): warning C4189: 'verstrsize': local variable
                           is initialized but not referenced
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhstatus.c(353): warning C4057: 'function':
                           'const unsigned char *' differs in indirection
                           to slightly different base types from 'const char *'
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/NetHackW.c(181): warning C4456: declaration of 'buf' hides
                           previous local declaration
win/win32/NetHackW.c(90) : note: see declaration of 'buf'
win/win32/NetHackW.c(189): warning C4456: declaration of 'buf' hides
                           previous local declaration
win/win32/NetHackW.c(90) : note: see declaration of 'buf'
2021-01-29 13:00:00 -05:00
Dean Luick
7a07125ca3 Add missing fields in shown_stats[] in winstat.c
This eliminates a compiler initializer warning.
2021-01-29 11:44:39 -06:00
Dean Luick
cf3ad240ac Fix X11 warnings 2021-01-28 21:12:06 -06:00
nhmall
f01b4f0bf0 a couple of old-style function declarations in Windows code 2021-01-27 21:52:55 -05:00
nhmall
9d93e1e52a follow-up bits 2021-01-27 21:04:51 -05:00
nhmall
f963c5aca7 switch source tree from k&r to c99 2021-01-26 21:06:16 -05:00
PatR
a2a9cb7b4f X11 fancy status coloring cleanup
Fix a couple of warnings and do some reformatting.

Also tracks current color and attributes for each status field
and only updates them if they're being changed instead of every
time the value changes.  Not very thoroughly tested so far.

The only attribute being supported is inverse but tty-style
status supports the full set.  Also, changed values are always
highlighted in inverse even if there is no highlight rule.
That should probably only apply when 'statushilites' is 0,
giving the old fancy status highlighting when regular hilites
are turned off.
2021-01-26 13:54:43 -08:00
PatR
acbf423734 pull request #443 - X11 color status highlighting
for 'fancy status'.  This is from an emailed diff rather than
directly from git, and the git code has a bunch of commits,
so this may or may not match the latest.  It needs formatting
cleanup and triggers a couple of warnings on OSX.  Fix to follow.

Status highlight colors use the same names as menu coloring
but this uses different X11 colors for the two sets.  That
will have to be changed so that yellow either means yellow all
the time or goldenrod all the time instead of sometimes yellow
and sometimes goldenrod.

Adopts #443
2021-01-26 13:39:50 -08:00
PatR
31046826f5 couple of missing Qt prototypes
Shut up two missing prototype warnings.
2021-01-23 15:58:23 -08:00
PatR
ab74ed2c20 SELECTSAVED handling
By default, enable the SELECTSAVED option for everyone instead
of just for Windows or Qt.  And make Qt obey the 'selectsaved'
run-time option.

It can be disabled in config.h if necessary.
2021-01-23 15:02:11 -08:00
Bart House
a124114bce NetHackW: fix rendering of animations
Animations render by changing map state and calling delay.  When we delay,
we must ensure map windoow has been updated to show latest state before
we delay.
2021-01-23 12:04:16 -08:00
Bart House
d6b435a1d8 NetHackW: fix focus flashing when using far look
Changed when we update the map window back buffer.  We now defer all
back buffer renderig until mswin_map_update is called.  We update
the window only within the main message loop thus we should only
get fully coherent map state rendered prior to getting input.
2021-01-23 11:44:35 -08:00
Pasi Kallinen
2b525aab02 Fix missing proto 2021-01-23 10:56:56 +02:00
Pasi Kallinen
ad0c701127 Fix unused param 2021-01-22 18:16:08 +02:00
Pasi Kallinen
8681aec71b Fix uninitialized variable 2021-01-22 17:58:54 +02:00
Pasi Kallinen
44bb68fe82 Curses: Select menu items via mouse 2021-01-21 12:53:02 +02:00
Bart House
2b91931207 Fix delayed rendering of cursor with farlook in NetHackW. 2021-01-19 19:09:40 -08:00
PatR
891b8e3913 X11 selectsaved followup 2021-01-19 17:15:51 -08:00
PatR
d1e4623a0e X11: selectsaved
Implement the 'selectsaved' option for X11.  Requires that
SELECTSAVED be defined at compile time.

Behaves the same as for tty and curses except that if you
choose 'quit', the intended "until next time..." message doesn't
get delivered anywhere.
2021-01-19 16:59:36 -08:00
nhmall
cea4c8c488 another Microsoft compiler warning
win/curses/cursmain.c(760): warning C4189: 'win': local variable is initialized but not referenced
2021-01-17 23:14:13 -05:00
Dean Luick
3ef0f889e6 Fix gcc sprintf warnings
Gcc 9 has become more vocal with sprintf buffer overflow
checking.  Remove these sprintf warnings by changing the
offending calls to a snprintf wrapper that will explicitly
check the result.
2021-01-16 19:44:56 -06:00
PatR
648162b536 fix github issue #400 - Qt text windows hanging
Text windows only accept a few keys (<escape>, <return>, ':', now
<space>) and if they got other keys they passed those up the call
chain, arriving at the map where they were treated as commands
and were executed while the text window was still displayed.  The
cited example was ',' for pickup while the "things that are here"
popup was shown.  The 'foreign' key's command might be executed
successfully but the undismissed popup could become hung.

This fixes that ('foreign' keys will be ignored).  It also lets
<space> be used to dismiss text windows.

Slightly better but far from perfect:  if you perform a search,
then after it runs you need to type <escape> once, or <return>
or <space> twice, or else search again and pick [done] on the
search popup and then <return> or <space> once, to dismiss a
text window via keyboard.  (Prior to this, typing <escape> or
searching again and picking [done] followed by <return> were the
only ways.)  Also, searching for an empty string will now be
treated as if [done] had been picked.

Fixes #400
2021-01-14 15:10:41 -08:00
PatR
05c7a21756 curses: fix unused label 'bail'
when SELECTSAVED isn't defined by using a goto for it even when
an 'if' was easily avoiding the need for that.
2021-01-08 13:57:52 -08:00
PatR
2c02d5daac Qt key handling
Fix the popup versions of qt_yn_function() to handle control
characters by using the same key press event decoding routine
and menus and extended commands.  Moves 'keyValue()' to
qt_key.cpp and its declaration to qt_key.h, requring several
files to start using #include "qt_key.h".

'make depend' update to follow.
2021-01-08 13:47:34 -08:00
PatR
2f76d0e701 Qt: ^V on OSX
I can't take credit for this and still have no idea why it is
needed, but it fixes use of ^V as a command and as input to
to the regular version of yn_function().  In particular, '&'
command reports it as ^V.  Unfortunately when 'popup_dialog' is
set, no control characters seem to be accepted by the part of
NetHackQtYnDialog(Exec+KeyPressEvent) responsible for arbitrary
input.

It also causes getlin() to terminate but I can't think of any
situation where ^V would be considered to be valid input for
getlin() so won't worry about that.

I put it in as '#if MACOSX' because I don't know whether any
other Qt platforms need it.
2021-01-08 01:37:38 -08:00
PatR
7ba7873a41 curses line-of-input prompting
Redo the fake ESC handling for curses' wgetnstr() so that it
applies to all popup prompts rather than just to "Who are you?",
in case the player sets the 'popup_dialog' option.
2021-01-06 15:59:55 -08:00
nhmall
c6306e1117 adjust some disabled code in curses window port 2021-01-05 16:06:58 -05:00
nhmall
4cbf95b350 typo in comments 2021-01-05 10:44:19 -05:00
nhmall
3efc3c0bc8 MSDOS and TTY_TILES_ESCCODES bit 2021-01-05 10:28:43 -05:00