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) { } else if (which != Qt::RightButton) {
return; return;
} }
if (session == &window->session() || state->menu) { if (state->menu) {
return; return;
} }
const auto isActive = session == &window->session();
state->menu = base::make_unique_q<Ui::PopupMenu>( state->menu = base::make_unique_q<Ui::PopupMenu>(
raw, raw,
st::popupMenuExpandedSeparator); st::popupMenuExpandedSeparator);
const auto addAction = Ui::Menu::CreateAddActionCallback( const auto addAction = Ui::Menu::CreateAddActionCallback(
state->menu); state->menu);
if (!isActive) {
addAction(tr::lng_context_new_window(tr::now), [=] { addAction(tr::lng_context_new_window(tr::now), [=] {
Ui::PreventDelayedActivation(); Ui::PreventDelayedActivation();
callback(Qt::ControlModifier); callback(Qt::ControlModifier);
}, &st::menuIconNewWindow); }, &st::menuIconNewWindow);
Window::AddSeparatorAndShiftUp(addAction); Window::AddSeparatorAndShiftUp(addAction);
}
addAction(tr::lng_profile_copy_phone(tr::now), [=] { addAction(tr::lng_profile_copy_phone(tr::now), [=] {
const auto phone = rpl::variable<TextWithEntities>( const auto phone = rpl::variable<TextWithEntities>(
@ -767,15 +770,18 @@ void SetupAccountsWrap(
}, &st::menuIconCopy); }, &st::menuIconCopy);
if (!locked) { if (!locked) {
if (!isActive) {
addAction(tr::lng_menu_activate(tr::now), [=] { addAction(tr::lng_menu_activate(tr::now), [=] {
callback({}); callback({});
}, &st::menuIconProfile); }, &st::menuIconProfile);
}
Window::MenuAddMarkAsReadAllChatsAction( Window::MenuAddMarkAsReadAllChatsAction(
session, session,
window->uiShow(), window->uiShow(),
addAction); addAction);
} }
if (!isActive) {
auto logoutCallback = [=] { auto logoutCallback = [=] {
const auto callback = [=](Fn<void()> &&close) { const auto callback = [=](Fn<void()> &&close) {
close(); close();
@ -796,6 +802,7 @@ void SetupAccountsWrap(
.icon = &st::menuIconLeaveAttention, .icon = &st::menuIconLeaveAttention,
.isAttention = true, .isAttention = true,
}); });
}
state->menu->popup(QCursor::pos()); state->menu->popup(QCursor::pos());
}, raw->lifetime()); }, raw->lifetime());