Don't attach menu callback to QAction lifetime.
This commit is contained in:
parent
50ef072af7
commit
4093d6605a
1 changed files with 8 additions and 6 deletions
|
|
@ -6,6 +6,9 @@
|
||||||
//
|
//
|
||||||
#include "ui/widgets/menu/menu_common.h"
|
#include "ui/widgets/menu/menu_common.h"
|
||||||
|
|
||||||
|
#include "ui/ui_utility.h"
|
||||||
|
#include "base/invoke_queued.h"
|
||||||
|
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
|
|
||||||
namespace Ui::Menu {
|
namespace Ui::Menu {
|
||||||
|
|
@ -15,12 +18,11 @@ not_null<QAction*> CreateAction(
|
||||||
const QString &text,
|
const QString &text,
|
||||||
Fn<void()> &&callback) {
|
Fn<void()> &&callback) {
|
||||||
const auto action = new QAction(text, parent);
|
const auto action = new QAction(text, parent);
|
||||||
parent->connect(
|
const auto guard = MakeWeak(parent);
|
||||||
action,
|
auto triggered = [guard, callback = std::move(callback)]() mutable {
|
||||||
&QAction::triggered,
|
InvokeQueued(guard, std::move(callback));
|
||||||
action,
|
};
|
||||||
std::move(callback),
|
parent->connect(action, &QAction::triggered, std::move(triggered));
|
||||||
Qt::QueuedConnection);
|
|
||||||
return action;
|
return action;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue