summaryrefslogtreecommitdiff
path: root/src/managers/KeybindManager.cpp
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2022-09-20 22:23:02 +0100
committervaxerski <vaxry@vaxry.net>2022-09-20 22:23:02 +0100
commit8b11a2e1b15a8e05a308a64b075ee7c9d612e6cc (patch)
tree8f7ab26e7fc3b6f6e7d0ba05250ca10e9280f901 /src/managers/KeybindManager.cpp
parentb4bcba935d1097ed44f7d899b0e2515a1812288b (diff)
minor mouse bind handling fixes
Diffstat (limited to 'src/managers/KeybindManager.cpp')
-rw-r--r--src/managers/KeybindManager.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 32a24b21..22edc5ea 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -129,17 +129,22 @@ void CKeybindManager::updateXKBTranslationState() {
m_pXKBTranslationState = xkb_state_new(PKEYMAP);
}
-void CKeybindManager::ensureMouseBindState() {
+bool CKeybindManager::ensureMouseBindState() {
if (!m_bIsMouseBindActive)
- return;
+ return false;
if (g_pInputManager->currentlyDraggedWindow) {
+ m_bIsMouseBindActive = false;
g_pLayoutManager->getCurrentLayout()->onEndDragWindow();
g_pInputManager->currentlyDraggedWindow = nullptr;
g_pInputManager->dragMode = MBIND_INVALID;
+
+ return true;
}
m_bIsMouseBindActive = false;
+
+ return false;
}
bool CKeybindManager::onKeyEvent(wlr_keyboard_key_event* e, SKeyboard* pKeyboard) {
@@ -174,7 +179,7 @@ bool CKeybindManager::onKeyEvent(wlr_keyboard_key_event* e, SKeyboard* pKeyboard
m_uLastCode = KEYCODE;
m_uLastMouseCode = 0;
- ensureMouseBindState();
+ bool mouseBindWasActive = ensureMouseBindState();
bool found = false;
if (e->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
@@ -212,7 +217,7 @@ bool CKeybindManager::onKeyEvent(wlr_keyboard_key_event* e, SKeyboard* pKeyboard
shadowKeybinds();
}
- return !found;
+ return !found && !mouseBindWasActive;
}
bool CKeybindManager::onAxisEvent(wlr_pointer_axis_event* e) {
@@ -251,6 +256,8 @@ bool CKeybindManager::onMouseEvent(wlr_pointer_button_event* e) {
m_uLastCode = 0;
m_uTimeLastMs = e->time_msec;
+ bool mouseBindWasActive = ensureMouseBindState();
+
if (e->state == WLR_BUTTON_PRESSED) {
found = g_pKeybindManager->handleKeybinds(MODS, "mouse:" + std::to_string(e->button), 0, 0, true, 0);
@@ -262,7 +269,7 @@ bool CKeybindManager::onMouseEvent(wlr_pointer_button_event* e) {
shadowKeybinds();
}
- return !found;
+ return !found && !mouseBindWasActive;
}
int repeatKeyHandler(void* data) {