Added ability to open context menu for active account from main menu.

This commit is contained in:
23rd 2024-12-20 19:30:07 +03:00
parent 183a9139f9
commit bcd1d8461f

View file

@ -746,19 +746,22 @@ void SetupAccountsWrap(
} else if (which != Qt::RightButton) {
return;
}
if (session == &window->session() || state->menu) {
if (state->menu) {
return;
}
const auto isActive = session == &window->session();
state->menu = base::make_unique_q<Ui::PopupMenu>(
raw,
st::popupMenuExpandedSeparator);
const auto addAction = Ui::Menu::CreateAddActionCallback(
state->menu);
addAction(tr::lng_context_new_window(tr::now), [=] {
Ui::PreventDelayedActivation();
callback(Qt::ControlModifier);
}, &st::menuIconNewWindow);
Window::AddSeparatorAndShiftUp(addAction);
if (!isActive) {
addAction(tr::lng_context_new_window(tr::now), [=] {
Ui::PreventDelayedActivation();
callback(Qt::ControlModifier);
}, &st::menuIconNewWindow);
Window::AddSeparatorAndShiftUp(addAction);
}
addAction(tr::lng_profile_copy_phone(tr::now), [=] {
const auto phone = rpl::variable<TextWithEntities>(
@ -767,35 +770,39 @@ void SetupAccountsWrap(
}, &st::menuIconCopy);
if (!locked) {
addAction(tr::lng_menu_activate(tr::now), [=] {
callback({});
}, &st::menuIconProfile);
if (!isActive) {
addAction(tr::lng_menu_activate(tr::now), [=] {
callback({});
}, &st::menuIconProfile);
}
Window::MenuAddMarkAsReadAllChatsAction(
session,
window->uiShow(),
addAction);
}
auto logoutCallback = [=] {
const auto callback = [=](Fn<void()> &&close) {
close();
Core::App().logoutWithChecks(&session->account());
if (!isActive) {
auto logoutCallback = [=] {
const auto callback = [=](Fn<void()> &&close) {
close();
Core::App().logoutWithChecks(&session->account());
};
window->show(
Ui::MakeConfirmBox({
.text = tr::lng_sure_logout(),
.confirmed = crl::guard(session, callback),
.confirmText = tr::lng_settings_logout(),
.confirmStyle = &st::attentionBoxButton,
}),
Ui::LayerOption::CloseOther);
};
window->show(
Ui::MakeConfirmBox({
.text = tr::lng_sure_logout(),
.confirmed = crl::guard(session, callback),
.confirmText = tr::lng_settings_logout(),
.confirmStyle = &st::attentionBoxButton,
}),
Ui::LayerOption::CloseOther);
};
addAction({
.text = tr::lng_settings_logout(tr::now),
.handler = std::move(logoutCallback),
.icon = &st::menuIconLeaveAttention,
.isAttention = true,
});
addAction({
.text = tr::lng_settings_logout(tr::now),
.handler = std::move(logoutCallback),
.icon = &st::menuIconLeaveAttention,
.isAttention = true,
});
}
state->menu->popup(QCursor::pos());
}, raw->lifetime());