opt: optimzie text-input

This commit is contained in:
DreamMaoMao 2025-07-09 12:21:46 +08:00
parent ac05b63718
commit 6fb1807db7
2 changed files with 5 additions and 6 deletions

View file

@ -33,7 +33,7 @@ libm = cc.find_library('m')
xcb = dependency('xcb', required : get_option('xwayland')) xcb = dependency('xcb', required : get_option('xwayland'))
xlibs = dependency('xcb-icccm', required : get_option('xwayland')) xlibs = dependency('xcb-icccm', required : get_option('xwayland'))
wayland_server_dep = dependency('wayland-server') wayland_server_dep = dependency('wayland-server')
wlroots_dep = dependency('wlroots-0.19',version: '>=0.19.0') wlroots_dep = dependency('wlroots-0.20',version: '>=0.19.0')
xkbcommon_dep = dependency('xkbcommon') xkbcommon_dep = dependency('xkbcommon')
libinput_dep = dependency('libinput') libinput_dep = dependency('libinput')
libwayland_client_dep = dependency('wayland-client') libwayland_client_dep = dependency('wayland-client')

View file

@ -301,9 +301,8 @@ static void handle_input_method_commit(struct wl_listener *listener,
void *data) { void *data) {
struct dwl_input_method_relay *relay = struct dwl_input_method_relay *relay =
wl_container_of(listener, relay, input_method_commit); wl_container_of(listener, relay, input_method_commit);
struct wlr_input_method_v2 *input_method = data;
struct text_input *text_input; struct text_input *text_input;
assert(relay->input_method == input_method); struct wlr_input_method_v2 *input_method = relay->input_method;
text_input = relay->active_text_input; text_input = relay->active_text_input;
if (!text_input) { if (!text_input) {
@ -333,7 +332,8 @@ static void handle_keyboard_grab_destroy(struct wl_listener *listener,
void *data) { void *data) {
struct dwl_input_method_relay *relay = struct dwl_input_method_relay *relay =
wl_container_of(listener, relay, keyboard_grab_destroy); wl_container_of(listener, relay, keyboard_grab_destroy);
struct wlr_input_method_keyboard_grab_v2 *keyboard_grab = data; struct wlr_input_method_keyboard_grab_v2 *keyboard_grab =
relay->input_method->keyboard_grab;
wl_list_remove(&relay->keyboard_grab_destroy.link); wl_list_remove(&relay->keyboard_grab_destroy.link);
if (keyboard_grab->keyboard) { if (keyboard_grab->keyboard) {
@ -365,7 +365,6 @@ static void handle_input_method_destroy(struct wl_listener *listener,
void *data) { void *data) {
struct dwl_input_method_relay *relay = struct dwl_input_method_relay *relay =
wl_container_of(listener, relay, input_method_destroy); wl_container_of(listener, relay, input_method_destroy);
assert(relay->input_method == data);
wl_list_remove(&relay->input_method_commit.link); wl_list_remove(&relay->input_method_commit.link);
wl_list_remove(&relay->input_method_grab_keyboard.link); wl_list_remove(&relay->input_method_grab_keyboard.link);
wl_list_remove(&relay->input_method_new_popup_surface.link); wl_list_remove(&relay->input_method_new_popup_surface.link);
@ -570,7 +569,7 @@ struct dwl_input_method_relay *dwl_im_relay_create() {
relay->popup_tree = wlr_scene_tree_create(&scene->tree); relay->popup_tree = wlr_scene_tree_create(&scene->tree);
relay->new_text_input.notify = handle_new_text_input; relay->new_text_input.notify = handle_new_text_input;
wl_signal_add(&text_input_manager->events.text_input, wl_signal_add(&text_input_manager->events.new_text_input,
&relay->new_text_input); &relay->new_text_input);
relay->new_input_method.notify = handle_new_input_method; relay->new_input_method.notify = handle_new_input_method;