From 5d3ce3e1905c06ec4d3d0b5be41a70505054cce8 Mon Sep 17 00:00:00 2001 From: tokyo4j Date: Sat, 28 Dec 2024 17:42:26 +0900 Subject: [PATCH] Check input_mode to see whether window switcher is active or not ...rather than "if (server->osd_state.cycle_view){..}". --- src/foreign-toplevel/foreign.c | 3 ++- src/input/cursor.c | 10 ++++++---- src/input/keyboard.c | 12 ++++++------ src/osd.c | 2 +- src/xdg.c | 2 +- src/xwayland.c | 2 +- 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/foreign-toplevel/foreign.c b/src/foreign-toplevel/foreign.c index 34c54abd..6f626c6e 100644 --- a/src/foreign-toplevel/foreign.c +++ b/src/foreign-toplevel/foreign.c @@ -29,7 +29,8 @@ foreign_request_fullscreen(struct foreign_toplevel *toplevel, bool fullscreen) void foreign_request_activate(struct foreign_toplevel *toplevel) { - if (toplevel->view->server->osd_state.cycle_view) { + if (toplevel->view->server->input_mode + == LAB_INPUT_STATE_WINDOW_SWITCHER) { wlr_log(WLR_INFO, "Preventing focus request while in window switcher"); return; } diff --git a/src/input/cursor.c b/src/input/cursor.c index 225f836b..dc6774c1 100644 --- a/src/input/cursor.c +++ b/src/input/cursor.c @@ -614,7 +614,8 @@ cursor_process_motion(struct server *server, uint32_t time, double *sx, double * } if ((ctx.view || ctx.surface) && rc.focus_follow_mouse - && !server->osd_state.cycle_view) { + && server->input_mode + != LAB_INPUT_STATE_WINDOW_SWITCHER) { desktop_focus_view_or_surface(seat, ctx.view, ctx.surface, rc.raise_on_focus); } @@ -655,7 +656,8 @@ _cursor_update_focus(struct server *server) if ((ctx.view || ctx.surface) && rc.focus_follow_mouse && !rc.focus_follow_mouse_requires_movement - && !server->osd_state.cycle_view) { + && server->input_mode + != LAB_INPUT_STATE_WINDOW_SWITCHER) { /* Prevents changing keyboard focus during A-Tab */ desktop_focus_view_or_surface(&server->seat, ctx.view, ctx.surface, rc.raise_on_focus); @@ -901,7 +903,7 @@ static void handle_release_mousebinding(struct server *server, struct cursor_context *ctx, uint32_t button) { - if (server->osd_state.cycle_view) { + if (server->input_mode == LAB_INPUT_STATE_WINDOW_SWITCHER) { return; } @@ -968,7 +970,7 @@ static bool handle_press_mousebinding(struct server *server, struct cursor_context *ctx, uint32_t button) { - if (server->osd_state.cycle_view) { + if (server->input_mode == LAB_INPUT_STATE_WINDOW_SWITCHER) { return false; } diff --git a/src/input/keyboard.c b/src/input/keyboard.c index cef86bbf..f21b7144 100644 --- a/src/input/keyboard.c +++ b/src/input/keyboard.c @@ -133,10 +133,12 @@ keyboard_modifiers_notify(struct wl_listener *listener, void *data) overlay_update(seat); } - if (server->osd_state.cycle_view - || seat->workspace_osd_shown_by_modifier) { + bool window_switcher_active = server->input_mode + == LAB_INPUT_STATE_WINDOW_SWITCHER; + + if (window_switcher_active || seat->workspace_osd_shown_by_modifier) { if (!keyboard_any_modifiers_pressed(wlr_keyboard)) { - if (server->osd_state.cycle_view) { + if (window_switcher_active) { if (key_state_nr_bound_keys()) { should_cancel_cycling_on_next_key_release = true; } else { @@ -570,9 +572,7 @@ handle_compositor_keybindings(struct keyboard *keyboard, key_state_store_pressed_key_as_bound(event->keycode); handle_menu_keys(server, &keyinfo.translated); return true; - } - - if (server->osd_state.cycle_view) { + } else if (server->input_mode == LAB_INPUT_STATE_WINDOW_SWITCHER) { key_state_store_pressed_key_as_bound(event->keycode); handle_cycle_view_key(server, &keyinfo); return true; diff --git a/src/osd.c b/src/osd.c index 1a47275b..3e061c29 100644 --- a/src/osd.c +++ b/src/osd.c @@ -60,7 +60,7 @@ osd_on_view_destroy(struct view *view) assert(view); struct osd_state *osd_state = &view->server->osd_state; - if (!osd_state->cycle_view) { + if (view->server->input_mode != LAB_INPUT_STATE_WINDOW_SWITCHER) { /* OSD not active, no need for clean up */ return; } diff --git a/src/xdg.c b/src/xdg.c index be4173ec..bb6d9eb6 100644 --- a/src/xdg.c +++ b/src/xdg.c @@ -874,7 +874,7 @@ xdg_activation_handle_request(struct wl_listener *listener, void *data) return; } - if (view->server->osd_state.cycle_view) { + if (view->server->input_mode == LAB_INPUT_STATE_WINDOW_SWITCHER) { wlr_log(WLR_INFO, "Preventing focus request while in window switcher"); return; } diff --git a/src/xwayland.c b/src/xwayland.c index 4e53f62e..5ebc730a 100644 --- a/src/xwayland.c +++ b/src/xwayland.c @@ -402,7 +402,7 @@ handle_request_activate(struct wl_listener *listener, void *data) return; } - if (view->server->osd_state.cycle_view) { + if (view->server->input_mode == LAB_INPUT_STATE_WINDOW_SWITCHER) { wlr_log(WLR_INFO, "Preventing focus request while in window switcher"); return; }