mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Fixed display of most of simple toasts in corresponding window.
This commit is contained in:
parent
29910cd1f7
commit
629574685e
27 changed files with 179 additions and 79 deletions
|
@ -1056,7 +1056,9 @@ void SetupChannelBox::mousePressEvent(QMouseEvent *e) {
|
||||||
return;
|
return;
|
||||||
} else if (!_channel->inviteLink().isEmpty()) {
|
} else if (!_channel->inviteLink().isEmpty()) {
|
||||||
QGuiApplication::clipboard()->setText(_channel->inviteLink());
|
QGuiApplication::clipboard()->setText(_channel->inviteLink());
|
||||||
Ui::Toast::Show(tr::lng_create_channel_link_copied(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Ui::BoxShow(this).toastParent(),
|
||||||
|
tr::lng_create_channel_link_copied(tr::now));
|
||||||
} else if (_channel->isFullLoaded() && !_creatingInviteLink) {
|
} else if (_channel->isFullLoaded() && !_creatingInviteLink) {
|
||||||
_creatingInviteLink = true;
|
_creatingInviteLink = true;
|
||||||
_channel->session().api().inviteLinks().create(_channel);
|
_channel->session().api().inviteLinks().create(_channel);
|
||||||
|
|
|
@ -258,7 +258,9 @@ void BackgroundPreviewBox::apply() {
|
||||||
void BackgroundPreviewBox::share() {
|
void BackgroundPreviewBox::share() {
|
||||||
QGuiApplication::clipboard()->setText(
|
QGuiApplication::clipboard()->setText(
|
||||||
_paper.shareUrl(&_controller->session()));
|
_paper.shareUrl(&_controller->session()));
|
||||||
Ui::Toast::Show(tr::lng_background_link_copied(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Ui::BoxShow(this).toastParent(),
|
||||||
|
tr::lng_background_link_copied(tr::now));
|
||||||
}
|
}
|
||||||
|
|
||||||
void BackgroundPreviewBox::paintEvent(QPaintEvent *e) {
|
void BackgroundPreviewBox::paintEvent(QPaintEvent *e) {
|
||||||
|
|
|
@ -1264,6 +1264,7 @@ object_ptr<Ui::BoxContent> ProxiesBoxController::CreateOwningBox(
|
||||||
|
|
||||||
object_ptr<Ui::BoxContent> ProxiesBoxController::create() {
|
object_ptr<Ui::BoxContent> ProxiesBoxController::create() {
|
||||||
auto result = Box<ProxiesBox>(this, _settings);
|
auto result = Box<ProxiesBox>(this, _settings);
|
||||||
|
_toastParent = Ui::BoxShow(result.data()).toastParent();
|
||||||
for (const auto &item : _list) {
|
for (const auto &item : _list) {
|
||||||
updateView(item);
|
updateView(item);
|
||||||
}
|
}
|
||||||
|
@ -1549,7 +1550,9 @@ void ProxiesBoxController::share(const ProxyData &proxy) {
|
||||||
+ ((proxy.type == Type::Mtproto && !proxy.password.isEmpty())
|
+ ((proxy.type == Type::Mtproto && !proxy.password.isEmpty())
|
||||||
? "&secret=" + proxy.password : "");
|
? "&secret=" + proxy.password : "");
|
||||||
QGuiApplication::clipboard()->setText(link);
|
QGuiApplication::clipboard()->setText(link);
|
||||||
Ui::Toast::Show(tr::lng_username_copied(tr::now));
|
if (_toastParent) {
|
||||||
|
Ui::Toast::Show(_toastParent, tr::lng_username_copied(tr::now));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ProxiesBoxController::~ProxiesBoxController() {
|
ProxiesBoxController::~ProxiesBoxController() {
|
||||||
|
|
|
@ -117,6 +117,7 @@ private:
|
||||||
rpl::event_stream<ItemView> _views;
|
rpl::event_stream<ItemView> _views;
|
||||||
base::Timer _saveTimer;
|
base::Timer _saveTimer;
|
||||||
rpl::event_stream<ProxyData::Settings> _proxySettingsChanges;
|
rpl::event_stream<ProxyData::Settings> _proxySettingsChanges;
|
||||||
|
QPointer<QWidget> _toastParent;
|
||||||
|
|
||||||
ProxyData _lastSelectedProxy;
|
ProxyData _lastSelectedProxy;
|
||||||
bool _lastSelectedProxyUsed = false;
|
bool _lastSelectedProxyUsed = false;
|
||||||
|
|
|
@ -18,7 +18,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "ui/widgets/labels.h"
|
#include "ui/widgets/labels.h"
|
||||||
#include "ui/widgets/buttons.h"
|
#include "ui/widgets/buttons.h"
|
||||||
#include "ui/widgets/checkbox.h"
|
#include "ui/widgets/checkbox.h"
|
||||||
#include "ui/toast/toast.h"
|
|
||||||
#include "ui/text/text_utilities.h"
|
#include "ui/text/text_utilities.h"
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
#include "core/application.h"
|
#include "core/application.h"
|
||||||
|
@ -776,7 +775,7 @@ void CreatePollBox::setInnerFocus() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreatePollBox::submitFailed(const QString &error) {
|
void CreatePollBox::submitFailed(const QString &error) {
|
||||||
Ui::Toast::Show(error);
|
Ui::Toast::Show(Ui::BoxShow(this).toastParent(), error);
|
||||||
}
|
}
|
||||||
|
|
||||||
not_null<Ui::InputField*> CreatePollBox::setupQuestion(
|
not_null<Ui::InputField*> CreatePollBox::setupQuestion(
|
||||||
|
@ -990,8 +989,11 @@ object_ptr<Ui::RpWidget> CreatePollBox::setupContent() {
|
||||||
multiple->events(
|
multiple->events(
|
||||||
) | rpl::filter([=](not_null<QEvent*> e) {
|
) | rpl::filter([=](not_null<QEvent*> e) {
|
||||||
return (e->type() == QEvent::MouseButtonPress) && quiz->checked();
|
return (e->type() == QEvent::MouseButtonPress) && quiz->checked();
|
||||||
}) | rpl::start_with_next([=] {
|
}) | rpl::start_with_next([
|
||||||
Ui::Toast::Show(tr::lng_polls_create_one_answer(tr::now));
|
toastParent = Ui::BoxShow(this).toastParent()] {
|
||||||
|
Ui::Toast::Show(
|
||||||
|
toastParent,
|
||||||
|
tr::lng_polls_create_one_answer(tr::now));
|
||||||
}, multiple->lifetime());
|
}, multiple->lifetime());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1068,8 +1070,10 @@ object_ptr<Ui::RpWidget> CreatePollBox::setupContent() {
|
||||||
*error &= ~Error::Solution;
|
*error &= ~Error::Solution;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const auto showError = [](tr::phrase<> text) {
|
const auto showError = [
|
||||||
Ui::Toast::Show(text(tr::now));
|
toastParent = Ui::BoxShow(this).toastParent()](
|
||||||
|
tr::phrase<> text) {
|
||||||
|
Ui::Toast::Show(toastParent, text(tr::now));
|
||||||
};
|
};
|
||||||
const auto send = [=](Api::SendOptions sendOptions) {
|
const auto send = [=](Api::SendOptions sendOptions) {
|
||||||
collectError();
|
collectError();
|
||||||
|
|
|
@ -324,9 +324,10 @@ void EditCaptionBox::setupControls() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditCaptionBox::setupEditEventHandler() {
|
void EditCaptionBox::setupEditEventHandler() {
|
||||||
|
const auto toastParent = Ui::BoxShow(this).toastParent();
|
||||||
const auto callback = [=](FileDialog::OpenResult &&result) {
|
const auto callback = [=](FileDialog::OpenResult &&result) {
|
||||||
auto showError = [](tr::phrase<> t) {
|
auto showError = [toastParent](tr::phrase<> t) {
|
||||||
Ui::Toast::Show(t(tr::now));
|
Ui::Toast::Show(toastParent, t(tr::now));
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto checkResult = [=](const Ui::PreparedList &list) {
|
const auto checkResult = [=](const Ui::PreparedList &list) {
|
||||||
|
@ -547,7 +548,9 @@ bool EditCaptionBox::setPreparedList(Ui::PreparedList &&list) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (invalidForAlbum) {
|
if (invalidForAlbum) {
|
||||||
Ui::Toast::Show(tr::lng_edit_media_album_error(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Ui::BoxShow(this).toastParent(),
|
||||||
|
tr::lng_edit_media_album_error(tr::now));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
_preparedList = std::move(list);
|
_preparedList = std::move(list);
|
||||||
|
|
|
@ -90,7 +90,9 @@ void MaxInviteBox::mousePressEvent(QMouseEvent *e) {
|
||||||
if (_linkOver) {
|
if (_linkOver) {
|
||||||
if (!_channel->inviteLink().isEmpty()) {
|
if (!_channel->inviteLink().isEmpty()) {
|
||||||
QGuiApplication::clipboard()->setText(_channel->inviteLink());
|
QGuiApplication::clipboard()->setText(_channel->inviteLink());
|
||||||
Ui::Toast::Show(tr::lng_create_channel_link_copied(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Ui::BoxShow(this).toastParent(),
|
||||||
|
tr::lng_create_channel_link_copied(tr::now));
|
||||||
} else if (_channel->isFullLoaded() && !_creatingInviteLink) {
|
} else if (_channel->isFullLoaded() && !_creatingInviteLink) {
|
||||||
_creatingInviteLink = true;
|
_creatingInviteLink = true;
|
||||||
_channel->session().api().inviteLinks().create(_channel);
|
_channel->session().api().inviteLinks().create(_channel);
|
||||||
|
|
|
@ -74,9 +74,10 @@ void FileDialogCallback(
|
||||||
FileDialog::OpenResult &&result,
|
FileDialog::OpenResult &&result,
|
||||||
Fn<bool(const Ui::PreparedList&)> checkResult,
|
Fn<bool(const Ui::PreparedList&)> checkResult,
|
||||||
Fn<void(Ui::PreparedList)> callback,
|
Fn<void(Ui::PreparedList)> callback,
|
||||||
bool premium) {
|
bool premium,
|
||||||
auto showError = [](tr::phrase<> text) {
|
not_null<QWidget*> toastParent) {
|
||||||
Ui::Toast::Show(text(tr::now));
|
auto showError = [=](tr::phrase<> text) {
|
||||||
|
Ui::Toast::Show(toastParent, text(tr::now));
|
||||||
};
|
};
|
||||||
|
|
||||||
auto list = Storage::PreparedFileFromFilesDialog(
|
auto list = Storage::PreparedFileFromFilesDialog(
|
||||||
|
@ -394,11 +395,12 @@ void SendFilesBox::refreshAllAfterChanges(int fromItem) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SendFilesBox::openDialogToAddFileToAlbum() {
|
void SendFilesBox::openDialogToAddFileToAlbum() {
|
||||||
|
const auto toastParent = Ui::BoxShow(this).toastParent();
|
||||||
const auto checkResult = [=](const Ui::PreparedList &list) {
|
const auto checkResult = [=](const Ui::PreparedList &list) {
|
||||||
if (_sendLimit != SendLimit::One) {
|
if (_sendLimit != SendLimit::One) {
|
||||||
return true;
|
return true;
|
||||||
} else if (!_list.canBeSentInSlowmodeWith(list)) {
|
} else if (!_list.canBeSentInSlowmodeWith(list)) {
|
||||||
Ui::Toast::Show(tr::lng_slowmode_no_many(tr::now));
|
Ui::Toast::Show(toastParent, tr::lng_slowmode_no_many(tr::now));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -409,7 +411,8 @@ void SendFilesBox::openDialogToAddFileToAlbum() {
|
||||||
std::move(result),
|
std::move(result),
|
||||||
checkResult,
|
checkResult,
|
||||||
[=](Ui::PreparedList list) { addFiles(std::move(list)); },
|
[=](Ui::PreparedList list) { addFiles(std::move(list)); },
|
||||||
premium);
|
premium,
|
||||||
|
toastParent);
|
||||||
};
|
};
|
||||||
|
|
||||||
FileDialog::GetOpenPaths(
|
FileDialog::GetOpenPaths(
|
||||||
|
@ -549,6 +552,7 @@ void SendFilesBox::pushBlock(int from, int till) {
|
||||||
});
|
});
|
||||||
}, widget->lifetime());
|
}, widget->lifetime());
|
||||||
|
|
||||||
|
const auto toastParent = Ui::BoxShow(this).toastParent();
|
||||||
block.itemReplaceRequest(
|
block.itemReplaceRequest(
|
||||||
) | rpl::start_with_next([=](int index) {
|
) | rpl::start_with_next([=](int index) {
|
||||||
const auto replace = [=](Ui::PreparedList list) {
|
const auto replace = [=](Ui::PreparedList list) {
|
||||||
|
@ -569,7 +573,9 @@ void SendFilesBox::pushBlock(int from, int till) {
|
||||||
_list.files.push_back(std::move(removing));
|
_list.files.push_back(std::move(removing));
|
||||||
std::swap(_list.files[index], _list.files.back());
|
std::swap(_list.files[index], _list.files.back());
|
||||||
if (!result) {
|
if (!result) {
|
||||||
Ui::Toast::Show(tr::lng_slowmode_no_many(tr::now));
|
Ui::Toast::Show(
|
||||||
|
toastParent,
|
||||||
|
tr::lng_slowmode_no_many(tr::now));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -580,7 +586,8 @@ void SendFilesBox::pushBlock(int from, int till) {
|
||||||
std::move(result),
|
std::move(result),
|
||||||
checkResult,
|
checkResult,
|
||||||
replace,
|
replace,
|
||||||
premium);
|
premium,
|
||||||
|
toastParent);
|
||||||
};
|
};
|
||||||
|
|
||||||
FileDialog::GetOpenPath(
|
FileDialog::GetOpenPath(
|
||||||
|
|
|
@ -272,7 +272,9 @@ void StickerSetBox::prepare() {
|
||||||
_inner->setInstalled(
|
_inner->setInstalled(
|
||||||
) | rpl::start_with_next([=](uint64 setId) {
|
) | rpl::start_with_next([=](uint64 setId) {
|
||||||
if (_inner->isMasksSet()) {
|
if (_inner->isMasksSet()) {
|
||||||
Ui::Toast::Show(tr::lng_masks_installed(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Ui::BoxShow(this).toastParent(),
|
||||||
|
tr::lng_masks_installed(tr::now));
|
||||||
} else {
|
} else {
|
||||||
auto &stickers = _controller->session().data().stickers();
|
auto &stickers = _controller->session().data().stickers();
|
||||||
stickers.notifyStickerSetInstalled(setId);
|
stickers.notifyStickerSetInstalled(setId);
|
||||||
|
@ -289,9 +291,11 @@ void StickerSetBox::prepare() {
|
||||||
) | rpl::start_with_next([=](uint64 setId) {
|
) | rpl::start_with_next([=](uint64 setId) {
|
||||||
const auto isMasks = _inner->isMasksSet();
|
const auto isMasks = _inner->isMasksSet();
|
||||||
|
|
||||||
Ui::Toast::Show(isMasks
|
Ui::Toast::Show(
|
||||||
? tr::lng_masks_has_been_archived(tr::now)
|
Ui::BoxShow(this).toastParent(),
|
||||||
: tr::lng_stickers_has_been_archived(tr::now));
|
isMasks
|
||||||
|
? tr::lng_masks_has_been_archived(tr::now)
|
||||||
|
: tr::lng_stickers_has_been_archived(tr::now));
|
||||||
|
|
||||||
auto &order = isMasks
|
auto &order = isMasks
|
||||||
? _controller->session().data().stickers().maskSetsOrderRef()
|
? _controller->session().data().stickers().maskSetsOrderRef()
|
||||||
|
@ -360,7 +364,9 @@ void StickerSetBox::updateButtons() {
|
||||||
const auto top = addTopButton(st::infoTopBarMenu);
|
const auto top = addTopButton(st::infoTopBarMenu);
|
||||||
const auto share = [=] {
|
const auto share = [=] {
|
||||||
copyStickersLink();
|
copyStickersLink();
|
||||||
Ui::Toast::Show(tr::lng_stickers_copied(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Ui::BoxShow(this).toastParent(),
|
||||||
|
tr::lng_stickers_copied(tr::now));
|
||||||
closeBox();
|
closeBox();
|
||||||
};
|
};
|
||||||
const auto menu =
|
const auto menu =
|
||||||
|
@ -384,7 +390,9 @@ void StickerSetBox::updateButtons() {
|
||||||
} else {
|
} else {
|
||||||
auto share = [=] {
|
auto share = [=] {
|
||||||
copyStickersLink();
|
copyStickersLink();
|
||||||
Ui::Toast::Show(tr::lng_stickers_copied(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Ui::BoxShow(this).toastParent(),
|
||||||
|
tr::lng_stickers_copied(tr::now));
|
||||||
};
|
};
|
||||||
auto shareText = isMasks
|
auto shareText = isMasks
|
||||||
? tr::lng_stickers_share_masks()
|
? tr::lng_stickers_share_masks()
|
||||||
|
@ -1123,8 +1131,8 @@ void StickerSetBox::Inner::archiveStickers() {
|
||||||
if (result.type() == mtpc_messages_stickerSetInstallResultSuccess) {
|
if (result.type() == mtpc_messages_stickerSetInstallResultSuccess) {
|
||||||
_setArchived.fire_copy(_setId);
|
_setArchived.fire_copy(_setId);
|
||||||
}
|
}
|
||||||
}).fail([] {
|
}).fail([toastParent = Window::Show(_controller).toastParent()] {
|
||||||
Ui::Toast::Show(Lang::Hard::ServerError());
|
Ui::Toast::Show(toastParent, Lang::Hard::ServerError());
|
||||||
}).send();
|
}).send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -254,7 +254,9 @@ void UsernameBox::changed() {
|
||||||
void UsernameBox::linkClick() {
|
void UsernameBox::linkClick() {
|
||||||
QGuiApplication::clipboard()->setText(
|
QGuiApplication::clipboard()->setText(
|
||||||
_session->createInternalLinkFull(getName()));
|
_session->createInternalLinkFull(getName()));
|
||||||
Ui::Toast::Show(tr::lng_username_copied(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Ui::BoxShow(this).toastParent(),
|
||||||
|
tr::lng_username_copied(tr::now));
|
||||||
}
|
}
|
||||||
|
|
||||||
void UsernameBox::updateFail(const QString &error) {
|
void UsernameBox::updateFail(const QString &error) {
|
||||||
|
|
|
@ -308,14 +308,17 @@ void MonospaceClickHandler::onClick(ClickContext context) const {
|
||||||
const auto hasCopyRestriction = item
|
const auto hasCopyRestriction = item
|
||||||
&& (!item->history()->peer->allowsForwarding()
|
&& (!item->history()->peer->allowsForwarding()
|
||||||
|| item->forbidsForward());
|
|| item->forbidsForward());
|
||||||
|
const auto toastParent = Window::Show(controller).toastParent();
|
||||||
if (hasCopyRestriction) {
|
if (hasCopyRestriction) {
|
||||||
Ui::Toast::Show(item->history()->peer->isBroadcast()
|
Ui::Toast::Show(
|
||||||
? tr::lng_error_nocopy_channel(tr::now)
|
toastParent,
|
||||||
: tr::lng_error_nocopy_group(tr::now));
|
item->history()->peer->isBroadcast()
|
||||||
|
? tr::lng_error_nocopy_channel(tr::now)
|
||||||
|
: tr::lng_error_nocopy_group(tr::now));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Ui::Toast::Show(toastParent, tr::lng_text_copied(tr::now));
|
||||||
}
|
}
|
||||||
Ui::Toast::Show(tr::lng_text_copied(tr::now));
|
|
||||||
TextUtilities::SetClipboardText(TextForMimeData::Simple(_text.trimmed()));
|
TextUtilities::SetClipboardText(TextForMimeData::Simple(_text.trimmed()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -565,7 +565,9 @@ bool ShowInviteLink(
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
QGuiApplication::clipboard()->setText(link);
|
QGuiApplication::clipboard()->setText(link);
|
||||||
Ui::Toast::Show(tr::lng_group_invite_copied(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Window::Show(controller).toastParent(),
|
||||||
|
tr::lng_group_invite_copied(tr::now));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -579,13 +581,15 @@ bool OpenExternalLink(
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExportTestChatTheme(
|
void ExportTestChatTheme(
|
||||||
not_null<Main::Session*> session,
|
not_null<Window::SessionController*> controller,
|
||||||
not_null<const Data::CloudTheme*> theme) {
|
not_null<const Data::CloudTheme*> theme) {
|
||||||
|
const auto session = &controller->session();
|
||||||
|
const auto show = std::make_shared<Window::Show>(controller);
|
||||||
const auto inputSettings = [&](Data::CloudThemeType type)
|
const auto inputSettings = [&](Data::CloudThemeType type)
|
||||||
-> std::optional<MTPInputThemeSettings> {
|
-> std::optional<MTPInputThemeSettings> {
|
||||||
const auto i = theme->settings.find(type);
|
const auto i = theme->settings.find(type);
|
||||||
if (i == end(theme->settings)) {
|
if (i == end(theme->settings)) {
|
||||||
Ui::Toast::Show("Something went wrong :(");
|
Ui::Toast::Show(show->toastParent(), "Something went wrong :(");
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
const auto &fields = i->second;
|
const auto &fields = i->second;
|
||||||
|
@ -593,7 +597,7 @@ void ExportTestChatTheme(
|
||||||
|| !fields.paper->isPattern()
|
|| !fields.paper->isPattern()
|
||||||
|| fields.paper->backgroundColors().empty()
|
|| fields.paper->backgroundColors().empty()
|
||||||
|| !fields.paper->hasShareUrl()) {
|
|| !fields.paper->hasShareUrl()) {
|
||||||
Ui::Toast::Show("Something went wrong :(");
|
Ui::Toast::Show(show->toastParent(), "Something went wrong :(");
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
const auto &bg = fields.paper->backgroundColors();
|
const auto &bg = fields.paper->backgroundColors();
|
||||||
|
@ -601,7 +605,9 @@ void ExportTestChatTheme(
|
||||||
const auto from = url.indexOf("bg/");
|
const auto from = url.indexOf("bg/");
|
||||||
const auto till = url.indexOf("?");
|
const auto till = url.indexOf("?");
|
||||||
if (from < 0 || till <= from) {
|
if (from < 0 || till <= from) {
|
||||||
Ui::Toast::Show("Bad WallPaper link: " + url);
|
Ui::Toast::Show(
|
||||||
|
show->toastParent(),
|
||||||
|
"Bad WallPaper link: " + url);
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -683,9 +689,15 @@ void ExportTestChatTheme(
|
||||||
const auto slug = Data::CloudTheme::Parse(session, result, true).slug;
|
const auto slug = Data::CloudTheme::Parse(session, result, true).slug;
|
||||||
QGuiApplication::clipboard()->setText(
|
QGuiApplication::clipboard()->setText(
|
||||||
session->createInternalLinkFull("addtheme/" + slug));
|
session->createInternalLinkFull("addtheme/" + slug));
|
||||||
Ui::Toast::Show(tr::lng_background_link_copied(tr::now));
|
if (show->valid()) {
|
||||||
|
Ui::Toast::Show(
|
||||||
|
show->toastParent(),
|
||||||
|
tr::lng_background_link_copied(tr::now));
|
||||||
|
}
|
||||||
}).fail([=](const MTP::Error &error) {
|
}).fail([=](const MTP::Error &error) {
|
||||||
Ui::Toast::Show("Error: " + error.type());
|
if (show->valid()) {
|
||||||
|
Ui::Toast::Show(show->toastParent(), "Error: " + error.type());
|
||||||
|
}
|
||||||
}).send();
|
}).send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -706,7 +718,7 @@ bool ResolveTestChatTheme(
|
||||||
params);
|
params);
|
||||||
if (theme) {
|
if (theme) {
|
||||||
if (!params["export"].isEmpty()) {
|
if (!params["export"].isEmpty()) {
|
||||||
ExportTestChatTheme(&controller->session(), &*theme);
|
ExportTestChatTheme(controller, &*theme);
|
||||||
}
|
}
|
||||||
const auto recache = [&](Data::CloudThemeType type) {
|
const auto recache = [&](Data::CloudThemeType type) {
|
||||||
[[maybe_unused]] auto value = theme->settings.contains(type)
|
[[maybe_unused]] auto value = theme->settings.contains(type)
|
||||||
|
|
|
@ -52,8 +52,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
#include "main/main_session_settings.h"
|
#include "main/main_session_settings.h"
|
||||||
#include "core/application.h"
|
#include "core/application.h"
|
||||||
|
#include "core/click_handler_types.h" // ClickHandlerContext
|
||||||
#include "lang/lang_keys.h"
|
#include "lang/lang_keys.h"
|
||||||
#include "storage/file_upload.h"
|
#include "storage/file_upload.h"
|
||||||
|
#include "window/window_session_controller.h" // Window::Show
|
||||||
#include "styles/style_chat.h"
|
#include "styles/style_chat.h"
|
||||||
#include "styles/style_dialogs.h"
|
#include "styles/style_dialogs.h"
|
||||||
|
|
||||||
|
@ -1646,6 +1648,7 @@ ClickHandlerPtr MediaDice::makeHandler() const {
|
||||||
ClickHandlerPtr MediaDice::MakeHandler(
|
ClickHandlerPtr MediaDice::MakeHandler(
|
||||||
not_null<History*> history,
|
not_null<History*> history,
|
||||||
const QString &emoji) {
|
const QString &emoji) {
|
||||||
|
// TODO support multi-windows.
|
||||||
static auto ShownToast = base::weak_ptr<Ui::Toast::Instance>();
|
static auto ShownToast = base::weak_ptr<Ui::Toast::Instance>();
|
||||||
static const auto HideExisting = [] {
|
static const auto HideExisting = [] {
|
||||||
if (const auto toast = ShownToast.get()) {
|
if (const auto toast = ShownToast.get()) {
|
||||||
|
@ -1653,7 +1656,7 @@ ClickHandlerPtr MediaDice::MakeHandler(
|
||||||
ShownToast = nullptr;
|
ShownToast = nullptr;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return std::make_shared<LambdaClickHandler>([=] {
|
return std::make_shared<LambdaClickHandler>([=](ClickContext context) {
|
||||||
auto config = Ui::Toast::Config{
|
auto config = Ui::Toast::Config{
|
||||||
.text = { tr::lng_about_random(tr::now, lt_emoji, emoji) },
|
.text = { tr::lng_about_random(tr::now, lt_emoji, emoji) },
|
||||||
.st = &st::historyDiceToast,
|
.st = &st::historyDiceToast,
|
||||||
|
@ -1683,7 +1686,15 @@ ClickHandlerPtr MediaDice::MakeHandler(
|
||||||
}
|
}
|
||||||
|
|
||||||
HideExisting();
|
HideExisting();
|
||||||
ShownToast = Ui::Toast::Show(config);
|
const auto my = context.other.value<ClickHandlerContext>();
|
||||||
|
const auto weak = my.sessionWindow;
|
||||||
|
if (const auto strong = weak.get()) {
|
||||||
|
ShownToast = Ui::Toast::Show(
|
||||||
|
Window::Show(strong).toastParent(),
|
||||||
|
config);
|
||||||
|
} else {
|
||||||
|
ShownToast = Ui::Toast::Show(config);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -405,6 +405,7 @@ void Stickers::applyArchivedResult(
|
||||||
session().local().writeArchivedMasks();
|
session().local().writeArchivedMasks();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO async toast.
|
||||||
Ui::Toast::Show(Ui::Toast::Config{
|
Ui::Toast::Show(Ui::Toast::Config{
|
||||||
.text = { tr::lng_stickers_packs_archived(tr::now) },
|
.text = { tr::lng_stickers_packs_archived(tr::now) },
|
||||||
.st = &st::stickersToast,
|
.st = &st::stickersToast,
|
||||||
|
|
|
@ -113,6 +113,20 @@ HiddenSenderInfo::HiddenSenderInfo(const QString &name, bool external)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ClickHandlerPtr HiddenSenderInfo::ForwardClickHandler() {
|
||||||
|
static const auto hidden = std::make_shared<LambdaClickHandler>([](
|
||||||
|
ClickContext context) {
|
||||||
|
const auto my = context.other.value<ClickHandlerContext>();
|
||||||
|
const auto weak = my.sessionWindow;
|
||||||
|
if (const auto strong = weak.get()) {
|
||||||
|
Ui::Toast::Show(
|
||||||
|
Window::Show(strong).toastParent(),
|
||||||
|
tr::lng_forwarded_hidden(tr::now));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return hidden;
|
||||||
|
}
|
||||||
|
|
||||||
bool HiddenSenderInfo::paintCustomUserpic(
|
bool HiddenSenderInfo::paintCustomUserpic(
|
||||||
Painter &p,
|
Painter &p,
|
||||||
int x,
|
int x,
|
||||||
|
@ -202,15 +216,12 @@ void HistoryMessageForwarded::create(const HistoryMessageVia *via) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
text.setMarkedText(st::fwdTextStyle, phrase);
|
text.setMarkedText(st::fwdTextStyle, phrase);
|
||||||
static const auto hidden = std::make_shared<LambdaClickHandler>([] {
|
|
||||||
Ui::Toast::Show(tr::lng_forwarded_hidden(tr::now));
|
|
||||||
});
|
|
||||||
|
|
||||||
text.setLink(1, fromChannel
|
text.setLink(1, fromChannel
|
||||||
? goToMessageClickHandler(originalSender, originalId)
|
? goToMessageClickHandler(originalSender, originalId)
|
||||||
: originalSender
|
: originalSender
|
||||||
? originalSender->openLink()
|
? originalSender->openLink()
|
||||||
: hidden);
|
: HiddenSenderInfo::ForwardClickHandler());
|
||||||
if (via) {
|
if (via) {
|
||||||
text.setLink(2, via->link);
|
text.setLink(2, via->link);
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,6 +81,8 @@ struct HiddenSenderInfo {
|
||||||
Ui::EmptyUserpic emptyUserpic;
|
Ui::EmptyUserpic emptyUserpic;
|
||||||
mutable Data::CloudImage customUserpic;
|
mutable Data::CloudImage customUserpic;
|
||||||
|
|
||||||
|
[[nodiscard]] static ClickHandlerPtr ForwardClickHandler();
|
||||||
|
|
||||||
[[nodiscard]] bool paintCustomUserpic(
|
[[nodiscard]] bool paintCustomUserpic(
|
||||||
Painter &p,
|
Painter &p,
|
||||||
int x,
|
int x,
|
||||||
|
|
|
@ -441,6 +441,7 @@ void ContactStatus::setupBlockHandler(not_null<UserData*> user) {
|
||||||
void ContactStatus::setupShareHandler(not_null<UserData*> user) {
|
void ContactStatus::setupShareHandler(not_null<UserData*> user) {
|
||||||
_bar.entity()->shareClicks(
|
_bar.entity()->shareClicks(
|
||||||
) | rpl::start_with_next([=] {
|
) | rpl::start_with_next([=] {
|
||||||
|
const auto show = std::make_shared<Window::Show>(_controller);
|
||||||
const auto share = [=](Fn<void()> &&close) {
|
const auto share = [=](Fn<void()> &&close) {
|
||||||
user->setSettings(0);
|
user->setSettings(0);
|
||||||
user->session().api().request(MTPcontacts_AcceptContact(
|
user->session().api().request(MTPcontacts_AcceptContact(
|
||||||
|
@ -448,14 +449,18 @@ void ContactStatus::setupShareHandler(not_null<UserData*> user) {
|
||||||
)).done([=](const MTPUpdates &result) {
|
)).done([=](const MTPUpdates &result) {
|
||||||
user->session().api().applyUpdates(result);
|
user->session().api().applyUpdates(result);
|
||||||
|
|
||||||
Ui::Toast::Show(tr::lng_new_contact_share_done(
|
if (show->valid()) {
|
||||||
tr::now,
|
Ui::Toast::Show(
|
||||||
lt_user,
|
show->toastParent(),
|
||||||
user->shortName()));
|
tr::lng_new_contact_share_done(
|
||||||
|
tr::now,
|
||||||
|
lt_user,
|
||||||
|
user->shortName()));
|
||||||
|
}
|
||||||
}).send();
|
}).send();
|
||||||
close();
|
close();
|
||||||
};
|
};
|
||||||
_controller->window().show(Ui::MakeConfirmBox({
|
show->showBox(Ui::MakeConfirmBox({
|
||||||
.text = tr::lng_new_contact_share_sure(
|
.text = tr::lng_new_contact_share_sure(
|
||||||
tr::now,
|
tr::now,
|
||||||
lt_phone,
|
lt_phone,
|
||||||
|
@ -488,6 +493,7 @@ void ContactStatus::setupReportHandler(not_null<PeerData*> peer) {
|
||||||
_bar.entity()->reportClicks(
|
_bar.entity()->reportClicks(
|
||||||
) | rpl::start_with_next([=] {
|
) | rpl::start_with_next([=] {
|
||||||
Expects(!peer->isUser());
|
Expects(!peer->isUser());
|
||||||
|
const auto show = std::make_shared<Window::Show>(_controller);
|
||||||
|
|
||||||
const auto callback = crl::guard(&_bar, [=](Fn<void()> &&close) {
|
const auto callback = crl::guard(&_bar, [=](Fn<void()> &&close) {
|
||||||
close();
|
close();
|
||||||
|
@ -503,7 +509,11 @@ void ContactStatus::setupReportHandler(not_null<PeerData*> peer) {
|
||||||
peer->session().api().deleteConversation(peer, false);
|
peer->session().api().deleteConversation(peer, false);
|
||||||
});
|
});
|
||||||
|
|
||||||
Ui::Toast::Show(tr::lng_report_spam_done(tr::now));
|
if (show->valid()) {
|
||||||
|
Ui::Toast::Show(
|
||||||
|
show->toastParent(),
|
||||||
|
tr::lng_report_spam_done(tr::now));
|
||||||
|
}
|
||||||
|
|
||||||
// Destroys _bar.
|
// Destroys _bar.
|
||||||
_controller->showBackFromStack();
|
_controller->showBackFromStack();
|
||||||
|
@ -514,7 +524,7 @@ void ContactStatus::setupReportHandler(not_null<PeerData*> peer) {
|
||||||
auto text = ((peer->isChat() || peer->isMegagroup())
|
auto text = ((peer->isChat() || peer->isMegagroup())
|
||||||
? tr::lng_report_spam_sure_group
|
? tr::lng_report_spam_sure_group
|
||||||
: tr::lng_report_spam_sure_channel)();
|
: tr::lng_report_spam_sure_channel)();
|
||||||
_controller->window().show(Ui::MakeConfirmBox({
|
show->showBox(Ui::MakeConfirmBox({
|
||||||
.text= std::move(text),
|
.text= std::move(text),
|
||||||
.confirmed = callback,
|
.confirmed = callback,
|
||||||
.confirmText = tr::lng_report_spam_ok(),
|
.confirmText = tr::lng_report_spam_ok(),
|
||||||
|
|
|
@ -682,10 +682,7 @@ ClickHandlerPtr Element::fromLink() const {
|
||||||
return imported;
|
return imported;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static const auto hidden = std::make_shared<LambdaClickHandler>([] {
|
_fromLink = HiddenSenderInfo::ForwardClickHandler();
|
||||||
Ui::Toast::Show(tr::lng_forwarded_hidden(tr::now));
|
|
||||||
});
|
|
||||||
_fromLink = hidden;
|
|
||||||
return _fromLink;
|
return _fromLink;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1651,6 +1651,7 @@ ClickHandlerPtr Message::createGoToCommentsLink() const {
|
||||||
if (const auto channel = history->peer->asChannel()) {
|
if (const auto channel = history->peer->asChannel()) {
|
||||||
if (channel->invitePeekExpires()) {
|
if (channel->invitePeekExpires()) {
|
||||||
Ui::Toast::Show(
|
Ui::Toast::Show(
|
||||||
|
Window::Show(controller).toastParent(),
|
||||||
tr::lng_channel_invite_private(tr::now));
|
tr::lng_channel_invite_private(tr::now));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -353,12 +353,15 @@ object_ptr<Ui::RpWidget> DetailsFiller::setupInfo() {
|
||||||
tr::lng_info_link_label(),
|
tr::lng_info_link_label(),
|
||||||
std::move(linkText),
|
std::move(linkText),
|
||||||
QString());
|
QString());
|
||||||
link->setClickHandlerFilter([peer = _peer](auto&&...) {
|
const auto controller = _controller->parentController();
|
||||||
|
link->setClickHandlerFilter([=, peer = _peer](auto&&...) {
|
||||||
const auto link = peer->session().createInternalLinkFull(
|
const auto link = peer->session().createInternalLinkFull(
|
||||||
peer->userName());
|
peer->userName());
|
||||||
if (!link.isEmpty()) {
|
if (!link.isEmpty()) {
|
||||||
QGuiApplication::clipboard()->setText(link);
|
QGuiApplication::clipboard()->setText(link);
|
||||||
Ui::Toast::Show(tr::lng_username_copied(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Window::Show(controller).toastParent(),
|
||||||
|
tr::lng_username_copied(tr::now));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
|
@ -199,7 +199,9 @@ void Cover::initViewers() {
|
||||||
} else {
|
} else {
|
||||||
QGuiApplication::clipboard()->setText(
|
QGuiApplication::clipboard()->setText(
|
||||||
_user->session().createInternalLinkFull(username));
|
_user->session().createInternalLinkFull(username));
|
||||||
Ui::Toast::Show(tr::lng_username_copied(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Window::Show(_controller).toastParent(),
|
||||||
|
tr::lng_username_copied(tr::now));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
|
@ -760,7 +760,7 @@ void Editor::exportTheme() {
|
||||||
_window->show(Ui::MakeInformBox(tr::lng_theme_editor_error()));
|
_window->show(Ui::MakeInformBox(tr::lng_theme_editor_error()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Ui::Toast::Show(tr::lng_theme_editor_done(tr::now));
|
_window->showToast(tr::lng_theme_editor_done(tr::now));
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -817,10 +817,10 @@ QByteArray Editor::ColorizeInContent(
|
||||||
|
|
||||||
void Editor::save() {
|
void Editor::save() {
|
||||||
if (Core::App().passcodeLocked()) {
|
if (Core::App().passcodeLocked()) {
|
||||||
Ui::Toast::Show(tr::lng_theme_editor_need_unlock(tr::now));
|
_window->showToast(tr::lng_theme_editor_need_unlock(tr::now));
|
||||||
return;
|
return;
|
||||||
} else if (!_window->account().sessionExists()) {
|
} else if (!_window->account().sessionExists()) {
|
||||||
Ui::Toast::Show(tr::lng_theme_editor_need_auth(tr::now));
|
_window->showToast(tr::lng_theme_editor_need_auth(tr::now));
|
||||||
return;
|
return;
|
||||||
} else if (_saving) {
|
} else if (_saving) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -893,10 +893,11 @@ void SaveThemeBox(
|
||||||
type = SaveErrorType::Link;
|
type = SaveErrorType::Link;
|
||||||
} else if (error == qstr("THEME_SLUG_OCCUPIED")) {
|
} else if (error == qstr("THEME_SLUG_OCCUPIED")) {
|
||||||
Ui::Toast::Show(
|
Ui::Toast::Show(
|
||||||
|
Ui::BoxShow(box).toastParent(),
|
||||||
tr::lng_create_channel_link_occupied(tr::now));
|
tr::lng_create_channel_link_occupied(tr::now));
|
||||||
type = SaveErrorType::Link;
|
type = SaveErrorType::Link;
|
||||||
} else if (!error.isEmpty()) {
|
} else if (!error.isEmpty()) {
|
||||||
Ui::Toast::Show(error);
|
Ui::Toast::Show(Ui::BoxShow(box).toastParent(), error);
|
||||||
}
|
}
|
||||||
if (type == SaveErrorType::Name) {
|
if (type == SaveErrorType::Name) {
|
||||||
name->showError();
|
name->showError();
|
||||||
|
|
|
@ -592,7 +592,8 @@ void CloudList::showMenu(Element &element) {
|
||||||
_contextMenu->addAction(tr::lng_theme_share(tr::now), [=] {
|
_contextMenu->addAction(tr::lng_theme_share(tr::now), [=] {
|
||||||
QGuiApplication::clipboard()->setText(
|
QGuiApplication::clipboard()->setText(
|
||||||
_window->session().createInternalLinkFull("addtheme/" + slug));
|
_window->session().createInternalLinkFull("addtheme/" + slug));
|
||||||
Ui::Toast::Show(tr::lng_background_link_copied(tr::now));
|
_window->window().showToast(
|
||||||
|
tr::lng_background_link_copied(tr::now));
|
||||||
}, &st::menuIconShare);
|
}, &st::menuIconShare);
|
||||||
}
|
}
|
||||||
if (cloud.documentId
|
if (cloud.documentId
|
||||||
|
|
|
@ -263,6 +263,7 @@ void TermsBox::prepare() {
|
||||||
st::termsPadding),
|
st::termsPadding),
|
||||||
0,
|
0,
|
||||||
age ? age->height() : 0);
|
age ? age->height() : 0);
|
||||||
|
const auto toastParent = Ui::BoxShow(this).toastParent();
|
||||||
content->entity()->setClickHandlerFilter([=](
|
content->entity()->setClickHandlerFilter([=](
|
||||||
const ClickHandlerPtr &handler,
|
const ClickHandlerPtr &handler,
|
||||||
Qt::MouseButton button) {
|
Qt::MouseButton button) {
|
||||||
|
@ -271,7 +272,9 @@ void TermsBox::prepare() {
|
||||||
: QString();
|
: QString();
|
||||||
if (TextUtilities::RegExpMention().match(link).hasMatch()) {
|
if (TextUtilities::RegExpMention().match(link).hasMatch()) {
|
||||||
_lastClickedMention = link;
|
_lastClickedMention = link;
|
||||||
Ui::Toast::Show(tr::lng_terms_agree_to_proceed(tr::now, lt_bot, link));
|
Ui::Toast::Show(
|
||||||
|
toastParent,
|
||||||
|
tr::lng_terms_agree_to_proceed(tr::now, lt_bot, link));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -297,10 +297,12 @@ void TogglePinnedDialog(
|
||||||
|
|
||||||
// This can happen when you remove this filter from another client.
|
// This can happen when you remove this filter from another client.
|
||||||
if (!ranges::contains(
|
if (!ranges::contains(
|
||||||
(&owner->session())->data().chatsFilters().list(),
|
(&owner->session())->data().chatsFilters().list(),
|
||||||
filterId,
|
filterId,
|
||||||
&Data::ChatFilter::id)) {
|
&Data::ChatFilter::id)) {
|
||||||
Ui::Toast::Show(tr::lng_cant_do_this(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Window::Show(controller).toastParent(),
|
||||||
|
tr::lng_cant_do_this(tr::now));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -601,6 +603,7 @@ void Filler::addViewDiscussion() {
|
||||||
_addAction(tr::lng_profile_view_discussion(tr::now), [=] {
|
_addAction(tr::lng_profile_view_discussion(tr::now), [=] {
|
||||||
if (channel->invitePeekExpires()) {
|
if (channel->invitePeekExpires()) {
|
||||||
Ui::Toast::Show(
|
Ui::Toast::Show(
|
||||||
|
Window::Show(navigation).toastParent(),
|
||||||
tr::lng_channel_invite_private(tr::now));
|
tr::lng_channel_invite_private(tr::now));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -895,12 +898,14 @@ void Filler::fillArchiveActions() {
|
||||||
}, hidden ? &st::menuIconExpand : &st::menuIconCollapse);
|
}, hidden ? &st::menuIconExpand : &st::menuIconCollapse);
|
||||||
|
|
||||||
_addAction(tr::lng_context_archive_to_menu(tr::now), [=] {
|
_addAction(tr::lng_context_archive_to_menu(tr::now), [=] {
|
||||||
Ui::Toast::Show(Ui::Toast::Config{
|
Ui::Toast::Show(
|
||||||
.text = { tr::lng_context_archive_to_menu_info(tr::now) },
|
Window::Show(controller).toastParent(),
|
||||||
.st = &st::windowArchiveToast,
|
Ui::Toast::Config{
|
||||||
.durationMs = kArchivedToastDuration,
|
.text = { tr::lng_context_archive_to_menu_info(tr::now) },
|
||||||
.multiline = true,
|
.st = &st::windowArchiveToast,
|
||||||
});
|
.durationMs = kArchivedToastDuration,
|
||||||
|
.multiline = true,
|
||||||
|
});
|
||||||
|
|
||||||
controller->session().settings().setArchiveInMainMenu(
|
controller->session().settings().setArchiveInMainMenu(
|
||||||
!controller->session().settings().archiveInMainMenu());
|
!controller->session().settings().archiveInMainMenu());
|
||||||
|
@ -959,7 +964,7 @@ void PeerMenuShareContactBox(
|
||||||
action.clearDraft = false;
|
action.clearDraft = false;
|
||||||
user->session().api().shareContact(user, action);
|
user->session().api().shareContact(user, action);
|
||||||
Ui::Toast::Show(
|
Ui::Toast::Show(
|
||||||
navigation->parentController()->widget()->bodyWidget(),
|
Window::Show(navigation).toastParent(),
|
||||||
tr::lng_share_done(tr::now));
|
tr::lng_share_done(tr::now));
|
||||||
if (auto strong = *weak) {
|
if (auto strong = *weak) {
|
||||||
strong->closeBox();
|
strong->closeBox();
|
||||||
|
@ -1152,6 +1157,7 @@ void PeerMenuBlockUserBox(
|
||||||
}
|
}
|
||||||
|
|
||||||
Ui::Toast::Show(
|
Ui::Toast::Show(
|
||||||
|
Window::Show(window).toastParent(),
|
||||||
tr::lng_new_contact_block_done(tr::now, lt_user, name));
|
tr::lng_new_contact_block_done(tr::now, lt_user, name));
|
||||||
}, st::attentionBoxButton);
|
}, st::attentionBoxButton);
|
||||||
|
|
||||||
|
|
|
@ -525,7 +525,9 @@ void SessionNavigation::showRepliesForMessage(
|
||||||
_showingRepliesRequestId = 0;
|
_showingRepliesRequestId = 0;
|
||||||
if (error.type() == u"CHANNEL_PRIVATE"_q
|
if (error.type() == u"CHANNEL_PRIVATE"_q
|
||||||
|| error.type() == u"USER_BANNED_IN_CHANNEL"_q) {
|
|| error.type() == u"USER_BANNED_IN_CHANNEL"_q) {
|
||||||
Ui::Toast::Show(tr::lng_group_not_accessible(tr::now));
|
Ui::Toast::Show(
|
||||||
|
Show(this).toastParent(),
|
||||||
|
tr::lng_group_not_accessible(tr::now));
|
||||||
}
|
}
|
||||||
}).send();
|
}).send();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue