Fix media spoiler/caption-above edit in topics/scheduled.

This commit is contained in:
John Preston 2024-06-01 21:17:09 +04:00
parent 36766e7546
commit c1b95afd88
2 changed files with 39 additions and 2 deletions

View file

@ -139,6 +139,8 @@ public:
void previewReady(rpl::producer<Controls::WebpageParsed> parsed); void previewReady(rpl::producer<Controls::WebpageParsed> parsed);
void previewUnregister(); void previewUnregister();
void mediaEditManagerApply(SendMenu::Action action);
[[nodiscard]] bool isDisplayed() const; [[nodiscard]] bool isDisplayed() const;
[[nodiscard]] bool isEditingMessage() const; [[nodiscard]] bool isEditingMessage() const;
[[nodiscard]] bool readyToForward() const; [[nodiscard]] bool readyToForward() const;
@ -150,6 +152,7 @@ public:
[[nodiscard]] rpl::producer<> editPhotoRequests() const; [[nodiscard]] rpl::producer<> editPhotoRequests() const;
[[nodiscard]] rpl::producer<> editOptionsRequests() const; [[nodiscard]] rpl::producer<> editOptionsRequests() const;
[[nodiscard]] MessageToEdit queryToEdit(); [[nodiscard]] MessageToEdit queryToEdit();
[[nodiscard]] SendMenu::Details saveMenuDetails(bool hasSendText) const;
[[nodiscard]] FullReplyTo getDraftReply() const; [[nodiscard]] FullReplyTo getDraftReply() const;
[[nodiscard]] rpl::producer<> editCancelled() const { [[nodiscard]] rpl::producer<> editCancelled() const {
@ -529,6 +532,10 @@ void FieldHeader::previewUnregister() {
_previewLifetime.destroy(); _previewLifetime.destroy();
} }
void FieldHeader::mediaEditManagerApply(SendMenu::Action action) {
_mediaEditManager.apply(action);
}
void FieldHeader::paintWebPage(Painter &p, not_null<PeerData*> context) { void FieldHeader::paintWebPage(Painter &p, not_null<PeerData*> context) {
Expects(!!_preview.parsed); Expects(!!_preview.parsed);
@ -736,8 +743,12 @@ void FieldHeader::updateControlsGeometry(QSize size) {
void FieldHeader::editMessage(FullMsgId id, bool photoEditAllowed) { void FieldHeader::editMessage(FullMsgId id, bool photoEditAllowed) {
_photoEditAllowed = photoEditAllowed; _photoEditAllowed = photoEditAllowed;
_editMsgId = id; _editMsgId = id;
if (!photoEditAllowed) { if (!id) {
_mediaEditManager.cancel(); _mediaEditManager.cancel();
} else if (const auto item = _show->session().data().message(id)) {
_mediaEditManager.start(item);
}
if (!photoEditAllowed) {
_inPhotoEdit = false; _inPhotoEdit = false;
_inPhotoEditOver.stop(); _inPhotoEditOver.stop();
} }
@ -790,6 +801,12 @@ MessageToEdit FieldHeader::queryToEdit() {
}; };
} }
SendMenu::Details FieldHeader::saveMenuDetails(bool hasSendText) const {
return isEditingMessage()
? _mediaEditManager.sendMenuDetails(hasSendText)
: SendMenu::Details();
}
ComposeControls::ComposeControls( ComposeControls::ComposeControls(
not_null<Ui::RpWidget*> parent, not_null<Ui::RpWidget*> parent,
ComposeControlsDescriptor descriptor) ComposeControlsDescriptor descriptor)
@ -2208,6 +2225,19 @@ void ComposeControls::initSendButton() {
_sendCustomRequests.fire(std::move(options)); _sendCustomRequests.fire(std::move(options));
}); });
using namespace SendMenu;
const auto sendAction = [=](Action action, Details details) {
if (action.type == ActionType::CaptionUp
|| action.type == ActionType::CaptionDown
|| action.type == ActionType::SpoilerOn
|| action.type == ActionType::SpoilerOff) {
_header->mediaEditManagerApply(action);
} else {
SendMenu::DefaultCallback(_show, send)(action, details);
}
};
SendMenu::SetupMenuAndShortcuts( SendMenu::SetupMenuAndShortcuts(
_send.get(), _send.get(),
_show, _show,
@ -2529,8 +2559,14 @@ SendMenu::Details ComposeControls::sendMenuDetails() const {
return !_history ? SendMenu::Details() : _sendMenuDetails(); return !_history ? SendMenu::Details() : _sendMenuDetails();
} }
SendMenu::Details ComposeControls::saveMenuDetails() const {
return _header->saveMenuDetails(HasSendText(_field));
}
SendMenu::Details ComposeControls::sendButtonMenuDetails() const { SendMenu::Details ComposeControls::sendButtonMenuDetails() const {
return (computeSendButtonType() == Ui::SendButton::Type::Send) return (computeSendButtonType() == Ui::SendButton::Type::Save)
? saveMenuDetails()
: (computeSendButtonType() == Ui::SendButton::Type::Send)
? sendMenuDetails() ? sendMenuDetails()
: SendMenu::Details(); : SendMenu::Details();
} }

View file

@ -283,6 +283,7 @@ private:
[[nodiscard]] auto computeSendButtonType() const; [[nodiscard]] auto computeSendButtonType() const;
[[nodiscard]] SendMenu::Details sendMenuDetails() const; [[nodiscard]] SendMenu::Details sendMenuDetails() const;
[[nodiscard]] SendMenu::Details saveMenuDetails() const;
[[nodiscard]] SendMenu::Details sendButtonMenuDetails() const; [[nodiscard]] SendMenu::Details sendButtonMenuDetails() const;
[[nodiscard]] auto sendContentRequests( [[nodiscard]] auto sendContentRequests(