mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-09-01 15:05:56 +00:00
Make Ctrl+Shift+[1-6] jump through accounts.
This commit is contained in:
@@ -1224,19 +1224,48 @@ void SessionController::showGiftPremiumsBox(const QString &ref) {
|
||||
|
||||
void SessionController::init() {
|
||||
if (session().supportMode()) {
|
||||
initSupportMode();
|
||||
session().supportHelper().registerWindow(this);
|
||||
}
|
||||
setupShortcuts();
|
||||
}
|
||||
|
||||
void SessionController::initSupportMode() {
|
||||
session().supportHelper().registerWindow(this);
|
||||
|
||||
void SessionController::setupShortcuts() {
|
||||
Shortcuts::Requests(
|
||||
) | rpl::filter([=] {
|
||||
return (Core::App().activeWindow() == &window());
|
||||
return (Core::App().activeWindow() == &window())
|
||||
&& !isLayerShown()
|
||||
&& !window().locked();
|
||||
}) | rpl::start_with_next([=](not_null<Shortcuts::Request*> request) {
|
||||
using C = Shortcuts::Command;
|
||||
|
||||
const auto app = &Core::App();
|
||||
const auto accountsCount = int(app->domain().accounts().size());
|
||||
auto &&accounts = ranges::views::zip(
|
||||
Shortcuts::kShowAccount,
|
||||
ranges::views::ints(0, accountsCount));
|
||||
for (const auto [command, index] : accounts) {
|
||||
request->check(command) && request->handle([=] {
|
||||
const auto list = app->domain().orderedAccounts();
|
||||
if (index >= list.size()) {
|
||||
return false;
|
||||
}
|
||||
const auto account = list[index];
|
||||
if (account == &session().account()) {
|
||||
return false;
|
||||
}
|
||||
const auto window = app->separateWindowForAccount(account);
|
||||
if (window) {
|
||||
window->activate();
|
||||
} else {
|
||||
app->domain().maybeActivate(account);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
if (!session().supportMode()) {
|
||||
return;
|
||||
}
|
||||
request->check(C::SupportHistoryBack) && request->handle([=] {
|
||||
return chatEntryHistoryMove(-1);
|
||||
});
|
||||
|
Reference in New Issue
Block a user