Skip to content

Commit

Permalink
hyprland: Add patch to fix fcitx window focus issue
Browse files Browse the repository at this point in the history
  • Loading branch information
donovanglover committed Apr 29, 2024
1 parent 7c1f8f4 commit a59f04f
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
5 changes: 5 additions & 0 deletions overlays/hyprland.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
final: prev: {
hyprland = prev.hyprland.overrideAttrs (oldAttrs: {
patches = (oldAttrs.patches or [ ]) ++ [ ../patches/hyprland-fix-fcitx-window-focus.patch ];
});
}
44 changes: 44 additions & 0 deletions patches/hyprland-fix-fcitx-window-focus.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
From 31d055f6d487bd72fca5b10822e3f3bd95e94cc9 Mon Sep 17 00:00:00 2001
From: drendog <[email protected]>
Date: Wed, 24 Apr 2024 00:30:35 +0200
Subject: [PATCH] input: fix active keyboard for seat after destroying one
(#5725)

* fix: manage active keyboard for seat after destroying one

* chore: clang-format
---
src/managers/input/InputManager.cpp | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp
index 0aad318918a..b5d6bb5c331 100644
--- a/src/managers/input/InputManager.cpp
+++ b/src/managers/input/InputManager.cpp
@@ -1152,17 +1152,16 @@ void CInputManager::destroyKeyboard(SKeyboard* pKeyboard) {

xkb_state_unref(pKeyboard->xkbTranslationState);

- if (pKeyboard->active) {
- m_lKeyboards.remove(*pKeyboard);
+ m_lKeyboards.remove(*pKeyboard);

- if (m_lKeyboards.size() > 0) {
- m_pActiveKeyboard = &m_lKeyboards.back();
- m_pActiveKeyboard->active = true;
- } else {
- m_pActiveKeyboard = nullptr;
- }
- } else
- m_lKeyboards.remove(*pKeyboard);
+ if (m_lKeyboards.size() > 0) {
+ m_pActiveKeyboard = &m_lKeyboards.back();
+ m_pActiveKeyboard->active = true;
+ wlr_seat_set_keyboard(g_pCompositor->m_sSeat.seat, wlr_keyboard_from_input_device(m_pActiveKeyboard->keyboard));
+ } else {
+ m_pActiveKeyboard = nullptr;
+ wlr_seat_set_keyboard(g_pCompositor->m_sSeat.seat, nullptr);
+ }
}

void CInputManager::destroyMouse(wlr_input_device* mouse) {

0 comments on commit a59f04f

Please sign in to comment.