diff --git a/ui/widgets/menu/menu_common.cpp b/ui/widgets/menu/menu_common.cpp index badc14c..89376a6 100644 --- a/ui/widgets/menu/menu_common.cpp +++ b/ui/widgets/menu/menu_common.cpp @@ -6,6 +6,9 @@ // #include "ui/widgets/menu/menu_common.h" +#include "ui/ui_utility.h" +#include "base/invoke_queued.h" + #include namespace Ui::Menu { @@ -15,12 +18,11 @@ not_null CreateAction( const QString &text, Fn &&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; }