Allow adding submenu actions with icons.

This commit is contained in:
John Preston 2021-12-09 21:55:35 +04:00
parent 7efa1f9b2b
commit 6ac846adbb
4 changed files with 30 additions and 8 deletions

View file

@ -68,10 +68,12 @@ not_null<QAction*> Menu::addAction(
not_null<QAction*> Menu::addAction(
const QString &text,
std::unique_ptr<QMenu> submenu) {
std::unique_ptr<QMenu> submenu,
const style::icon *icon,
const style::icon *iconOver) {
const auto action = new QAction(text, this);
action->setMenu(submenu.release());
return addAction(action, nullptr, nullptr);
return addAction(action, icon, iconOver);
}
not_null<QAction*> Menu::addAction(

View file

@ -40,7 +40,9 @@ public:
const style::icon *iconOver = nullptr);
not_null<QAction*> addAction(
const QString &text,
std::unique_ptr<QMenu> submenu);
std::unique_ptr<QMenu> submenu,
const style::icon *icon = nullptr,
const style::icon *iconOver = nullptr);
not_null<QAction*> addSeparator();
void clearActions();
void finishAnimating();

View file

@ -357,14 +357,24 @@ not_null<QAction*> PopupMenu::addAction(
return _menu->addAction(std::move(widget));
}
not_null<QAction*> PopupMenu::addAction(const QString &text, Fn<void()> callback, const style::icon *icon, const style::icon *iconOver) {
not_null<QAction*> PopupMenu::addAction(
const QString &text,
Fn<void()> callback,
const style::icon *icon,
const style::icon *iconOver) {
return _menu->addAction(text, std::move(callback), icon, iconOver);
}
not_null<QAction*> PopupMenu::addAction(
const QString &text,
std::unique_ptr<PopupMenu> submenu) {
const auto action = _menu->addAction(text, std::make_unique<QMenu>());
std::unique_ptr<PopupMenu> submenu,
const style::icon *icon,
const style::icon *iconOver) {
const auto action = _menu->addAction(
text,
std::make_unique<QMenu>(),
icon,
iconOver);
const auto saved = _submenus.emplace(
action,
base::unique_qptr<PopupMenu>(submenu.release())

View file

@ -29,8 +29,16 @@ public:
}
not_null<QAction*> addAction(base::unique_qptr<Menu::ItemBase> widget);
not_null<QAction*> addAction(const QString &text, Fn<void()> callback, const style::icon *icon = nullptr, const style::icon *iconOver = nullptr);
not_null<QAction*> addAction(const QString &text, std::unique_ptr<PopupMenu> submenu);
not_null<QAction*> addAction(
const QString &text,
Fn<void()> callback,
const style::icon *icon = nullptr,
const style::icon *iconOver = nullptr);
not_null<QAction*> addAction(
const QString &text,
std::unique_ptr<PopupMenu> submenu,
const style::icon *icon = nullptr,
const style::icon *iconOver = nullptr);
not_null<QAction*> addSeparator();
void clearActions();