From: PatR Date: Thu, 8 Oct 2020 18:24:11 +0000 (-0700) Subject: Qt prompt highlighting X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dde561810d6fef8751f1794753dff889c0def3d3;p=nethack 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. --- diff --git a/win/Qt/qt_bind.cpp b/win/Qt/qt_bind.cpp index 0e1f362a8..5fb65f980 100644 --- a/win/Qt/qt_bind.cpp +++ b/win/Qt/qt_bind.cpp @@ -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 { diff --git a/win/Qt/qt_msg.cpp b/win/Qt/qt_msg.cpp index bdd8f535c..c9c3537b8 100644 --- a/win/Qt/qt_msg.cpp +++ b/win/Qt/qt_msg.cpp @@ -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() { diff --git a/win/Qt/qt_msg.h b/win/Qt/qt_msg.h index c3cd4275c..ca84acaf5 100644 --- a/win/Qt/qt_msg.h +++ b/win/Qt/qt_msg.h @@ -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