From dd6cbd2c36bea80216100f128ba54da4bd314a10 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sat, 17 Feb 2024 20:31:52 +0300 Subject: [PATCH] Fixed edit of long text message without media. --- .../SourceFiles/history/history_widget.cpp | 23 +++++++++++-------- .../history_view_compose_controls.cpp | 13 ++++++----- .../view/history_view_replies_section.cpp | 12 ++++++---- .../view/history_view_scheduled_section.cpp | 12 ++++++---- 4 files changed, 35 insertions(+), 25 deletions(-) diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 85c44941f..687fdabef 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -3875,13 +3875,17 @@ void HistoryWidget::saveEditMsg() { const auto media = item->media(); const auto originalLeftSize = left.text.size(); - const auto maxCaptionSize = Data::PremiumLimits( - &session()).captionLengthCurrent(); + const auto hasMediaWithCaption = item + && item->media() + && item->media()->allowsEditCaption(); + const auto maxCaptionSize = !hasMediaWithCaption + ? MaxMessageSize + : Data::PremiumLimits(&session()).captionLengthCurrent(); if (!TextUtilities::CutPart(sending, left, maxCaptionSize) && (webPageDraft.removed || webPageDraft.url.isEmpty() || !webPageDraft.manual) - && (!media || !media->allowsEditCaption())) { + && !hasMediaWithCaption) { const auto suggestModerateActions = false; controller()->show( Box(item, suggestModerateActions)); @@ -7309,9 +7313,12 @@ void HistoryWidget::showPremiumToast(not_null document) { void HistoryWidget::checkCharsLimitation() { if (!_history || !_editMsgId) { - if (_charsLimitation) { - _charsLimitation = nullptr; - } + _charsLimitation = nullptr; + return; + } + const auto item = session().data().message(_history->peer, _editMsgId); + if (!item || !item->media() || !item->media()->allowsEditCaption()) { + _charsLimitation = nullptr; return; } const auto limits = Data::PremiumLimits(&session()); @@ -7332,9 +7339,7 @@ void HistoryWidget::checkCharsLimitation() { } _charsLimitation->setLeft(remove); } else { - if (_charsLimitation) { - _charsLimitation = nullptr; - } + _charsLimitation = nullptr; } } 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 c6260f184..c8d47451c 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp @@ -3315,9 +3315,12 @@ TextWithEntities ComposeControls::prepareTextForEditMsg() const { void ComposeControls::checkCharsLimitation() { if (!_history || !isEditingMessage()) { - if (_charsLimitation) { - _charsLimitation = nullptr; - } + _charsLimitation = nullptr; + return; + } + const auto item = _history->owner().message(_header->editMsgId()); + if (!item || !item->media() || !item->media()->allowsEditCaption()) { + _charsLimitation = nullptr; return; } const auto limits = Data::PremiumLimits(&session()); @@ -3339,9 +3342,7 @@ void ComposeControls::checkCharsLimitation() { } _charsLimitation->setLeft(remove); } else { - if (_charsLimitation) { - _charsLimitation = nullptr; - } + _charsLimitation = nullptr; } } diff --git a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp index 92aef0048..8ad662925 100644 --- a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp +++ b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp @@ -1174,12 +1174,14 @@ void RepliesWidget::edit( auto left = _composeControls->prepareTextForEditMsg(); const auto originalLeftSize = left.text.size(); - const auto maxCaptionSize = Data::PremiumLimits( - &session()).captionLengthCurrent(); + const auto hasMediaWithCaption = item + && item->media() + && item->media()->allowsEditCaption(); + const auto maxCaptionSize = !hasMediaWithCaption + ? MaxMessageSize + : Data::PremiumLimits(&session()).captionLengthCurrent(); if (!TextUtilities::CutPart(sending, left, maxCaptionSize) - && (!item - || !item->media() - || !item->media()->allowsEditCaption())) { + && !hasMediaWithCaption) { if (item) { controller()->show(Box(item, false)); } else { diff --git a/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp b/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp index 4ceb2b3f4..6e019e6eb 100644 --- a/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp +++ b/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp @@ -638,12 +638,14 @@ void ScheduledWidget::edit( auto left = _composeControls->prepareTextForEditMsg(); const auto originalLeftSize = left.text.size(); - const auto maxCaptionSize = Data::PremiumLimits( - &session()).captionLengthCurrent(); + const auto hasMediaWithCaption = item + && item->media() + && item->media()->allowsEditCaption(); + const auto maxCaptionSize = !hasMediaWithCaption + ? MaxMessageSize + : Data::PremiumLimits(&session()).captionLengthCurrent(); if (!TextUtilities::CutPart(sending, left, maxCaptionSize) - && (!item - || !item->media() - || !item->media()->allowsEditCaption())) { + && !hasMediaWithCaption) { if (item) { controller()->show(Box(item, false)); } else {