处理窗口创建/销毁和切换 tag 时的窗口焦点

This commit is contained in:
2025-12-22 08:43:07 +08:00
parent b944251f11
commit 94d3aa669f
3 changed files with 24 additions and 0 deletions

View File

@@ -48,6 +48,19 @@ uint32_t monitor_initialize_tag(monitor_t *monitor, const char **tags,
return tag_count;
}
void monitor_deal_focus(monitor_t *monitor) {
if (!monitor->selected_tag->task_list) return;
client_t *client = nullptr;
for (client_t *c = wm.client_stack_list; c; c = c->stack_next) {
if (client_get_task_in_tag(c, monitor->selected_tag)) {
client = c;
break;
}
}
client_focus(client);
}
void monitor_select_tag(monitor_t *monitor, uint32_t tag_mask) {
if (monitor->selected_tag->mask == tag_mask) return;
@@ -60,6 +73,8 @@ void monitor_select_tag(monitor_t *monitor, uint32_t tag_mask) {
break;
}
}
monitor_deal_focus(monitor);
}
static void tag_clean(tag_t *tag) {