2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-09-01 07:05:13 +00:00

Make Ctrl+Shift+[1-6] jump through accounts.

This commit is contained in:
John Preston
2024-01-05 12:50:04 +04:00
parent c257b75a66
commit 28b43eff7c
4 changed files with 66 additions and 6 deletions

View File

@@ -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);
});