From 267228d0ddcc06e0e7070efc213bab56c23d2347 Mon Sep 17 00:00:00 2001 From: PatR Date: Tue, 13 Oct 2020 13:41:57 -0700 Subject: [PATCH] Qt toolbar 'rest' button An issue in the core made the "Zz" button in the Qt toolbar only work if rest_on_space was enabled. cmd_from_func() was returning ' ' instead of '.' for the keystroke to run the rest command. --- doc/fixes37.0 | 4 +++- src/cmd.c | 13 +++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/doc/fixes37.0 b/doc/fixes37.0 index 0c1d1ea4d..3797a96b3 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -1,4 +1,4 @@ -NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.326 $ $NHDT-Date: 1602355548 2020/10/10 18:45:48 $ +NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.327 $ $NHDT-Date: 1602621704 2020/10/13 20:41:44 $ General Fixes and Modified Features ----------------------------------- @@ -439,6 +439,8 @@ Qt: implement --More-- prompt to support MSGTYPE=stop Qt: for menu search, don't require clicking on the search target popup before typing target string (was using typed letters to make menu selections if player didn't click on the popup first) +Qt: rest ("Zz") button on the toolbar only worked when 'rest_on_space' was On + (core issue, not Qt's fault) Qt+QSX: fix control key Qt+OSX: rename menu entry "nethack->Preferences..." for invoking nethack's 'O' command to "Game->Run-time options" and entry "Game->Qt settings" diff --git a/src/cmd.c b/src/cmd.c index 19ae95498..b870f0d46 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 cmd.c $NHDT-Date: 1597069374 2020/08/10 14:22:54 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.422 $ */ +/* NetHack 3.7 cmd.c $NHDT-Date: 1602621705 2020/10/13 20:41:45 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.423 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2013. */ /* NetHack may be freely redistributed. See license for details. */ @@ -2272,9 +2272,18 @@ int NDECL((*fn)); { int i; - for (i = 0; i < 256; ++i) + /* skip NUL; allowing it would wreak havoc */ + for (i = 1; i < 256; ++i) { + /* skip space; we'll use it below as last resort if no other + keystroke invokes space's command */ + if (i == ' ') + continue; + if (g.Cmd.commands[i] && g.Cmd.commands[i]->ef_funct == fn) return (char) i; + } + if (g.Cmd.commands[' '] && g.Cmd.commands[' ']->ef_funct == fn) + return ' '; return '\0'; }