-NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.293 $ $NHDT-Date: 1598852985 2020/08/31 05:49:45 $
+NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.294 $ $NHDT-Date: 1598859031 2020/08/31 07:30:31 $
General Fixes and Modified Features
-----------------------------------
entry checkboxes internally but didn't redraw the menu to show that
Qt: fix the F1/F2/Tab macro keys to not require that number_pad be On
Qt: unhighlight highlighted message (last one issued) after player has seen it
+Qt: update message window's last message with player's response if it's a
+ prompt string for a single-character of input (ynaq or invent letter)
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"
return 0;
}
-char NetHackQtBind::qt_yn_function(const char *question_, const char *choices, CHAR_P def)
+char NetHackQtBind::qt_yn_function(const char *question_,
+ const char *choices, CHAR_P def)
{
QString question(QString::fromLatin1(question_));
QString message;
// Similar to X11 windowport `slow' feature.
int result = -1;
+ char cbuf[40];
+ cbuf[0] = '\0';
#ifdef USE_POPUPS
if (choices) {
NetHackQtBind::qt_putstr(WIN_MESSAGE, ATR_BOLD, message);
while (result < 0) {
+ cbuf[0] = '\0';
char ch=NetHackQtBind::qt_nhgetch();
if (ch=='\033') {
result=yn_esc_map;
+ Strcpy(cbuf, "ESC");
} else if (choices && !strchr(choices,ch)) {
if (def && (ch==' ' || ch=='\r' || ch=='\n')) {
result=def;
+ Strcpy(cbuf, visctrl(def));
} else {
NetHackQtBind::qt_nhbell();
// and try again...
}
} else {
result=ch;
+ Strcpy(cbuf, (ch == ' ') ? "SPC" : visctrl(ch));
}
}
+ // if answer was supplied via popup, it will already be appended
+ // to the prompt, so included above, and cbuf[] will be empty
+ if (cbuf[0]) {
+ NetHackQtWindow *window = id_to_window[WIN_MESSAGE];
+ NetHackQtMessageWindow *mesgwin
+ = static_cast <NetHackQtMessageWindow *> (window);
+ mesgwin->AddToStr(cbuf);
+ }
+
NetHackQtBind::qt_clear_nhwindow(WIN_MESSAGE);
return result;
void NetHackQtMessageWindow::Clear()
{
- if ( map )
+ if (list)
+ NetHackQtMessageWindow::unhighlight_mesgs();
+
+ if (map)
map->clearMessages();
}
map->putMessage(attr, text2);
}
+// append the user's answer to a prompt message
+void NetHackQtMessageWindow::AddToStr(const char *answer)
+{
+ if (list) {
+ QListWidgetItem *item = list->currentItem();
+ if (item)
+ item->setText(item->text() + QString(" %1").arg(answer));
+ }
+}
+
// are there any highlighted messages?
bool NetHackQtMessageWindow::hilit_mesgs()
{