Removed Ui::show from menu item for poll stopping.

This commit is contained in:
23rd 2022-04-17 16:28:48 +03:00 committed by John Preston
parent e4bfd562b5
commit 5261e962e2
3 changed files with 20 additions and 23 deletions

View file

@ -2248,7 +2248,8 @@ void HistoryInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
_menu, _menu,
poll, poll,
item, item,
HistoryView::Context::History); HistoryView::Context::History,
_controller);
} else if (const auto contact = media->sharedContact()) { } else if (const auto contact = media->sharedContact()) {
const auto phone = contact->phoneNumber; const auto phone = contact->phoneNumber;
_menu->addAction(tr::lng_profile_copy_phone(tr::now), [=] { _menu->addAction(tr::lng_profile_copy_phone(tr::now), [=] {

View file

@ -56,11 +56,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "window/window_session_controller.h" #include "window/window_session_controller.h"
#include "lang/lang_keys.h" #include "lang/lang_keys.h"
#include "core/application.h" #include "core/application.h"
#include "mainwidget.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "main/main_session_settings.h" #include "main/main_session_settings.h"
#include "apiwrap.h" #include "apiwrap.h"
#include "facades.h" #include "facades.h" // LambdaDelayed
#include "styles/style_chat.h" #include "styles/style_chat.h"
#include "styles/style_menu_icons.h" #include "styles/style_menu_icons.h"
@ -962,7 +961,8 @@ base::unique_qptr<Ui::PopupMenu> FillContextMenu(
} else if (lnkDocument) { } else if (lnkDocument) {
AddDocumentActions(result, lnkDocument, item, list); AddDocumentActions(result, lnkDocument, item, list);
} else if (poll) { } else if (poll) {
AddPollActions(result, poll, item, list->elementContext()); const auto context = list->elementContext();
AddPollActions(result, poll, item, context, list->controller());
} else if (!request.overSelection && view && !hasSelection) { } else if (!request.overSelection && view && !hasSelection) {
const auto owner = &view->data()->history()->owner(); const auto owner = &view->data()->history()->owner();
const auto media = view->media(); const auto media = view->media();
@ -1036,26 +1036,12 @@ void CopyPostLink(
: tr::lng_context_about_private_link(tr::now)); : tr::lng_context_about_private_link(tr::now));
} }
void StopPoll(not_null<Main::Session*> session, FullMsgId itemId) {
const auto stop = [=] {
Ui::hideLayer();
if (const auto item = session->data().message(itemId)) {
session->api().polls().close(item);
}
};
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_polls_stop_warning(),
.confirmed = stop,
.confirmText = tr::lng_polls_stop_sure(),
.cancelText = tr::lng_cancel(),
}));
}
void AddPollActions( void AddPollActions(
not_null<Ui::PopupMenu*> menu, not_null<Ui::PopupMenu*> menu,
not_null<PollData*> poll, not_null<PollData*> poll,
not_null<HistoryItem*> item, not_null<HistoryItem*> item,
Context context) { Context context,
not_null<Window::SessionController*> controller) {
if ((context != Context::History) if ((context != Context::History)
&& (context != Context::Replies) && (context != Context::Replies)
&& (context != Context::Pinned)) { && (context != Context::Pinned)) {
@ -1072,7 +1058,17 @@ void AddPollActions(
} }
if (item->canStopPoll()) { if (item->canStopPoll()) {
menu->addAction(tr::lng_polls_stop(tr::now), [=] { menu->addAction(tr::lng_polls_stop(tr::now), [=] {
StopPoll(&poll->session(), itemId); controller->show(Ui::MakeConfirmBox({
.text = tr::lng_polls_stop_warning(),
.confirmed = [=](Fn<void()> &&close) {
close();
if (const auto item = poll->owner().message(itemId)) {
controller->session().api().polls().close(item);
}
},
.confirmText = tr::lng_polls_stop_sure(),
.cancelText = tr::lng_cancel(),
}));
}, &st::menuIconStopPoll); }, &st::menuIconStopPoll);
} }
} }

View file

@ -54,12 +54,12 @@ void CopyPostLink(
not_null<Main::Session*> session, not_null<Main::Session*> session,
FullMsgId itemId, FullMsgId itemId,
Context context); Context context);
void StopPoll(not_null<Main::Session*> session, FullMsgId itemId);
void AddPollActions( void AddPollActions(
not_null<Ui::PopupMenu*> menu, not_null<Ui::PopupMenu*> menu,
not_null<PollData*> poll, not_null<PollData*> poll,
not_null<HistoryItem*> item, not_null<HistoryItem*> item,
Context context); Context context,
not_null<Window::SessionController*> controller);
void AddSaveSoundForNotifications( void AddSaveSoundForNotifications(
not_null<Ui::PopupMenu*> menu, not_null<Ui::PopupMenu*> menu,
not_null<HistoryItem*> item, not_null<HistoryItem*> item,