commit - 47b64bda732654c0e6dd3537d01e624b53a4c38e
commit + f1230e8ec97f421b1d4a4797137d8debfad107b2
blob - 963987c30f46d91c699c1f01a4965c4ddae87b58
blob + f7a777aca3e3e9ec26d3956f580e0e208fa51353
--- build.zig.zon
+++ build.zig.zon
.hash = "wayland-0.4.0-lQa1khbMAQAsLS2eBR7M5lofyEGPIbu2iFDmoz8lPC27",
},
.wlroots = .{
- .url = "git+https://codeberg.org/ifreund/zig-wlroots?ref=master#6ffee8b21d24e0e4aadcf204f65ebe7ad3c3bacf",
- .hash = "wlroots-0.20.0-dev-jmOlclseBABjKSxVH4TVkN4Fm-moidbybTStGsujJU_m",
+ .url = "git+https://codeberg.org/ifreund/zig-wlroots?ref=master#149c17476ccec90b9904d6a1a8d38858d4ac925f",
+ .hash = "wlroots-0.20.0-dev-jmOlckAeBACoYWj_Hs3JdREUrmKQDTj3d_P76C1HAHgz",
},
.xkbcommon = .{
.url = "https://codeberg.org/ifreund/zig-xkbcommon/archive/v0.3.0.tar.gz",
blob - 87e8f4cb7d57142b4ad5820b743697af0f7ace4b
blob + 8e1a8e54c5acd6c4dc868866f872bb35727f4727
--- river/InputRelay.zig
+++ river/InputRelay.zig
text_input: ?*TextInput = null,
input_method_commit: wl.Listener(void) = .init(handleInputMethodCommit),
-grab_keyboard: wl.Listener(*wlr.InputMethodV2.KeyboardGrab) =
- wl.Listener(*wlr.InputMethodV2.KeyboardGrab).init(handleInputMethodGrabKeyboard),
+grab_keyboard: wl.Listener(*wlr.InputMethodV2.KeyboardGrab) = .init(handleInputMethodGrabKeyboard),
input_method_destroy: wl.Listener(void) = .init(handleInputMethodDestroy),
-input_method_new_popup: wl.Listener(*wlr.InputPopupSurfaceV2) =
- wl.Listener(*wlr.InputPopupSurfaceV2).init(handleInputMethodNewPopup),
+input_method_new_popup: wl.Listener(*wlr.InputPopupSurfaceV2) = .init(handleInputMethodNewPopup),
-grab_keyboard_destroy: wl.Listener(*wlr.InputMethodV2.KeyboardGrab) =
- wl.Listener(*wlr.InputMethodV2.KeyboardGrab).init(handleInputMethodGrabKeyboardDestroy),
+grab_keyboard_destroy: wl.Listener(void) = .init(handleInputMethodGrabKeyboardDestroy),
pub fn init(relay: *InputRelay) void {
relay.* = .{ .text_inputs = undefined, .input_popups = undefined };
};
}
-fn handleInputMethodGrabKeyboardDestroy(
- listener: *wl.Listener(*wlr.InputMethodV2.KeyboardGrab),
- keyboard_grab: *wlr.InputMethodV2.KeyboardGrab,
-) void {
+fn handleInputMethodGrabKeyboardDestroy(listener: *wl.Listener(void)) void {
const relay: *InputRelay = @fieldParentPtr("grab_keyboard_destroy", listener);
+ const input_method = relay.input_method.?;
+ const keyboard_grab = input_method.keyboard_grab.?;
+
relay.grab_keyboard_destroy.link.remove();
if (keyboard_grab.keyboard) |keyboard| {
- keyboard_grab.input_method.seat.keyboardNotifyModifiers(&keyboard.modifiers);
+ input_method.seat.keyboardNotifyModifiers(&keyboard.modifiers);
}
}