From 60e6ef9b973b62a5916925780c3c839b01a92b00 Mon Sep 17 00:00:00 2001 From: DreamMaoMao <2523610504@qq.com> Date: Fri, 10 Jul 2026 07:55:16 +0800 Subject: [PATCH] fix: fix ov_tab_mon when no monitor --- src/dispatch/bind_define.h | 5 +++++ src/mango.c | 17 +++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/dispatch/bind_define.h b/src/dispatch/bind_define.h index 3111eccd..62f75bd6 100644 --- a/src/dispatch/bind_define.h +++ b/src/dispatch/bind_define.h @@ -1908,6 +1908,11 @@ int32_t toggleoverview(const Arg *arg) { } view(&(Arg){.ui = target}, false); + + if (selmon->isoverview && config.ov_tab_mode && !selmon->is_jump_mode) { + focusstack(&(Arg){.i = 1}); + } + fix_mon_tagset_from_overview(selmon); refresh_monitors_workspaces_status(selmon); diff --git a/src/mango.c b/src/mango.c index 2114bb8a..602dbf07 100644 --- a/src/mango.c +++ b/src/mango.c @@ -133,6 +133,10 @@ #define TAGMATCH(C, M) \ ((C) && (M) && (C)->mon == (M) && (((C)->tags & (M)->tagset[(M)->seltags]))) +#define ISMODEKEYCODE(KEY) \ + ((KEY) == 133 || (KEY) == 37 || (KEY) == 64 || (KEY) == 50 || \ + (KEY) == 134 || (KEY) == 105 || (KEY) == 108 || (KEY) == 62) + #define LENGTH(X) (sizeof X / sizeof X[0]) #define END(A) ((A) + LENGTH(A)) #define TAGMASK ((1 << LENGTH(tags)) - 1) @@ -4395,14 +4399,11 @@ void keypress(struct wl_listener *listener, void *data) { wlr_idle_notifier_v1_notify_activity(idle_notifier, seat); // ov tab mode detect moe key release - if (config.ov_tab_mode && !selmon->is_jump_mode && !locked && - group == kb_group && event->state == WL_KEYBOARD_KEY_STATE_RELEASED && - (keycode == 133 || keycode == 37 || keycode == 64 || keycode == 50 || - keycode == 134 || keycode == 105 || keycode == 108 || keycode == 62) && - selmon && selmon->sel) { - if (selmon->isoverview && selmon->sel) { - toggleoverview(&(Arg){.i = 1}); - } + if (config.ov_tab_mode && selmon && !selmon->is_jump_mode && + selmon->isoverview && selmon->sel && !locked && group == kb_group && + event->state == WL_KEYBOARD_KEY_STATE_RELEASED && + ISMODEKEYCODE(keycode)) { + toggleoverview(&(Arg){.i = 1}); } if (config.cursor_hide_on_keypress && !cursor_hidden &&