feat: client 的任务栏标题点击行为根据 client 窗口的遮挡状态进行

- 当点击 client 在任务中的标题时,如果 client 被其他窗口遮挡,则将其显
示出来,否则切换其 minimize 属性
- 新增 rect 模块用于辅助判断 client 的遮挡状态,添加
rect_intersection/rect_subtract/rect_subtract_many 函数
- client 模块新增 client_get_obscured_state 计算 client 窗口被遮挡状态
- action 模块新增 change_client_state_dwim,实现上述的 client 状态切换
This commit is contained in:
2026-03-03 00:35:11 +08:00
parent 9b7c3a67ef
commit 41a2289c96
8 changed files with 280 additions and 1 deletions

View File

@@ -29,7 +29,13 @@ static const char *const active_border_color = "#005577";
static const button_t button_list[] = {
{click_tag, modifier_none, button_left, select_tag_of_current_monitor, {0}},
{click_client_name, modifier_none, button_left, toggle_client_minimize, {0}},
{
click_client_name,
modifier_none,
button_left,
change_client_state_dwim,
{0},
},
};
#define TAGKEYS(KEY, TAG) \