From 4ff5bc5773d95b07fd34485a564d1aacc3fb9d1a Mon Sep 17 00:00:00 2001 From: John Preston Date: Sat, 17 Sep 2022 01:59:01 +0400 Subject: [PATCH] Provide correct colors for spoiler selection. --- ui/basic.style | 24 ++++++++++++------------ ui/text/text_renderer.cpp | 13 ++++++------- ui/text/text_renderer.h | 3 ++- ui/widgets/input_fields.cpp | 4 ++-- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/ui/basic.style b/ui/basic.style index 9b36b57..ebc7413 100644 --- a/ui/basic.style +++ b/ui/basic.style @@ -9,15 +9,14 @@ using "ui/colors.palette"; TextPalette { linkFg: color; monoFg: color; + spoilerFg: color; selectBg: color; selectFg: color; selectLinkFg: color; selectMonoFg: color; + selectSpoilerFg: color; selectOverlay: color; linkAlwaysActive: int; - spoilerBg: color; - spoilerActiveBg: color; - spoilerActiveFg: color; } TextStyle { @@ -42,14 +41,13 @@ lineWidth: 1px; defaultTextPalette: TextPalette { linkFg: windowActiveTextFg; monoFg: msgInMonoFg; + spoilerFg: msgInDateFg; selectBg: msgInBgSelected; selectFg: transparent; // use painter current pen instead selectLinkFg: historyLinkInFgSelected; selectMonoFg: msgInMonoFgSelected; + selectSpoilerFg: msgInDateFgSelected; selectOverlay: msgSelectOverlay; - spoilerBg: msgInDateFg; - spoilerActiveBg: msgInDateFg; - spoilerActiveFg: msgInBg; } defaultTextStyle: TextStyle { font: normalFont; @@ -126,10 +124,12 @@ msgDateTextStyle: defaultTextStyle; serviceTextPalette: TextPalette(defaultTextPalette) { linkFg: msgServiceFg; monoFg: msgServiceFg; + spoilerFg: msgServiceFg; selectBg: msgServiceBgSelected; selectFg: msgServiceFg; selectLinkFg: msgServiceFg; selectMonoFg: msgServiceFg; + selectSpoilerFg: msgServiceFg; selectOverlay: msgServiceBgSelected; } serviceTextStyle: TextStyle(defaultTextStyle) { @@ -140,34 +140,34 @@ serviceTextStyle: TextStyle(defaultTextStyle) { inTextPalette: TextPalette(defaultTextPalette) { linkFg: historyLinkInFg; monoFg: msgInMonoFg; + spoilerFg: msgInDateFg; selectBg: msgInBgSelected; selectFg: historyTextInFgSelected; selectLinkFg: historyLinkInFgSelected; selectMonoFg: msgInMonoFgSelected; + selectSpoilerFg: msgInDateFgSelected; selectOverlay: msgSelectOverlay; - spoilerBg: msgInDateFg; - spoilerActiveBg: msgInDateFg; - spoilerActiveFg: msgInBg; } inTextPaletteSelected: TextPalette(inTextPalette) { linkFg: historyLinkInFgSelected; monoFg: msgInMonoFgSelected; + spoilerFg: msgInDateFgSelected; } outTextPalette: TextPalette(defaultTextPalette) { linkFg: historyLinkOutFg; monoFg: msgOutMonoFg; + spoilerFg: msgOutDateFg; selectBg: msgOutBgSelected; selectFg: historyTextOutFgSelected; selectLinkFg: historyLinkOutFgSelected; selectMonoFg: msgOutMonoFgSelected; + selectSpoilerFg: msgOutDateFgSelected; selectOverlay: msgSelectOverlay; - spoilerBg: msgOutDateFg; - spoilerActiveBg: msgOutDateFg; - spoilerActiveFg: msgOutBg; } outTextPaletteSelected: TextPalette(outTextPalette) { linkFg: historyLinkOutFgSelected; monoFg: msgOutMonoFgSelected; + spoilerFg: msgOutDateFgSelected; } fwdTextStyle: TextStyle(semiboldTextStyle) { linkFontOver: semiboldFont; diff --git a/ui/text/text_renderer.cpp b/ui/text/text_renderer.cpp index 50672b2..c29e896 100644 --- a/ui/text/text_renderer.cpp +++ b/ui/text/text_renderer.cpp @@ -757,7 +757,7 @@ bool Renderer::drawLine(uint16 _lineEnd, const String::TextBlocks::const_iterato } } } - const auto hasSpoiler = _background.color && + const auto hasSpoiler = _background.spoiler && (_background.inFront || _background.startMs); if (hasSpoiler) { fillSpoiler = { x, si.width }; @@ -789,7 +789,7 @@ bool Renderer::drawLine(uint16 _lineEnd, const String::TextBlocks::const_iterato _customEmojiSkip = (st::emojiSize - _customEmojiSize) / 2; } custom->paint(*_p, { - .preview = _palette->spoilerActiveBg->c, + .preview = _palette->spoilerFg->c, .now = now(), .position = { x + _customEmojiSkip, y + _customEmojiSkip }, .paused = _paused, @@ -1072,7 +1072,7 @@ void Renderer::fillSpoilerRange( int currentBlockIndex, int positionFrom, int positionTill) { - if (!_background.color || !_t->_spoiler) { + if (!_background.spoiler || !_t->_spoiler) { return; } const auto elided = (_indexOfElidedBlock == currentBlockIndex) @@ -1089,7 +1089,7 @@ void Renderer::fillSpoilerRange( useWidth, _fontHeight); if (_spoilerCache) { - const auto mess = _spoilerCache->lookup((*_background.color)->c); + const auto mess = _spoilerCache->lookup((*_background.spoiler)->c); const auto spoiler = _t->_spoiler.get(); const auto frame = mess->frame( spoiler->animation.index(now(), _paused)); @@ -1920,9 +1920,8 @@ void Renderer::applyBlockProperties(const AbstractBlock *block) { = _t->_spoiler->links.at(block->spoilerIndex() - 1); const auto inBack = (handler && handler->shown()); _background.inFront = !inBack; - _background.color = inBack - ? &_palette->spoilerActiveBg - : &_palette->spoilerBg; + _background.spoiler = &_palette->spoilerFg; + _background.spoilerSelected = &_palette->selectSpoilerFg; _background.startMs = handler ? handler->startMs() : 0; _background.spoilerIndex = block->spoilerIndex(); } diff --git a/ui/text/text_renderer.h b/ui/text/text_renderer.h index 9c4c77e..48f4e30 100644 --- a/ui/text/text_renderer.h +++ b/ui/text/text_renderer.h @@ -100,7 +100,8 @@ private: const QPen *_currentPen = nullptr; const QPen *_currentPenSelected = nullptr; struct { - const style::color *color = nullptr; + const style::color *spoiler = nullptr; + const style::color *spoilerSelected = nullptr; bool inFront = false; crl::time startMs = 0; uint16 spoilerIndex = 0; diff --git a/ui/widgets/input_fields.cpp b/ui/widgets/input_fields.cpp index 0f5e2cb..1f5c2bc 100644 --- a/ui/widgets/input_fields.cpp +++ b/ui/widgets/input_fields.cpp @@ -765,7 +765,7 @@ QTextCharFormat PrepareTagFormat( color = st::defaultTextPalette.monoFg; font = font->monospace(); } else if (tag == kTagSpoiler) { - bg = st::defaultTextPalette.spoilerActiveBg; + bg = st::msgInDateFg; } }; for (const auto &tag : TextUtilities::SplitTags(tag)) { @@ -1426,7 +1426,7 @@ void CustomEmojiObject::drawObject( return; } i->second->paint(*painter, { - .preview = st::defaultTextPalette.spoilerActiveBg->c, + .preview = st::windowBgRipple->c, .now = _now, .position = QPoint( int(base::SafeRound(rect.x())) + st::emojiPadding + _skip,