From: PatR Date: Mon, 23 Nov 2020 09:29:53 +0000 (-0800) Subject: Qt status again: unhighlight disabled fields X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=479bb877661fff4259a140effa22ae05da2b4bfb;p=nethack Qt status again: unhighlight disabled fields If 'showscore' has been On and gets toggled Off while Score is highlighted, remove that highlight immediately instead of letting it stick around a few turns until it times out. --- diff --git a/win/Qt/qt_icon.cpp b/win/Qt/qt_icon.cpp index b32ac0d9a..4076fc65d 100644 --- a/win/Qt/qt_icon.cpp +++ b/win/Qt/qt_icon.cpp @@ -63,8 +63,8 @@ NetHackQtLabelledIcon::NetHackQtLabelledIcon(QWidget *parent, const char *l, } // set up the style sheet strings used to specify color for status field -// labels [done "once", but once for each LabelledIcon that's constucted, -// so more than 20 copies overall] +// labels [done "once", but once for each LabelledIcon that's constructed, +// so about 30 copies overall with 3.6's status conditions] void NetHackQtLabelledIcon::initHighlight() { // note: string "green" is much darker than enum Qt::green @@ -90,6 +90,11 @@ void NetHackQtLabelledIcon::setLabel(const QString &t, bool lower) : (comp_mode == (lower ? SmallerIsBetter : BiggerIsBetter)) ? hl_better : hl_worse); + } else if (turn_count) { + // if we don't want to highlight this status field but it is + // currently highlighted (perhaps optional Score recently went + // up and has just been toggled off), remove the highlight + unhighlight(); } } } diff --git a/win/Qt/qt_stat.cpp b/win/Qt/qt_stat.cpp index f76612b22..1d47321d1 100644 --- a/win/Qt/qt_stat.cpp +++ b/win/Qt/qt_stat.cpp @@ -76,9 +76,6 @@ // The field passed to xp.setLabel() for its better vs worse comparison // gets swapped from Xp to Exp or vice versa, yielding a nonsensical // comparison for the first status update after the 'showexp' toggle. -// Toggling 'showscore' while Score is highlighted leaves the highlight -// on blank space until it times out. (Time isn't highlighted and Exp -// is combined with Xp so always updated; only Score is affected.) // extern "C" { @@ -694,9 +691,10 @@ void NetHackQtStatusWindow::updateStats() QString buf; if (first_set) { + // set toggle-detection flags for optional fields was_polyd = Upolyd ? true : false; had_exp = ::flags.showexp ? true : false; - // not '#ifndef SCORE_ON_BOTL' here; use the variable and the widget + // not conditionalized upon '#ifdef SCORE_ON_BOTL' here had_score = ::flags.showscore ? true : false; // false when disabled score.setLabel(""); // init if enabled, one-time set if disabled }