Qt prompt highlighting

When qt_yn_function() or qt_more() is asking for a single character
response, typing anything will cause the prompt line in the message
window to stop being highlighted.  If they reject what's been typed,
they beep (--More-- doesn't start beeping until second rejection);
change both of them to also rehighlight the prompt line to give a
visual indication that the question/acknowledgement is still being
asked.
This commit is contained in:
PatR
2020-10-08 11:24:11 -07:00
parent 5dcc328759
commit dde561810d
3 changed files with 21 additions and 0 deletions

View File

@@ -588,6 +588,11 @@ char NetHackQtBind::qt_more()
default:
if (++complain > 1)
NetHackQtBind::qt_nhbell();
// typing anything caused the most recent message line
// (which happens to our prompt) from having highlighting
// be removed; put that back
if (mesgwin)
mesgwin->RehighlightPrompt();
retry = true;
break;
}
@@ -669,6 +674,13 @@ char NetHackQtBind::qt_yn_function(const char *question_,
Strcpy(cbuf, visctrl(def));
} else {
NetHackQtBind::qt_nhbell();
// typing anything caused the most recent message line
// (which happens to our prompt) from having highlighting
// be removed; put that back
NetHackQtMessageWindow
*mesgwin = main ? main->GetMessageWindow() : NULL;
if (mesgwin)
mesgwin->RehighlightPrompt();
// and try again...
}
} else {

View File

@@ -184,6 +184,14 @@ void NetHackQtMessageWindow::AddToStr(const char *answer)
}
}
// used when yn_function() or more() rejects player's input and tries again
void NetHackQtMessageWindow::RehighlightPrompt()
{
// selects most recent message, which causes it to be highlighted
if (list && list->count())
list->setCurrentRow(list->count() - 1);
}
// are there any highlighted messages?
bool NetHackQtMessageWindow::hilit_mesgs()
{

View File

@@ -30,6 +30,7 @@ public:
void setMap(NetHackQtMapWindow2*);
void RehighlightPrompt();
bool hilit_mesgs();
void unhighlight_mesgs();
// for adding the answer for yn() to its prompt string