2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-08-31 06:26:18 +00:00

Disable support shortcuts when not support mode.

Fixes #5453.
This commit is contained in:
John Preston
2018-12-13 12:48:31 +04:00
parent 980d20473a
commit e876c9b6a6
4 changed files with 36 additions and 12 deletions

View File

@@ -37,6 +37,12 @@ const auto MediaCommands = base::flat_set<Command>{
Command::MediaNext,
};
const auto SupportCommands = base::flat_set<Command>{
Command::SupportReloadTemplates,
Command::SupportToggleMuted,
Command::SupportScrollToCurrent,
};
const auto CommandByName = base::flat_map<QString, Command>{
{ qsl("close_telegram") , Command::Close },
{ qsl("lock_telegram") , Command::Lock },
@@ -86,6 +92,7 @@ public:
std::optional<Command> lookup(int shortcutId) const;
void toggleMedia(bool toggled);
void toggleSupport(bool toggled);
const QStringList &errors() const;
@@ -104,6 +111,7 @@ private:
base::flat_map<int, Command> _commandByShortcutId;
base::flat_set<QShortcut*> _mediaShortcuts;
base::flat_set<QShortcut*> _supportShortcuts;
};
@@ -168,6 +176,7 @@ void Manager::clear() {
_shortcuts.clear();
_commandByShortcutId.clear();
_mediaShortcuts.clear();
_supportShortcuts.clear();
}
const QStringList &Manager::errors() const {
@@ -187,6 +196,12 @@ void Manager::toggleMedia(bool toggled) {
}
}
void Manager::toggleSupport(bool toggled) {
for (const auto shortcut : _supportShortcuts) {
shortcut->setEnabled(toggled);
}
}
bool Manager::readCustomFile() {
// read custom shortcuts from file if it exists or write an empty custom shortcuts file
QFile file(CustomFilePath());
@@ -352,7 +367,8 @@ void Manager::set(const QString &keys, Command command) {
shortcut->setAutoRepeat(false);
}
const auto isMediaShortcut = MediaCommands.contains(command);
if (isMediaShortcut) {
const auto isSupportShortcut = SupportCommands.contains(command);
if (isMediaShortcut || isSupportShortcut) {
shortcut->setEnabled(false);
}
const auto id = shortcut->id();
@@ -370,6 +386,9 @@ void Manager::set(const QString &keys, Command command) {
if (isMediaShortcut) {
_mediaShortcuts.emplace(i->second.get());
}
if (isSupportShortcut) {
_supportShortcuts.emplace(i->second.get());
}
}
void Manager::remove(const QString &keys) {
@@ -394,6 +413,7 @@ void Manager::unregister(base::unique_qptr<QShortcut> shortcut) {
if (shortcut) {
_commandByShortcutId.erase(shortcut->id());
_mediaShortcuts.erase(shortcut.get());
_supportShortcuts.erase(shortcut.get());
}
}
@@ -451,14 +471,13 @@ bool HandleEvent(not_null<QShortcutEvent*> event) {
return false;
}
void EnableMediaShortcuts() {
Data.toggleMedia(true);
Platform::SetWatchingMediaKeys(true);
void ToggleMediaShortcuts(bool toggled) {
Data.toggleMedia(toggled);
Platform::SetWatchingMediaKeys(toggled);
}
void DisableMediaShortcuts() {
Data.toggleMedia(false);
Platform::SetWatchingMediaKeys(false);
void ToggleSupportShortcuts(bool toggled) {
Data.toggleSupport(toggled);
}
void Finish() {

View File

@@ -65,7 +65,10 @@ const QStringList &Errors();
// Media shortcuts are not enabled by default, because other
// applications also use them. They are enabled only when
// the in-app player is active and disabled back after.
void EnableMediaShortcuts();
void DisableMediaShortcuts();
void ToggleMediaShortcuts(bool toggled);
// Support shortcuts are not enabled by default, because they
// have some conflicts with default input shortcuts, like Ctrl+Delete.
void ToggleSupportShortcuts(bool toggled);
} // namespace Shortcuts