Don't attach menu callback to QAction lifetime.

This commit is contained in:
John Preston 2022-04-20 11:35:11 +04:00
parent 50ef072af7
commit 4093d6605a

View file

@ -6,6 +6,9 @@
//
#include "ui/widgets/menu/menu_common.h"
#include "ui/ui_utility.h"
#include "base/invoke_queued.h"
#include <QAction>
namespace Ui::Menu {
@ -15,12 +18,11 @@ not_null<QAction*> CreateAction(
const QString &text,
Fn<void()> &&callback) {
const auto action = new QAction(text, parent);
parent->connect(
action,
&QAction::triggered,
action,
std::move(callback),
Qt::QueuedConnection);
const auto guard = MakeWeak(parent);
auto triggered = [guard, callback = std::move(callback)]() mutable {
InvokeQueued(guard, std::move(callback));
};
parent->connect(action, &QAction::triggered, std::move(triggered));
return action;
}