Commit Graph

37 Commits

Author SHA1 Message Date
1ec92ec3e2 feat: 添加 _NET_WM_STATE_SKIP_TASKBAR 支持
- 新增 skip_taskbar 字段到 client_t
- 在 client_update_window_type 中检测并设置 skip_taskbar 状态
- 状态栏绘制时过滤 skip_taskbar 窗口
2026-03-11 06:45:37 +08:00
9fbd7f45e9 fix: 修复 client_send_to_tag 操作的焦点问题 2026-03-08 03:30:55 +08:00
5b41eb97cd fix: 修复窗口 Y 轴约束误用 workarea.width 的问题 2026-03-06 03:35:40 +08:00
cecd7dc2d9 fix: 修复 client_manage 函数中 client 初始化 tag 逻辑 2026-03-03 08:47:08 +08:00
92a810f345 fix: client_send_to_tag 不再切换 monitor 的 tag 2026-03-03 07:55:07 +08:00
4428eb056d fix: 修改 wm_set_current_monitor 函数实现避免光标乱跳
- 将 wm_set_current_monitor 改为支持 restore_cursor 参数,按场景决定是
  否恢复光标位置
- 仅在指针位于当前显示器时更新 cursor_position 缓存,减少错误覆盖
2026-03-03 07:23:34 +08:00
fb0999df90 feat: 统一 current_monitor 切换并让光标跟随 current_monitor 变化
- 新增 wm_set_current_monitor ,切换前记录光标当前所在 monitor 的最后
  位置
- 切换到目标 monitor 时按需恢复该 monitor 的光标位置
- 将 action/event/client 中直接赋值 wm.current_monitor 的逻辑改为统一
  调用 wm_set_current_monitor
- 优化 monitor_restore_cursor_point:首次未初始化时计算并设置位置
- 为 wm_get_monitor_by_area / wm_get_monitor_by_point 增加
  returns_nonnull 约束,并让 by_point 复用 by_area
2026-03-03 04:11:02 +08:00
41a2289c96 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 状态切换
2026-03-03 00:35:11 +08:00
9b7c3a67ef perf: 避免不必要的栈顶窗口重排
在 client_stack_raise 中如果 client 已经在窗口栈顶部直接返回,避免不必
要的窗口栈重排
2026-03-03 00:27:23 +08:00
ab3d441928 fix: 将 client 的 instance 和 class 属性也无作为任务标题备选项 2026-03-03 00:22:39 +08:00
323a0f3711 支持窗口最小化功能 2026-02-26 11:28:56 +08:00
d516d8f9e0 添加关闭窗口功能 2026-02-24 03:13:23 +08:00
8337ab9519 添加窗口规则支持 2026-02-04 16:47:35 +08:00
0e07ba135b 支持窗口最大化操作 2026-02-04 12:13:19 +08:00
4b6df52b41 修复窗口全屏后其他窗口未重新布局问题 2026-02-01 16:39:10 +08:00
a748159dcd 删除 client 不必要的属性 2026-01-29 09:59:14 +08:00
6f4690705a 修正浮动窗口和全屏窗口配合行为 2026-01-29 09:18:45 +08:00
a5ce85be78 支持窗口全屏操作 2026-01-29 07:46:06 +08:00
a772d0f56f 支持 client 窗口浮动 2026-01-28 23:40:15 +08:00
5ecaa97f10 添加 raise_or_run 功能 2026-01-28 16:19:18 +08:00
99d2e33a46 使用 _NET_WM_DESKTOP 保存和恢复 client 所在 tag 2026-01-28 09:50:36 +08:00
049b18a496 调整 send_client_to_next_monitor 函数实现 2026-01-14 03:44:53 +08:00
6b49045ee9 切换 client 所在 monitor 2026-01-07 12:12:56 +08:00
2902c994ba 切换 client 所在 tag 2026-01-07 11:39:46 +08:00
943ede70a0 实现 _NET_ACTIVE_WINDOW 消息协议 2026-01-05 22:04:27 +08:00
6382afeb03 处理堆叠顺序 2025-12-22 11:37:18 +08:00
94d3aa669f 处理窗口创建/销毁和切换 tag 时的窗口焦点 2025-12-22 09:43:42 +08:00
364a00fb7c 添加边框 2025-12-20 20:22:41 +08:00
0c029b7bfd 调整 client 坐标配置流程 2025-12-14 22:12:27 +08:00
ef1f71e92f 关闭窗口时清理对应资源 2025-12-09 09:37:06 +08:00
f7a29ce74c 调整 client 窗口监听的事件 2025-12-09 09:34:40 +08:00
684e61afe7 修复 client_remove_from_tag 函数 bug 2025-12-09 09:33:55 +08:00
f670c2f22c 修复 client_detach_list 函数 bug 2025-12-09 09:31:29 +08:00
4ca37760e8 绘制任务栏 2025-12-09 03:42:14 +08:00
489ae4bf2a 添加 monocle 布局功能 2025-12-09 00:48:52 +08:00
42ee022a0e 显示窗口 2025-11-27 07:53:28 +08:00
79425dc890 窗口管理器状态机设计 2025-11-13 16:48:08 +08:00