Replaced Window::PeerMenuCallback with struct.
This commit is contained in:
parent
d8ee50c6fe
commit
c520cb777c
|
@ -1771,6 +1771,10 @@ void InnerWidget::contextMenuEvent(QContextMenuEvent *e) {
|
||||||
fillArchiveSearchMenu(_menu.get());
|
fillArchiveSearchMenu(_menu.get());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
const auto addAction = Window::PeerMenuCallback([&](
|
||||||
|
Window::PeerMenuCallback::Args &&a) {
|
||||||
|
return _menu->addAction(a.text, std::move(a.handler), a.icon);
|
||||||
|
});
|
||||||
Window::FillDialogsEntryMenu(
|
Window::FillDialogsEntryMenu(
|
||||||
_controller,
|
_controller,
|
||||||
Dialogs::EntryState{
|
Dialogs::EntryState{
|
||||||
|
@ -1778,12 +1782,7 @@ void InnerWidget::contextMenuEvent(QContextMenuEvent *e) {
|
||||||
.section = Dialogs::EntryState::Section::ChatsList,
|
.section = Dialogs::EntryState::Section::ChatsList,
|
||||||
.filterId = _filterId,
|
.filterId = _filterId,
|
||||||
},
|
},
|
||||||
[&](
|
addAction);
|
||||||
const QString &text,
|
|
||||||
Fn<void()> callback,
|
|
||||||
const style::icon *icon) {
|
|
||||||
return _menu->addAction(text, std::move(callback), icon);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
QObject::connect(_menu.get(), &QObject::destroyed, [=] {
|
QObject::connect(_menu.get(), &QObject::destroyed, [=] {
|
||||||
if (_menuRow.key) {
|
if (_menuRow.key) {
|
||||||
|
|
|
@ -315,12 +315,10 @@ void TopBarWidget::showPeerMenu() {
|
||||||
if (!created) {
|
if (!created) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto addAction = [&](
|
const auto addAction = Window::PeerMenuCallback([&](
|
||||||
const QString &text,
|
Window::PeerMenuCallback::Args a) {
|
||||||
Fn<void()> callback,
|
return _menu->addAction(a.text, std::move(a.handler), a.icon);
|
||||||
const style::icon *icon) {
|
});
|
||||||
return _menu->addAction(text, std::move(callback), icon);
|
|
||||||
};
|
|
||||||
Window::FillDialogsEntryMenu(_controller, _activeChat, addAction);
|
Window::FillDialogsEntryMenu(_controller, _activeChat, addAction);
|
||||||
if (_menu->empty()) {
|
if (_menu->empty()) {
|
||||||
_menu.destroy();
|
_menu.destroy();
|
||||||
|
|
|
@ -515,12 +515,10 @@ void WrapWidget::showTopBarMenu() {
|
||||||
});
|
});
|
||||||
_topBarMenuToggle->installEventFilter(_topBarMenu.get());
|
_topBarMenuToggle->installEventFilter(_topBarMenu.get());
|
||||||
|
|
||||||
const auto addAction = [=](
|
const auto addAction = Window::PeerMenuCallback([=](
|
||||||
const QString &text,
|
Window::PeerMenuCallback::Args a) {
|
||||||
Fn<void()> callback,
|
return _topBarMenu->addAction(a.text, std::move(a.handler), a.icon);
|
||||||
const style::icon *icon) {
|
});
|
||||||
return _topBarMenu->addAction(text, std::move(callback), icon);
|
|
||||||
};
|
|
||||||
if (key().isDownloads()) {
|
if (key().isDownloads()) {
|
||||||
addAction(
|
addAction(
|
||||||
tr::lng_context_delete_all_files(tr::now),
|
tr::lng_context_delete_all_files(tr::now),
|
||||||
|
|
|
@ -546,15 +546,13 @@ void SetupAccountsWrap(
|
||||||
} else if (which != Qt::RightButton) {
|
} else if (which != Qt::RightButton) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto addAction = [&](
|
const auto addAction = Window::PeerMenuCallback([&](
|
||||||
const QString &text,
|
Window::PeerMenuCallback::Args args) {
|
||||||
Fn<void()> callback,
|
|
||||||
const style::icon *icon) {
|
|
||||||
return state->menu->addAction(
|
return state->menu->addAction(
|
||||||
text,
|
args.text,
|
||||||
crl::guard(raw, std::move(callback)),
|
crl::guard(raw, std::move(args.handler)),
|
||||||
icon);
|
args.icon);
|
||||||
};
|
});
|
||||||
if (!state->menu && IsAltShift(raw->clickModifiers())) {
|
if (!state->menu && IsAltShift(raw->clickModifiers())) {
|
||||||
state->menu = base::make_unique_q<Ui::PopupMenu>(
|
state->menu = base::make_unique_q<Ui::PopupMenu>(
|
||||||
raw,
|
raw,
|
||||||
|
|
|
@ -310,15 +310,13 @@ void FiltersMenu::showMenu(QPoint position, FilterId id) {
|
||||||
_popupMenu = base::make_unique_q<Ui::PopupMenu>(
|
_popupMenu = base::make_unique_q<Ui::PopupMenu>(
|
||||||
i->second.get(),
|
i->second.get(),
|
||||||
st::popupMenuWithIcons);
|
st::popupMenuWithIcons);
|
||||||
const auto addAction = [&](
|
const auto addAction = Window::PeerMenuCallback([&](
|
||||||
const QString &text,
|
Window::PeerMenuCallback::Args args) {
|
||||||
Fn<void()> callback,
|
|
||||||
const style::icon *icon) {
|
|
||||||
return _popupMenu->addAction(
|
return _popupMenu->addAction(
|
||||||
text,
|
args.text,
|
||||||
crl::guard(&_outer, std::move(callback)),
|
crl::guard(&_outer, std::move(args.handler)),
|
||||||
icon);
|
args.icon);
|
||||||
};
|
});
|
||||||
|
|
||||||
addAction(
|
addAction(
|
||||||
tr::lng_filters_context_edit(tr::now),
|
tr::lng_filters_context_edit(tr::now),
|
||||||
|
|
|
@ -475,15 +475,13 @@ void MainMenu::setupArchive() {
|
||||||
_contextMenu = base::make_unique_q<Ui::PopupMenu>(
|
_contextMenu = base::make_unique_q<Ui::PopupMenu>(
|
||||||
this,
|
this,
|
||||||
st::popupMenuWithIcons);
|
st::popupMenuWithIcons);
|
||||||
const auto addAction = [&](
|
const auto addAction = PeerMenuCallback([&](
|
||||||
const QString &text,
|
PeerMenuCallback::Args a) {
|
||||||
Fn<void()> callback,
|
|
||||||
const style::icon *icon) {
|
|
||||||
return _contextMenu->addAction(
|
return _contextMenu->addAction(
|
||||||
text,
|
a.text,
|
||||||
std::move(callback),
|
std::move(a.handler),
|
||||||
icon);
|
a.icon);
|
||||||
};
|
});
|
||||||
|
|
||||||
const auto hide = [=] {
|
const auto hide = [=] {
|
||||||
controller->session().settings().setArchiveInMainMenu(false);
|
controller->session().settings().setArchiveInMainMenu(false);
|
||||||
|
|
|
@ -38,10 +38,31 @@ class SessionNavigation;
|
||||||
|
|
||||||
extern const char kOptionViewProfileInChatsListContextMenu[];
|
extern const char kOptionViewProfileInChatsListContextMenu[];
|
||||||
|
|
||||||
using PeerMenuCallback = Fn<QAction*(
|
struct PeerMenuCallback {
|
||||||
const QString &text,
|
public:
|
||||||
Fn<void()> handler,
|
struct Args {
|
||||||
const style::icon *icon)>;
|
const QString &text;
|
||||||
|
Fn<void()> handler;
|
||||||
|
const style::icon *icon;
|
||||||
|
};
|
||||||
|
using Callback = Fn<QAction*(Args&&)>;
|
||||||
|
|
||||||
|
explicit PeerMenuCallback(Callback callback)
|
||||||
|
: callback(std::move(callback)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
QAction *operator()(Args &&args) const {
|
||||||
|
return callback(std::move(args));
|
||||||
|
}
|
||||||
|
QAction *operator()(
|
||||||
|
const QString &text,
|
||||||
|
Fn<void()> handler,
|
||||||
|
const style::icon *icon) const {
|
||||||
|
return callback({ text, std::move(handler), icon });
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
Callback callback;
|
||||||
|
};
|
||||||
|
|
||||||
void FillDialogsEntryMenu(
|
void FillDialogsEntryMenu(
|
||||||
not_null<SessionController*> controller,
|
not_null<SessionController*> controller,
|
||||||
|
|
Loading…
Reference in New Issue