diff --git a/Telegram/SourceFiles/calls/group/ui/calls_group_scheduled_labels.cpp b/Telegram/SourceFiles/calls/group/ui/calls_group_scheduled_labels.cpp index a5c15c8fa..708cf3cde 100644 --- a/Telegram/SourceFiles/calls/group/ui/calls_group_scheduled_labels.cpp +++ b/Telegram/SourceFiles/calls/group/ui/calls_group_scheduled_labels.cpp @@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "styles/style_calls.h" #include +#include namespace Calls::Group::Ui { diff --git a/Telegram/SourceFiles/chat_helpers/message_field.cpp b/Telegram/SourceFiles/chat_helpers/message_field.cpp index a9c0fd789..b988a9b3f 100644 --- a/Telegram/SourceFiles/chat_helpers/message_field.cpp +++ b/Telegram/SourceFiles/chat_helpers/message_field.cpp @@ -787,7 +787,7 @@ void MessageLinksParser::parse() { } offset = matchOffset = p - start; } - processTagsBefore(QFIXED_MAX); + processTagsBefore(Ui::kQFixedMax); apply(text, ranges); } diff --git a/Telegram/SourceFiles/countries/countries_instance.cpp b/Telegram/SourceFiles/countries/countries_instance.cpp index 36af0ce12..0a7844179 100644 --- a/Telegram/SourceFiles/countries/countries_instance.cpp +++ b/Telegram/SourceFiles/countries/countries_instance.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "countries/countries_instance.h" #include "base/qt/qt_common_adapters.h" +#include "base/qt/qt_string_view.h" namespace Countries { namespace { diff --git a/Telegram/SourceFiles/data/data_drafts.cpp b/Telegram/SourceFiles/data/data_drafts.cpp index 0a6d64122..00c9ba02d 100644 --- a/Telegram/SourceFiles/data/data_drafts.cpp +++ b/Telegram/SourceFiles/data/data_drafts.cpp @@ -69,7 +69,7 @@ void ApplyPeerCloudDraft( textWithTags, replyTo, topicRootId, - MessageCursor(QFIXED_MAX, QFIXED_MAX, QFIXED_MAX), + MessageCursor(Ui::kQFixedMax, Ui::kQFixedMax, Ui::kQFixedMax), (draft.is_no_webpage() ? Data::PreviewState::Cancelled : Data::PreviewState::Allowed)); diff --git a/Telegram/SourceFiles/data/data_statistics_chart.cpp b/Telegram/SourceFiles/data/data_statistics_chart.cpp index 9978e498f..3014bf04f 100644 --- a/Telegram/SourceFiles/data/data_statistics_chart.cpp +++ b/Telegram/SourceFiles/data/data_statistics_chart.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_statistics_chart.h" #include +#include namespace Data { diff --git a/Telegram/SourceFiles/data/data_types.cpp b/Telegram/SourceFiles/data/data_types.cpp index ba8a44470..997d4282e 100644 --- a/Telegram/SourceFiles/data/data_types.cpp +++ b/Telegram/SourceFiles/data/data_types.cpp @@ -102,7 +102,7 @@ void MessageCursor::fillFrom(not_null field) { position = cursor.position(); anchor = cursor.anchor(); const auto top = field->scrollTop().current(); - scroll = (top != field->scrollTopMax()) ? top : QFIXED_MAX; + scroll = (top != field->scrollTopMax()) ? top : Ui::kQFixedMax; } void MessageCursor::applyTo(not_null field) { diff --git a/Telegram/SourceFiles/data/data_types.h b/Telegram/SourceFiles/data/data_types.h index 1c2823a4f..6fd5cc51a 100644 --- a/Telegram/SourceFiles/data/data_types.h +++ b/Telegram/SourceFiles/data/data_types.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "ui/text/text.h" // For QFIXED_MAX +#include "ui/text/text.h" // Ui::kQFixedMax. #include "data/data_peer_id.h" #include "data/data_msg_id.h" #include "base/qt/qt_compare.h" @@ -196,7 +196,7 @@ struct MessageCursor { int position = 0; int anchor = 0; - int scroll = QFIXED_MAX; + int scroll = Ui::kQFixedMax; }; diff --git a/Telegram/SourceFiles/history/history_item_components.cpp b/Telegram/SourceFiles/history/history_item_components.cpp index 402f32127..30d032bce 100644 --- a/Telegram/SourceFiles/history/history_item_components.cpp +++ b/Telegram/SourceFiles/history/history_item_components.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/qt/qt_key_modifiers.h" #include "lang/lang_keys.h" #include "ui/effects/ripple_animation.h" +#include "ui/effects/spoiler_mess.h" #include "ui/image/image.h" #include "ui/toast/toast.h" #include "ui/text/text_options.h" @@ -260,6 +261,17 @@ void HistoryMessageForwarded::create(const HistoryMessageVia *via) const { } } +HistoryMessageReply::HistoryMessageReply() = default; + +HistoryMessageReply &HistoryMessageReply::operator=( + HistoryMessageReply &&other) = default; + +HistoryMessageReply::~HistoryMessageReply() { + // clearData() should be called by holder. + Expects(replyToMsg.empty()); + Expects(replyToVia == nullptr); +} + bool HistoryMessageReply::updateData( not_null holder, bool force) { @@ -311,7 +323,7 @@ bool HistoryMessageReply::updateData( .customEmojiRepaint = repaint, }; replyToText.setMarkedText( - st::messageTextStyle, + st::defaultTextStyle, (replyToMsg ? replyToMsg->inReplyText() : replyToStory->inReplyText()), @@ -333,7 +345,8 @@ bool HistoryMessageReply::updateData( if (replyToMsg) { const auto peer = replyToMsg->history()->peer; replyToColorKey = (!holder->out() - && (peer->isMegagroup() || peer->isChat())) + && (peer->isMegagroup() || peer->isChat()) + && replyToMsg->from()->isUser()) ? replyToMsg->from()->id : PeerId(0); } else { diff --git a/Telegram/SourceFiles/history/history_item_components.h b/Telegram/SourceFiles/history/history_item_components.h index d5414ba14..6416475ab 100644 --- a/Telegram/SourceFiles/history/history_item_components.h +++ b/Telegram/SourceFiles/history/history_item_components.h @@ -22,6 +22,7 @@ namespace Ui { struct ChatPaintContext; class ChatStyle; struct PeerUserpicView; +class SpoilerAnimation; } // namespace Ui namespace Data { @@ -227,17 +228,13 @@ private: struct HistoryMessageReply : public RuntimeComponent { - HistoryMessageReply() = default; + HistoryMessageReply(); HistoryMessageReply(const HistoryMessageReply &other) = delete; HistoryMessageReply(HistoryMessageReply &&other) = delete; HistoryMessageReply &operator=( const HistoryMessageReply &other) = delete; - HistoryMessageReply &operator=(HistoryMessageReply &&other) = default; - ~HistoryMessageReply() { - // clearData() should be called by holder. - Expects(replyToMsg.empty()); - Expects(replyToVia == nullptr); - } + HistoryMessageReply &operator=(HistoryMessageReply &&other); + ~HistoryMessageReply(); static constexpr auto kBarAlpha = 230. / 255.; diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 82390ece5..9ce5a8af3 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -38,6 +38,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/message_bar.h" #include "ui/chat/attach/attach_send_files_way.h" #include "ui/chat/choose_send_as.h" +#include "ui/effects/spoiler_mess.h" #include "ui/image/image.h" #include "ui/painter.h" #include "ui/power_saving.h" @@ -1774,7 +1775,7 @@ bool HistoryWidget::notify_switchInlineBotButtonReceived( MessageCursor cursor = { int(textWithTags.text.size()), int(textWithTags.text.size()), - QFIXED_MAX, + Ui::kQFixedMax, }; _history->setLocalDraft(std::make_unique( textWithTags, @@ -7184,7 +7185,7 @@ void HistoryWidget::editMessage(not_null item) { const auto cursor = MessageCursor { int(editData.text.size()), int(editData.text.size()), - QFIXED_MAX + Ui::kQFixedMax }; const auto previewPage = [&]() -> WebPageData* { if (const auto media = item->media()) { @@ -7486,7 +7487,7 @@ void HistoryWidget::updatePreview() { Ui::NameTextOptions()); auto linkText = QStringView(_previewLinks).split(' ').at(0).toString(); _previewDescription.setText( - st::messageTextStyle, + st::defaultTextStyle, linkText, Ui::DialogTextOptions()); @@ -7507,7 +7508,7 @@ void HistoryWidget::updatePreview() { preview.title, Ui::NameTextOptions()); _previewDescription.setText( - st::messageTextStyle, + st::defaultTextStyle, preview.description, Ui::DialogTextOptions()); } @@ -7762,7 +7763,7 @@ void HistoryWidget::updateReplyEditText(not_null item) { .customEmojiRepaint = [=] { updateField(); }, }; _replyEditMsgText.setMarkedText( - st::messageTextStyle, + st::defaultTextStyle, item->inReplyText(), Ui::DialogTextOptions(), context); diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp index 4f43bac26..d19da9a57 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp @@ -68,6 +68,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/controls/send_as_button.h" #include "ui/controls/silent_toggle.h" #include "ui/chat/choose_send_as.h" +#include "ui/effects/spoiler_mess.h" #include "window/window_adaptive.h" #include "window/window_session_controller.h" #include "mainwindow.h" @@ -2883,7 +2884,7 @@ void ComposeControls::editMessage(not_null item) { const auto cursor = MessageCursor{ int(editData.text.size()), int(editData.text.size()), - QFIXED_MAX + Ui::kQFixedMax }; const auto previewPage = [&]() -> WebPageData* { if (const auto media = item->media()) { diff --git a/Telegram/SourceFiles/history/view/controls/history_view_forward_panel.cpp b/Telegram/SourceFiles/history/view/controls/history_view_forward_panel.cpp index 9ed8bc49a..f74453919 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_forward_panel.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_forward_panel.cpp @@ -216,7 +216,7 @@ void ForwardPanel::updateTexts() { .customEmojiRepaint = _repaint, }; _text.setMarkedText( - st::messageTextStyle, + st::defaultTextStyle, text, Ui::DialogTextOptions(), context); diff --git a/Telegram/SourceFiles/history/view/history_view_message.cpp b/Telegram/SourceFiles/history/view/history_view_message.cpp index 13d9efb5d..60a544708 100644 --- a/Telegram/SourceFiles/history/view/history_view_message.cpp +++ b/Telegram/SourceFiles/history/view/history_view_message.cpp @@ -1622,6 +1622,8 @@ void Message::paintText( .position = trect.topLeft(), .availableWidth = trect.width(), .palette = &stm->textPalette, + .pre = stm->preBlockCache.get(), + .blockquote = stm->blockquoteBlockCache.get(), .colors = context.st->highlightColors(), .spoiler = Ui::Text::DefaultSpoilerCache(), .now = context.now, diff --git a/Telegram/SourceFiles/history/view/media/history_view_document.cpp b/Telegram/SourceFiles/history/view/media/history_view_document.cpp index 5caedc79f..82c6af3d1 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_document.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_document.cpp @@ -748,6 +748,8 @@ void Document::draw( .position = { st::msgPadding.left(), captiontop }, .availableWidth = captionw, .palette = &stm->textPalette, + .pre = stm->preBlockCache.get(), + .blockquote = stm->blockquoteBlockCache.get(), .colors = context.st->highlightColors(), .spoiler = Ui::Text::DefaultSpoilerCache(), .now = context.now, diff --git a/Telegram/SourceFiles/history/view/media/history_view_extended_preview.cpp b/Telegram/SourceFiles/history/view/media/history_view_extended_preview.cpp index 252b16a4d..fe9287df5 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_extended_preview.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_extended_preview.cpp @@ -235,6 +235,8 @@ void ExtendedPreview::draw(Painter &p, const PaintContext &context) const { painty + painth + st::mediaCaptionSkip), .availableWidth = captionw, .palette = &stm->textPalette, + .pre = stm->preBlockCache.get(), + .blockquote = stm->blockquoteBlockCache.get(), .colors = context.st->highlightColors(), .spoiler = Ui::Text::DefaultSpoilerCache(), .now = context.now, diff --git a/Telegram/SourceFiles/history/view/media/history_view_gif.cpp b/Telegram/SourceFiles/history/view/media/history_view_gif.cpp index d2ec6a551..8debdff7e 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_gif.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_gif.cpp @@ -709,6 +709,8 @@ void Gif::draw(Painter &p, const PaintContext &context) const { .position = QPoint(st::msgPadding.left(), top), .availableWidth = captionw, .palette = &stm->textPalette, + .pre = stm->preBlockCache.get(), + .blockquote = stm->blockquoteBlockCache.get(), .colors = context.st->highlightColors(), .spoiler = Ui::Text::DefaultSpoilerCache(), .now = context.now, diff --git a/Telegram/SourceFiles/history/view/media/history_view_large_emoji.h b/Telegram/SourceFiles/history/view/media/history_view_large_emoji.h index 16a31614a..85852e96c 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_large_emoji.h +++ b/Telegram/SourceFiles/history/view/media/history_view_large_emoji.h @@ -14,6 +14,10 @@ namespace Stickers { struct LargeEmojiImage; } // namespace Stickers +namespace Ui::Text { +class CustomEmoji; +} // namespace Ui::Text + namespace HistoryView { using LargeEmojiMedia = std::variant< diff --git a/Telegram/SourceFiles/history/view/media/history_view_media.cpp b/Telegram/SourceFiles/history/view/media/history_view_media.cpp index 22b5ef296..4e19fa291 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_media.cpp @@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/item_text_options.h" #include "ui/chat/chat_style.h" #include "ui/chat/message_bubble.h" +#include "ui/effects/spoiler_mess.h" #include "ui/image/image_prepare.h" #include "ui/power_saving.h" #include "core/ui_integration.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp b/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp index e20cf8f1e..38708df44 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp @@ -367,6 +367,9 @@ void GroupedMedia::draw(Painter &p, const PaintContext &context) const { captiony), .availableWidth = captionw, .palette = &stm->textPalette, + .pre = stm->preBlockCache.get(), + .blockquote = stm->blockquoteBlockCache.get(), + .colors = context.st->highlightColors(), .spoiler = Ui::Text::DefaultSpoilerCache(), .now = context.now, .pausedEmoji = context.paused || On(PowerSaving::kEmojiChat), diff --git a/Telegram/SourceFiles/history/view/media/history_view_media_spoiler.h b/Telegram/SourceFiles/history/view/media/history_view_media_spoiler.h index 605b3d4c8..2b885a25a 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media_spoiler.h +++ b/Telegram/SourceFiles/history/view/media/history_view_media_spoiler.h @@ -10,6 +10,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/message_bubble.h" #include "ui/effects/animations.h" +namespace Ui { +class SpoilerAnimation; +} // namespace Ui + namespace HistoryView { struct MediaSpoiler { diff --git a/Telegram/SourceFiles/history/view/media/history_view_photo.cpp b/Telegram/SourceFiles/history/view/media/history_view_photo.cpp index 034e52d6c..25c61b890 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_photo.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_photo.cpp @@ -405,6 +405,8 @@ void Photo::draw(Painter &p, const PaintContext &context) const { .position = QPoint(st::msgPadding.left(), top), .availableWidth = captionw, .palette = &stm->textPalette, + .pre = stm->preBlockCache.get(), + .blockquote = stm->blockquoteBlockCache.get(), .colors = context.st->highlightColors(), .spoiler = Ui::Text::DefaultSpoilerCache(), .now = context.now, diff --git a/Telegram/SourceFiles/history/view/reactions/history_view_reactions.h b/Telegram/SourceFiles/history/view/reactions/history_view_reactions.h index ef2758d5c..398ec0cd8 100644 --- a/Telegram/SourceFiles/history/view/reactions/history_view_reactions.h +++ b/Telegram/SourceFiles/history/view/reactions/history_view_reactions.h @@ -20,6 +20,10 @@ struct ReactionFlyAnimationArgs; class ReactionFlyAnimation; } // namespace Ui +namespace Ui::Text { +class CustomEmoji; +} // namespace Ui::Text + namespace HistoryView { using PaintContext = Ui::ChatPaintContext; class Message; diff --git a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_tabs.h b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_tabs.h index f3acf9826..51d776004 100644 --- a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_tabs.h +++ b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_tabs.h @@ -7,6 +7,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once +#include "ui/text/text_custom_emoji.h" // Ui::Text::CustomEmojiFactory. + namespace Ui { enum class WhoReadType; } // namespace Ui diff --git a/Telegram/SourceFiles/info/profile/info_profile_badge.cpp b/Telegram/SourceFiles/info/profile/info_profile_badge.cpp index 73437e1dd..1cbcef23e 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_badge.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_badge.cpp @@ -76,6 +76,8 @@ Badge::Badge( }, _lifetime); } +Badge::~Badge() = default; + Ui::RpWidget *Badge::widget() const { return _view.data(); } diff --git a/Telegram/SourceFiles/info/profile/info_profile_badge.h b/Telegram/SourceFiles/info/profile/info_profile_badge.h index daada96d1..f0e770d3f 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_badge.h +++ b/Telegram/SourceFiles/info/profile/info_profile_badge.h @@ -27,6 +27,10 @@ class RpWidget; class AbstractButton; } // namespace Ui +namespace Ui::Text { +class CustomEmoji; +} // namespace Ui::Text + namespace Info::Profile { class EmojiStatusPanel; @@ -69,6 +73,8 @@ public: base::flags allowed = base::flags::from_raw(-1)); + ~Badge(); + [[nodiscard]] Ui::RpWidget *widget() const; void setPremiumClickCallback(Fn callback); diff --git a/Telegram/SourceFiles/lang/lang_tag.cpp b/Telegram/SourceFiles/lang/lang_tag.cpp index 71c7c8398..7b1a10acb 100644 --- a/Telegram/SourceFiles/lang/lang_tag.cpp +++ b/Telegram/SourceFiles/lang/lang_tag.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "ui/text/text.h" #include "base/qt/qt_common_adapters.h" +#include "base/qt/qt_string_view.h" namespace Lang { namespace { diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 8abf9f2d2..3473738cf 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -596,7 +596,7 @@ bool MainWidget::shareUrl( const auto cursor = MessageCursor{ int(url.size()) + 1, int(url.size()) + 1 + int(text.size()), - QFIXED_MAX + Ui::kQFixedMax }; const auto history = thread->owningHistory(); const auto topicRootId = thread->topicRootId(); diff --git a/Telegram/SourceFiles/overview/overview_layout.cpp b/Telegram/SourceFiles/overview/overview_layout.cpp index ea4ebd6ec..47364e953 100644 --- a/Telegram/SourceFiles/overview/overview_layout.cpp +++ b/Telegram/SourceFiles/overview/overview_layout.cpp @@ -346,6 +346,8 @@ Photo::Photo( } } +Photo::~Photo() = default; + void Photo::initDimensions() { _maxw = 2 * st::overviewPhotoMinSize; _minh = _story ? qRound(_maxw * kStoryRatio) : _maxw; diff --git a/Telegram/SourceFiles/overview/overview_layout.h b/Telegram/SourceFiles/overview/overview_layout.h index d17ae7f6c..331d7f3e2 100644 --- a/Telegram/SourceFiles/overview/overview_layout.h +++ b/Telegram/SourceFiles/overview/overview_layout.h @@ -195,6 +195,7 @@ public: not_null parent, not_null photo, MediaOptions options); + ~Photo(); void initDimensions() override; int32 resizeGetHeight(int32 width) override; diff --git a/Telegram/SourceFiles/platform/win/main_window_win.cpp b/Telegram/SourceFiles/platform/win/main_window_win.cpp index 39a3c8f9a..45ec3fc6c 100644 --- a/Telegram/SourceFiles/platform/win/main_window_win.cpp +++ b/Telegram/SourceFiles/platform/win/main_window_win.cpp @@ -35,6 +35,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include #include #include +#include #include #include diff --git a/Telegram/SourceFiles/settings/settings_scale_preview.cpp b/Telegram/SourceFiles/settings/settings_scale_preview.cpp index 986129222..80dbbe56d 100644 --- a/Telegram/SourceFiles/settings/settings_scale_preview.cpp +++ b/Telegram/SourceFiles/settings/settings_scale_preview.cpp @@ -73,6 +73,7 @@ private: void validateShadowCache(); [[nodiscard]] int scaled(int value) const; + [[nodiscard]] QPoint scaled(QPoint value) const; [[nodiscard]] QMargins scaled(QMargins value) const; [[nodiscard]] style::font scaled( const style::font &value, int size) const; @@ -307,6 +308,10 @@ int Preview::scaled(int value) const { return style::ConvertScale(value, _scale); } +QPoint Preview::scaled(QPoint value) const { + return { scaled(value.x()), scaled(value.y()) }; +} + QMargins Preview::scaled(QMargins value) const { return { scaled(value.left()), @@ -328,7 +333,11 @@ style::TextStyle Preview::scaled( .font = scaled(value.font, fontSize), .linkUnderline = value.linkUnderline, .blockPadding = scaled(value.blockPadding), + .blockVerticalSkip = scaled(value.blockVerticalSkip), + .blockHeader = scaled(value.blockHeader), + .blockHeaderPosition = scaled(value.blockHeaderPosition), .blockOutline = scaled(value.blockOutline), + .blockRadius = scaled(value.blockRadius), .preScrollable = value.preScrollable, .lineHeight = scaled(value.lineHeight), }; diff --git a/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp b/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp index b70064425..c76ed355a 100644 --- a/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp +++ b/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "styles/style_statistics.h" #include +#include namespace Statistic { namespace { diff --git a/Telegram/SourceFiles/stdafx.h b/Telegram/SourceFiles/stdafx.h index 153aa953f..6b1e4c1f6 100644 --- a/Telegram/SourceFiles/stdafx.h +++ b/Telegram/SourceFiles/stdafx.h @@ -109,29 +109,30 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include #include -#include "base/variant.h" -#include "base/optional.h" #include "base/algorithm.h" -#include "base/invoke_queued.h" +#include "base/basic_types.h" #include "base/flat_set.h" #include "base/flat_map.h" +#include "base/invoke_queued.h" +#include "base/optional.h" +#include "base/variant.h" #include "base/weak_ptr.h" -#include "base/basic_types.h" -#include "logs.h" -#include "core/utils.h" -#include "config.h" - #include "scheme.h" #include "mtproto/type_utils.h" +#include "ui/image/image_location.h" #include "ui/style/style_core.h" +#include "ui/text/text.h" +#include "ui/arc_angles.h" +#include "ui/emoji_config.h" + #include "styles/palette.h" #include "styles/style_basic.h" -#include "ui/arc_angles.h" -#include "ui/image/image_location.h" -#include "ui/text/text.h" +#include "core/utils.h" +#include "logs.h" +#include "config.h" #include "data/data_types.h" diff --git a/Telegram/SourceFiles/storage/storage_account.cpp b/Telegram/SourceFiles/storage/storage_account.cpp index 60fb45382..348a11591 100644 --- a/Telegram/SourceFiles/storage/storage_account.cpp +++ b/Telegram/SourceFiles/storage/storage_account.cpp @@ -1272,7 +1272,7 @@ void Account::readDraftCursors(PeerId peerId, Data::HistoryDrafts &map) { : keysOld ? Data::DraftKey::FromSerializedOld(keyValueOld) : Data::DraftKey::Local(0); - qint32 position = 0, anchor = 0, scroll = QFIXED_MAX; + qint32 position = 0, anchor = 0, scroll = Ui::kQFixedMax; draft.stream >> position >> anchor >> scroll; if (const auto i = map.find(key); i != end(map)) { i->second->cursor = MessageCursor(position, anchor, scroll); @@ -1285,8 +1285,8 @@ void Account::readDraftCursorsLegacy( details::FileReadDescriptor &draft, quint64 draftPeerSerialized, Data::HistoryDrafts &map) { - qint32 localPosition = 0, localAnchor = 0, localScroll = QFIXED_MAX; - qint32 editPosition = 0, editAnchor = 0, editScroll = QFIXED_MAX; + qint32 localPosition = 0, localAnchor = 0, localScroll = Ui::kQFixedMax; + qint32 editPosition = 0, editAnchor = 0, editScroll = Ui::kQFixedMax; draft.stream >> localPosition >> localAnchor >> localScroll; if (!draft.stream.atEnd()) { draft.stream >> editPosition >> editAnchor >> editScroll; diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.h b/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.h index 3bacc6e6d..901815136 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.h +++ b/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.h @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/attach/attach_abstract_single_preview.h" #include "ui/chat/attach/attach_controls.h" #include "ui/chat/attach/attach_send_files_way.h" +#include "ui/effects/spoiler_mess.h" #include "ui/abstract_button.h" namespace style { diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_album_preview.cpp b/Telegram/SourceFiles/ui/chat/attach/attach_album_preview.cpp index 34a76e274..9b842aae5 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_album_preview.cpp +++ b/Telegram/SourceFiles/ui/chat/attach/attach_album_preview.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/attach/attach_album_thumbnail.h" #include "ui/chat/attach/attach_prepare.h" +#include "ui/effects/spoiler_mess.h" #include "ui/widgets/popup_menu.h" #include "ui/painter.h" #include "lang/lang_keys.h" diff --git a/Telegram/SourceFiles/ui/chat/chat.style b/Telegram/SourceFiles/ui/chat/chat.style index 4dd421fea..4e7fab143 100644 --- a/Telegram/SourceFiles/ui/chat/chat.style +++ b/Telegram/SourceFiles/ui/chat/chat.style @@ -40,7 +40,15 @@ msgDateDelta: point(2px, 5px); msgDateImgDelta: 4px; msgDateImgPadding: point(8px, 2px); -messageTextStyle: defaultTextStyle; +messageTextStyle: TextStyle(defaultTextStyle) { + blockPadding: margins(10px, 4px, 6px, 4px); + blockVerticalSkip: 4px; + blockHeader: 20px; + blockHeaderPosition: point(10px, 2px); + blockOutline: 3px; + blockRadius: 5px; + preScrollable: true; +} msgDateTextStyle: defaultTextStyle; serviceTextPalette: TextPalette(defaultTextPalette) { linkFg: msgServiceFg; diff --git a/Telegram/SourceFiles/ui/chat/chat_style.cpp b/Telegram/SourceFiles/ui/chat/chat_style.cpp index d188992ce..df19dbb45 100644 --- a/Telegram/SourceFiles/ui/chat/chat_style.cpp +++ b/Telegram/SourceFiles/ui/chat/chat_style.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_theme.h" #include "ui/image/image_prepare.h" // ImageRoundRadius +#include "ui/color_contrast.h" #include "ui/painter.h" #include "ui/ui_utility.h" #include "styles/style_chat.h" @@ -28,6 +29,39 @@ void EnsureCorners( } } +void EnsureBlockquoteCache( + std::unique_ptr &cache, + const style::color &color) { + if (cache) { + return; + } + cache = std::make_unique(); + cache->bg = color->c; + cache->bg.setAlphaF(0.12); + cache->outline = color->c; + cache->outline.setAlphaF(0.9); +} + +void EnsurePreCache( + std::unique_ptr &cache, + const style::color &color, + Fn()> bgOverride) { + if (cache) { + return; + } + cache = std::make_unique(); + const auto bg = bgOverride(); + cache->bg = bg.value_or(color->c); + if (!bg) { + cache->bg.setAlphaF(0.12); + } + cache->outline = color->c; + cache->outline.setAlphaF(0.9); + cache->withHeader = true; + cache->header = color->c; + cache->header.setAlphaF(0.25); +} + } // namespace not_null ChatPaintContext::messageStyle() const { @@ -487,6 +521,8 @@ void ChatStyle::assignPalette(not_null palette) { for (auto &style : _messageStyles) { style.msgBgCornersSmall = {}; style.msgBgCornersLarge = {}; + style.blockquoteBlockCache = nullptr; + style.preBlockCache = nullptr; } for (auto &style : _imageStyles) { style.msgDateImgBgCorners = {}; @@ -541,6 +577,23 @@ const MessageStyle &ChatStyle::messageStyle(bool outbg, bool selected) const { BubbleRadiusLarge(), result.msgBg, &result.msgShadow); + EnsureBlockquoteCache( + result.blockquoteBlockCache, + result.msgReplyBarColor); + + const auto preBgOverride = [&] { + const auto withBg = [&](const QColor &color) { + return Ui::CountContrast(windowBg()->c, color); + }; + const auto dark = (withBg({ 0, 0, 0 }) < withBg({ 255, 255, 255 })); + return dark ? QColor(0, 0, 0, 192) : std::optional(); + }; + EnsurePreCache( + result.preBlockCache, + (selected + ? result.textPalette.selectMonoFg + : result.textPalette.monoFg), + preBgOverride); return result; } diff --git a/Telegram/SourceFiles/ui/chat/chat_style.h b/Telegram/SourceFiles/ui/chat/chat_style.h index cefe34a19..3d20e7961 100644 --- a/Telegram/SourceFiles/ui/chat/chat_style.h +++ b/Telegram/SourceFiles/ui/chat/chat_style.h @@ -76,6 +76,8 @@ struct MessageStyle { style::icon historyPollChoiceRight = { Qt::Uninitialized }; style::icon historyTranscribeIcon = { Qt::Uninitialized }; style::icon historyTranscribeHide = { Qt::Uninitialized }; + std::unique_ptr blockquoteBlockCache; + std::unique_ptr preBlockCache; }; diff --git a/Telegram/SourceFiles/ui/chat/group_call_bar.cpp b/Telegram/SourceFiles/ui/chat/group_call_bar.cpp index f4da62406..4b0ffb092 100644 --- a/Telegram/SourceFiles/ui/chat/group_call_bar.cpp +++ b/Telegram/SourceFiles/ui/chat/group_call_bar.cpp @@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "styles/palette.h" #include +#include namespace Ui { diff --git a/Telegram/SourceFiles/ui/chat/message_bar.cpp b/Telegram/SourceFiles/ui/chat/message_bar.cpp index cde160d54..9050e59a7 100644 --- a/Telegram/SourceFiles/ui/chat/message_bar.cpp +++ b/Telegram/SourceFiles/ui/chat/message_bar.cpp @@ -7,8 +7,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "ui/chat/message_bar.h" -#include "ui/text/text_options.h" +#include "ui/effects/spoiler_mess.h" #include "ui/image/image_prepare.h" +#include "ui/text/text_options.h" #include "ui/painter.h" #include "ui/power_saving.h" #include "styles/style_chat.h" diff --git a/Telegram/SourceFiles/ui/chat/pinned_bar.cpp b/Telegram/SourceFiles/ui/chat/pinned_bar.cpp index dcd4133c0..eb2cf01d1 100644 --- a/Telegram/SourceFiles/ui/chat/pinned_bar.cpp +++ b/Telegram/SourceFiles/ui/chat/pinned_bar.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/pinned_bar.h" #include "ui/chat/message_bar.h" +#include "ui/effects/spoiler_mess.h" #include "ui/widgets/shadow.h" #include "ui/widgets/buttons.h" #include "ui/wrap/fade_wrap.h" diff --git a/Telegram/SourceFiles/ui/unread_badge.cpp b/Telegram/SourceFiles/ui/unread_badge.cpp index 8d1c09e74..62e03a5b2 100644 --- a/Telegram/SourceFiles/ui/unread_badge.cpp +++ b/Telegram/SourceFiles/ui/unread_badge.cpp @@ -25,6 +25,12 @@ constexpr auto kPlayStatusLimit = 2; } // namespace +struct PeerBadge::EmojiStatus { + DocumentId id = 0; + std::unique_ptr emoji; + int skip = 0; +}; + void UnreadBadge::setText(const QString &text, bool active) { _text = text; _active = active; diff --git a/Telegram/SourceFiles/ui/unread_badge.h b/Telegram/SourceFiles/ui/unread_badge.h index c644ae6d5..4172330ef 100644 --- a/Telegram/SourceFiles/ui/unread_badge.h +++ b/Telegram/SourceFiles/ui/unread_badge.h @@ -55,11 +55,7 @@ public: void unload(); private: - struct EmojiStatus { - DocumentId id = 0; - std::unique_ptr emoji; - int skip = 0; - }; + struct EmojiStatus; std::unique_ptr _emojiStatus; }; diff --git a/Telegram/SourceFiles/window/notifications_manager.cpp b/Telegram/SourceFiles/window/notifications_manager.cpp index d58ca6075..d00a49e71 100644 --- a/Telegram/SourceFiles/window/notifications_manager.cpp +++ b/Telegram/SourceFiles/window/notifications_manager.cpp @@ -1069,7 +1069,7 @@ void Manager::notificationActivated( MessageCursor{ int(reply.text.size()), int(reply.text.size()), - QFIXED_MAX, + Ui::kQFixedMax, }, Data::PreviewState::Allowed); history->setLocalDraft(std::move(draft)); diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index 6f1526f4b..7d223ee01 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -1519,7 +1519,11 @@ bool SessionController::switchInlineQuery( '@' + bot->username() + ' ' + query, TextWithTags::Tags(), }; - MessageCursor cursor = { int(textWithTags.text.size()), int(textWithTags.text.size()), QFIXED_MAX }; + MessageCursor cursor = { + int(textWithTags.text.size()), + int(textWithTags.text.size()), + Ui::kQFixedMax + }; auto draft = std::make_unique( textWithTags, to.currentReplyToId, diff --git a/Telegram/lib_ui b/Telegram/lib_ui index 44f8d862f..a38b60636 160000 --- a/Telegram/lib_ui +++ b/Telegram/lib_ui @@ -1 +1 @@ -Subproject commit 44f8d862ff03390217841fb282cb8dd55e0d5d7d +Subproject commit a38b60636a42932b5e4d3d2391769a34876a2626