summaryrefslogtreecommitdiffhomepage
path: root/opentrack/shortcuts.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2016-05-15 12:30:35 +0200
committerStanislaw Halik <sthalik@misaki.pl>2016-05-15 12:30:35 +0200
commit7ed453de4a77266e7e29f2f944b285b4fe3b248b (patch)
treec03ef2cee93ee78c259542ad2fdc8594ae0c7264 /opentrack/shortcuts.cpp
parent2ab0343a75e165684dba64aea4b54a5abbe8086c (diff)
api,gui: disable all keyboard shortcuts while binding a key
Previous disallowed binding an already-bound key on Unix since Qxt doesn't pass through bound keys unlike the Windows implementation. Refactor some common code. The Windows implementation isn't even compile-tested.
Diffstat (limited to 'opentrack/shortcuts.cpp')
-rw-r--r--opentrack/shortcuts.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/opentrack/shortcuts.cpp b/opentrack/shortcuts.cpp
index 2caa1790..e1087008 100644
--- a/opentrack/shortcuts.cpp
+++ b/opentrack/shortcuts.cpp
@@ -9,17 +9,30 @@
#include "shortcuts.h"
#include "win32-shortcuts.h"
-void Shortcuts::bind_keyboard_shortcut(K &key, const key_opts& k, unused(bool, held))
+void Shortcuts::free_binding(K& key)
{
-#if !defined(_WIN32)
- using sh = QxtGlobalShortcut;
+#ifndef _WIN32
if (key)
{
key->setEnabled(false);
key->setShortcut(QKeySequence::UnknownKey);
- std::shared_ptr<sh> tmp(nullptr);
+ std::shared_ptr<QxtGlobalShortcut> tmp(nullptr);
key.swap(tmp);
}
+#else
+ key.keycode = 0;
+ key.guid = "";
+#endif
+}
+
+void Shortcuts::bind_keyboard_shortcut(K &key, const key_opts& k, unused(bool, held))
+{
+#if !defined(_WIN32)
+ using sh = QxtGlobalShortcut;
+ if (key)
+ {
+ free_binding(key);
+ }
key = std::make_shared<sh>();