Added ability to use EditLinkBox without SessionController.

This commit is contained in:
23rd 2022-03-03 19:44:42 +03:00
parent 87bdfaf731
commit cf55f1a7cd
7 changed files with 32 additions and 19 deletions

View file

@ -851,7 +851,10 @@ not_null<Ui::InputField*> CreatePollBox::setupSolution(
Core::App().settings().replaceEmojiValue()); Core::App().settings().replaceEmojiValue());
solution->setMarkdownReplacesEnabled(rpl::single(true)); solution->setMarkdownReplacesEnabled(rpl::single(true));
solution->setEditLinkCallback( solution->setEditLinkCallback(
DefaultEditLinkCallback(_controller, solution)); DefaultEditLinkCallback(
std::make_shared<Window::Show>(_controller),
session,
solution));
solution->customTab(true); solution->customTab(true);
const auto warning = CreateWarningLabel( const auto warning = CreateWarningLabel(

View file

@ -238,6 +238,8 @@ void EditCaptionBox::rebuildPreview() {
} }
void EditCaptionBox::setupField() { void EditCaptionBox::setupField() {
const auto show = std::make_shared<Window::Show>(_controller);
const auto session = &_controller->session();
_field->setMaxLength( _field->setMaxLength(
_controller->session().serverConfig().captionLengthMax); _controller->session().serverConfig().captionLengthMax);
_field->setSubmitSettings( _field->setSubmitSettings(
@ -247,10 +249,10 @@ void EditCaptionBox::setupField() {
Core::App().settings().replaceEmojiValue()); Core::App().settings().replaceEmojiValue());
_field->setMarkdownReplacesEnabled(rpl::single(true)); _field->setMarkdownReplacesEnabled(rpl::single(true));
_field->setEditLinkCallback( _field->setEditLinkCallback(
DefaultEditLinkCallback(_controller, _field)); DefaultEditLinkCallback(show, session, _field));
_field->setMaxHeight(st::confirmCaptionArea.heightMax); _field->setMaxHeight(st::confirmCaptionArea.heightMax);
InitSpellchecker(_controller, _field); InitSpellchecker(show, session, _field);
connect(_field, &Ui::InputField::submitted, [=] { save(); }); connect(_field, &Ui::InputField::submitted, [=] { save(); });
connect(_field, &Ui::InputField::cancelled, [=] { closeBox(); }); connect(_field, &Ui::InputField::cancelled, [=] { closeBox(); });

View file

@ -706,18 +706,21 @@ void SendFilesBox::setupCaption() {
} }
Unexpected("action in MimeData hook."); Unexpected("action in MimeData hook.");
}); });
const auto show = std::make_shared<Window::Show>(_controller);
const auto session = &_controller->session();
_caption->setInstantReplaces(Ui::InstantReplaces::Default()); _caption->setInstantReplaces(Ui::InstantReplaces::Default());
_caption->setInstantReplacesEnabled( _caption->setInstantReplacesEnabled(
Core::App().settings().replaceEmojiValue()); Core::App().settings().replaceEmojiValue());
_caption->setMarkdownReplacesEnabled(rpl::single(true)); _caption->setMarkdownReplacesEnabled(rpl::single(true));
_caption->setEditLinkCallback( _caption->setEditLinkCallback(
DefaultEditLinkCallback(_controller, _caption)); DefaultEditLinkCallback(show, session, _caption));
Ui::Emoji::SuggestionsController::Init( Ui::Emoji::SuggestionsController::Init(
getDelegate()->outerContainer(), getDelegate()->outerContainer(),
_caption, _caption,
&_controller->session()); session);
InitSpellchecker(_controller, _caption); InitSpellchecker(show, session, _caption);
updateCaptionPlaceholder(); updateCaptionPlaceholder();
setupEmojiPanel(); setupEmojiPanel();

View file

@ -258,7 +258,8 @@ void ShareBox::prepareCommentField() {
} else if (_descriptor.navigation) { } else if (_descriptor.navigation) {
field->setEditLinkCallback( field->setEditLinkCallback(
DefaultEditLinkCallback( DefaultEditLinkCallback(
_descriptor.navigation->parentController(), std::make_shared<Window::Show>(_descriptor.navigation),
_descriptor.session,
field)); field));
} }
field->setSubmitSettings(Core::App().settings().sendSubmitWay()); field->setSubmitSettings(Core::App().settings().sendSubmitWay());

View file

@ -241,7 +241,8 @@ Fn<bool(
QString text, QString text,
QString link, QString link,
EditLinkAction action)> DefaultEditLinkCallback( EditLinkAction action)> DefaultEditLinkCallback(
not_null<Window::SessionController*> controller, std::shared_ptr<Ui::Show> show,
not_null<Main::Session*> session,
not_null<Ui::InputField*> field) { not_null<Ui::InputField*> field) {
const auto weak = Ui::MakeWeak(field); const auto weak = Ui::MakeWeak(field);
return [=]( return [=](
@ -258,14 +259,8 @@ Fn<bool(
strong->commitMarkdownLinkEdit(selection, text, link); strong->commitMarkdownLinkEdit(selection, text, link);
} }
}; };
controller->show( show->showBox(
Box( Box(EditLinkBox, show, session, text, link, std::move(callback)),
EditLinkBox,
std::make_shared<Window::Show>(controller),
&controller->session(),
text,
link,
std::move(callback)),
Ui::LayerOption::KeepOther); Ui::LayerOption::KeepOther);
return true; return true;
}; };
@ -288,7 +283,11 @@ void InitMessageField(
field->setInstantReplacesEnabled( field->setInstantReplacesEnabled(
Core::App().settings().replaceEmojiValue()); Core::App().settings().replaceEmojiValue());
field->setMarkdownReplacesEnabled(rpl::single(true)); field->setMarkdownReplacesEnabled(rpl::single(true));
field->setEditLinkCallback(DefaultEditLinkCallback(controller, field)); field->setEditLinkCallback(
DefaultEditLinkCallback(
std::make_shared<Window::Show>(controller),
&controller->session(),
field));
} }
void InitSpellchecker( void InitSpellchecker(

View file

@ -39,7 +39,8 @@ Fn<bool(
QString text, QString text,
QString link, QString link,
Ui::InputField::EditLinkAction action)> DefaultEditLinkCallback( Ui::InputField::EditLinkAction action)> DefaultEditLinkCallback(
not_null<Window::SessionController*> controller, std::shared_ptr<Ui::Show> show,
not_null<Main::Session*> session,
not_null<Ui::InputField*> field); not_null<Ui::InputField*> field);
void InitMessageField( void InitMessageField(
not_null<Window::SessionController*> controller, not_null<Window::SessionController*> controller,

View file

@ -87,7 +87,11 @@ EditInfoBox::EditInfoBox(
_field->setInstantReplacesEnabled( _field->setInstantReplacesEnabled(
Core::App().settings().replaceEmojiValue()); Core::App().settings().replaceEmojiValue());
_field->setMarkdownReplacesEnabled(rpl::single(true)); _field->setMarkdownReplacesEnabled(rpl::single(true));
_field->setEditLinkCallback(DefaultEditLinkCallback(controller, _field)); _field->setEditLinkCallback(
DefaultEditLinkCallback(
std::make_shared<Window::Show>(controller),
&controller->session(),
_field));
} }
void EditInfoBox::prepare() { void EditInfoBox::prepare() {