opt: focusid allow cross tag

This commit is contained in:
DreamMaoMao 2026-05-26 22:24:58 +08:00
parent 431b1c1282
commit e29cec64e4
3 changed files with 29 additions and 19 deletions

View file

@ -60,4 +60,30 @@ void client_tile_resize(Client *c, struct wlr_box geo, int32_t interact) {
} }
static uint32_t next_client_id = 0; static uint32_t next_client_id = 0;
uint32_t generate_client_id(void) { return ++next_client_id; } uint32_t generate_client_id(void) { return ++next_client_id; }
void client_active(Client *c) {
uint32_t target;
if (client_is_unmanaged(c)) {
focusclient(c, 1);
return;
}
if (c->swallowing || !c->mon)
return;
if (c->isminimized) {
c->is_in_scratchpad = 0;
c->isnamedscratchpad = 0;
c->is_scratchpad_show = 0;
setborder_color(c);
show_hide_client(c);
arrange(c->mon, true, false);
return;
}
target = get_tags_first_tag(c->tags);
view_in_mon(&(Arg){.ui = target}, true, c->mon, true);
focusclient(c, 1);
}

View file

@ -2001,6 +2001,6 @@ int32_t focusid(const Arg *arg) {
return 0; return 0;
Client *c = arg->tc; Client *c = arg->tc;
focusclient(c, 1); client_active(c);
return 0; return 0;
} }

View file

@ -4,24 +4,8 @@ static struct wlr_foreign_toplevel_manager_v1 *foreign_toplevel_manager;
void handle_foreign_activate_request(struct wl_listener *listener, void *data) { void handle_foreign_activate_request(struct wl_listener *listener, void *data) {
Client *c = wl_container_of(listener, c, foreign_activate_request); Client *c = wl_container_of(listener, c, foreign_activate_request);
uint32_t target;
if (c->swallowing || !c->mon) client_active(c);
return;
if (c->isminimized) {
c->is_in_scratchpad = 0;
c->isnamedscratchpad = 0;
c->is_scratchpad_show = 0;
setborder_color(c);
show_hide_client(c);
arrange(c->mon, true, false);
return;
}
target = get_tags_first_tag(c->tags);
view_in_mon(&(Arg){.ui = target}, true, c->mon, true);
focusclient(c, 1);
} }
void handle_foreign_maximize_request(struct wl_listener *listener, void *data) { void handle_foreign_maximize_request(struct wl_listener *listener, void *data) {