diff --git a/Telegram/SourceFiles/boxes/create_poll_box.cpp b/Telegram/SourceFiles/boxes/create_poll_box.cpp index 4d8ba97a2..eaa36ea4b 100644 --- a/Telegram/SourceFiles/boxes/create_poll_box.cpp +++ b/Telegram/SourceFiles/boxes/create_poll_box.cpp @@ -851,7 +851,10 @@ not_null CreatePollBox::setupSolution( Core::App().settings().replaceEmojiValue()); solution->setMarkdownReplacesEnabled(rpl::single(true)); solution->setEditLinkCallback( - DefaultEditLinkCallback(_controller, solution)); + DefaultEditLinkCallback( + std::make_shared(_controller), + session, + solution)); solution->customTab(true); const auto warning = CreateWarningLabel( diff --git a/Telegram/SourceFiles/boxes/edit_caption_box.cpp b/Telegram/SourceFiles/boxes/edit_caption_box.cpp index 0d7319339..9982913ec 100644 --- a/Telegram/SourceFiles/boxes/edit_caption_box.cpp +++ b/Telegram/SourceFiles/boxes/edit_caption_box.cpp @@ -238,6 +238,8 @@ void EditCaptionBox::rebuildPreview() { } void EditCaptionBox::setupField() { + const auto show = std::make_shared(_controller); + const auto session = &_controller->session(); _field->setMaxLength( _controller->session().serverConfig().captionLengthMax); _field->setSubmitSettings( @@ -247,10 +249,10 @@ void EditCaptionBox::setupField() { Core::App().settings().replaceEmojiValue()); _field->setMarkdownReplacesEnabled(rpl::single(true)); _field->setEditLinkCallback( - DefaultEditLinkCallback(_controller, _field)); + DefaultEditLinkCallback(show, session, _field)); _field->setMaxHeight(st::confirmCaptionArea.heightMax); - InitSpellchecker(_controller, _field); + InitSpellchecker(show, session, _field); connect(_field, &Ui::InputField::submitted, [=] { save(); }); connect(_field, &Ui::InputField::cancelled, [=] { closeBox(); }); diff --git a/Telegram/SourceFiles/boxes/send_files_box.cpp b/Telegram/SourceFiles/boxes/send_files_box.cpp index dd90bcfb2..c02e996a7 100644 --- a/Telegram/SourceFiles/boxes/send_files_box.cpp +++ b/Telegram/SourceFiles/boxes/send_files_box.cpp @@ -706,18 +706,21 @@ void SendFilesBox::setupCaption() { } Unexpected("action in MimeData hook."); }); + const auto show = std::make_shared(_controller); + const auto session = &_controller->session(); + _caption->setInstantReplaces(Ui::InstantReplaces::Default()); _caption->setInstantReplacesEnabled( Core::App().settings().replaceEmojiValue()); _caption->setMarkdownReplacesEnabled(rpl::single(true)); _caption->setEditLinkCallback( - DefaultEditLinkCallback(_controller, _caption)); + DefaultEditLinkCallback(show, session, _caption)); Ui::Emoji::SuggestionsController::Init( getDelegate()->outerContainer(), _caption, - &_controller->session()); + session); - InitSpellchecker(_controller, _caption); + InitSpellchecker(show, session, _caption); updateCaptionPlaceholder(); setupEmojiPanel(); diff --git a/Telegram/SourceFiles/boxes/share_box.cpp b/Telegram/SourceFiles/boxes/share_box.cpp index 984a8316d..2566edd14 100644 --- a/Telegram/SourceFiles/boxes/share_box.cpp +++ b/Telegram/SourceFiles/boxes/share_box.cpp @@ -258,7 +258,8 @@ void ShareBox::prepareCommentField() { } else if (_descriptor.navigation) { field->setEditLinkCallback( DefaultEditLinkCallback( - _descriptor.navigation->parentController(), + std::make_shared(_descriptor.navigation), + _descriptor.session, field)); } field->setSubmitSettings(Core::App().settings().sendSubmitWay()); diff --git a/Telegram/SourceFiles/chat_helpers/message_field.cpp b/Telegram/SourceFiles/chat_helpers/message_field.cpp index 955df52ef..248ad0ad6 100644 --- a/Telegram/SourceFiles/chat_helpers/message_field.cpp +++ b/Telegram/SourceFiles/chat_helpers/message_field.cpp @@ -241,7 +241,8 @@ Fn DefaultEditLinkCallback( - not_null controller, + std::shared_ptr show, + not_null session, not_null field) { const auto weak = Ui::MakeWeak(field); return [=]( @@ -258,14 +259,8 @@ FncommitMarkdownLinkEdit(selection, text, link); } }; - controller->show( - Box( - EditLinkBox, - std::make_shared(controller), - &controller->session(), - text, - link, - std::move(callback)), + show->showBox( + Box(EditLinkBox, show, session, text, link, std::move(callback)), Ui::LayerOption::KeepOther); return true; }; @@ -288,7 +283,11 @@ void InitMessageField( field->setInstantReplacesEnabled( Core::App().settings().replaceEmojiValue()); field->setMarkdownReplacesEnabled(rpl::single(true)); - field->setEditLinkCallback(DefaultEditLinkCallback(controller, field)); + field->setEditLinkCallback( + DefaultEditLinkCallback( + std::make_shared(controller), + &controller->session(), + field)); } void InitSpellchecker( diff --git a/Telegram/SourceFiles/chat_helpers/message_field.h b/Telegram/SourceFiles/chat_helpers/message_field.h index da0db79fb..f3f401229 100644 --- a/Telegram/SourceFiles/chat_helpers/message_field.h +++ b/Telegram/SourceFiles/chat_helpers/message_field.h @@ -39,7 +39,8 @@ Fn DefaultEditLinkCallback( - not_null controller, + std::shared_ptr show, + not_null session, not_null field); void InitMessageField( not_null controller, diff --git a/Telegram/SourceFiles/support/support_helper.cpp b/Telegram/SourceFiles/support/support_helper.cpp index ca112783e..42c84115e 100644 --- a/Telegram/SourceFiles/support/support_helper.cpp +++ b/Telegram/SourceFiles/support/support_helper.cpp @@ -87,7 +87,11 @@ EditInfoBox::EditInfoBox( _field->setInstantReplacesEnabled( Core::App().settings().replaceEmojiValue()); _field->setMarkdownReplacesEnabled(rpl::single(true)); - _field->setEditLinkCallback(DefaultEditLinkCallback(controller, _field)); + _field->setEditLinkCallback( + DefaultEditLinkCallback( + std::make_shared(controller), + &controller->session(), + _field)); } void EditInfoBox::prepare() {