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