diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp index f9398b1e1..f4f6c90fc 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp @@ -546,6 +546,7 @@ void InnerWidget::paintEvent(QPaintEvent *e) { auto fullWidth = width(); auto dialogsClip = r; const auto ms = crl::now(); + const auto shownForum = _controller->shownForum().current(); const auto paintRow = [&]( not_null row, bool selected, @@ -557,6 +558,10 @@ void InnerWidget::paintEvent(QPaintEvent *e) { if (forum && !_topicJumpCache) { _topicJumpCache = std::make_unique(); } + const auto expanded = !active + && forum + && !_openedForum + && (key.history()->peer->forum() == shownForum); Ui::RowPainter::Paint(p, row, validateVideoUserpic(row), { .st = (forum ? &st::forumDialogRow : _st.get()), .topicJumpCache = _topicJumpCache.get(), @@ -569,6 +574,7 @@ void InnerWidget::paintEvent(QPaintEvent *e) { .selected = (_menuRow.key ? (row->key() == _menuRow.key) : selected), + .topicsExpanded = expanded, .topicJumpSelected = (selected && _selectedTopicJump && (!_pressed || _pressedTopicJump)), diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp index ef9452f9e..f7ce0571a 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp @@ -186,6 +186,21 @@ int PaintBadges( return (initial - right); } +void PaintExpandedTopicsBar(QPainter &p) { + auto hq = PainterHighQualityEnabler(p); + const auto radius = st::roundRadiusLarge; + const auto width = st::forumDialogRow.padding.left() / 2; + p.setPen(Qt::NoPen); + p.setBrush(st::dialogsBgActive); + p.drawRoundedRect( + -3 * radius, + st::forumDialogRow.padding.top(), + 3 * radius + width, + st::forumDialogRow.photoSize, + radius, + radius); +} + void PaintNarrowCounter( QPainter &p, const PaintContext &context, @@ -338,6 +353,9 @@ void PaintRow( if (!draft && item && !item->isEmpty()) { PaintNarrowCounter(p, context, badgesState); } + if (context.topicsExpanded) { + PaintExpandedTopicsBar(p); + } return; } diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h index 0fd29dd19..36b525049 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h @@ -62,6 +62,7 @@ struct PaintContext { int width = 0; bool active = false; bool selected = false; + bool topicsExpanded = false; bool topicJumpSelected = false; bool paused = false; bool search = false;