|
|
88129293a0
|
feat: 补发 ConfigureNotify 通知客户端实际几何
当 WM 拒绝窗口的 ConfigureRequest(因窗口需要重新布局)或映射
窗口时,按 ICCCM 规范主动向客户端发送 synthetic ConfigureNotify,
告知其当前真实几何,避免客户端状态不一致。
- core: 新增 NOTIFY_CONFIGURE 命令与 CONFIGURE_NOTIFY 效果,
由 policy 在 window_need_layout 分支生成,plan 层下发
- backend(x11): 新增 configure 批次,map/notify 时查询实际几何
并合成 ConfigureNotify 事件下发
|
2026-07-29 04:31:28 +08:00 |
|
|
|
079f41ce8a
|
refactor: 从 core 中抽出跨模块契约建立 interface/common 模块分层
引入 interface/(零实现声明层)与 common/(共享 ADT 操作层),把跨模块
契约从 core 实现里抽出来,依赖方向回到单向(base ← interface ← common ←
各实现层)。docs/module-layering.org 记录完整方案与判定标准。
interface/(纯类型与多态接口声明,零 .c):
- types.h / event.h / backend.h 从 core 移入
- effect.h 新建(effect_t 从 plan.h 抽出)
common/(多实现层共用的自包含操作,.h + .c):
- event.{h,c}:event_reset / event_cleanup
- listeners.{h,c}:listeners 维护(add / cleanup);notify 留 core
- window.{h,c}:window_list + layer_props/metadata cleanup + window_classify_layer
- workspace.{h,c}:workspace_desc(从 wm_desc.h 拆出,改真实函数)
window 相关整理:
- window_layer_type_t 上浮 interface/types.h(common 的 classify 需要)
- window_classify_layer 移 common/window
- window_info_t 独立成 core/window_info.h(state/command 共享,不寄生)
- 删除 wm_desc.h,base/window_list 并入 common/window
全项目 include 路径同步更新
|
2026-06-25 03:00:30 +08:00 |
|
|
|
b71b66921e
|
refactor(window): 用更通用的尺寸提示(min/max size)替换 fixed_size 标记
|
2026-06-22 23:22:08 +08:00 |
|
|
|
9a1e015fc1
|
feat: 添加 MOD4 + 鼠标右键调整窗口大小功能
|
2026-06-22 00:48:14 +08:00 |
|
|
|
4e7ab45864
|
feat: 添加 MOD4 + 鼠标左键移动窗口功能
|
2026-06-21 16:30:59 +08:00 |
|
|
|
adf839bf21
|
feat(bar): 实现 bar 可见性切换 action
|
2026-06-06 04:44:56 +08:00 |
|
|
|
09d5e4b4d0
|
refactor(policy): 删除 action 模块,将 action -> command 解析放在 policy 模块内部
- 删除 src/core/action.c|h,将 spawn 移至 src/base/process
- policy_resolve_action 实现完整的 action 分发逻辑
- binding_table_cycle_mode 改为纯计算,返回模式 ID 而非修改状态
- 从 state 移除 state_workspace_cycle_layout / state_cycle_current_output
- 新增 ZDWM_COMMAND_QUIT 命令,通过 plan 标志驱动 runtime 退出
- set_binding_mode 现在生成 BIND_KEY effect 以同步后端按键绑定
- 扩展 action 数据类型支持 window_send_to_workspace 和 window_cycle_output
|
2026-05-27 01:12:04 +08:00 |
|
|
|
ff3b51fd1d
|
feat(policy): 扩展命令并实现窗口迁移、 output/layout/binding_mode 切换功能
- command.h 新增 SEND_TO_WORKSPACE、SET_CURRENT_OUTPUT、SET_LAYOUT、SET_BINDING_MODE 四个命令类型及载荷
- policy.c 实现对应的 apply 逻辑,包含焦点转移、映射/取消映射副作用和 listener 通知
- plan.h 增加 quit/will_restart 标志,为后续优雅退出做准备
- binding.c 对重复设置同一 mode 增加短路返回
|
2026-05-26 13:15:54 +08:00 |
|
|
|
a60d9f31a7
|
feat(action): 实现 focus_window 窗口焦点切换及 raise 命令
|
2026-05-07 07:20:27 +08:00 |
|
|
|
42986fb783
|
feat(command): 添加窗口 bool 状态的 set 命令
|
2026-05-04 20:02:45 +08:00 |
|
|
|
ecc9834b03
|
refactor(command): 从 switch_workspace 命令中移除冗余的 output 字段
|
2026-05-04 17:52:36 +08:00 |
|
|
|
d90cebe0c2
|
feat(core+backend/X11): 实现窗口边框管理和焦点跟随鼠标
|
2026-05-02 00:46:13 +08:00 |
|
|
|
085a071f23
|
feat(policy): 处理 ConfigureRequest 事件
|
2026-04-29 01:56:31 +08:00 |
|
|
|
a393308704
|
feat(core+backend/X11): 实现窗口状态变更(最大化/最小化/全屏)
|
2026-04-28 03:45:40 +08:00 |
|
|
|
722d3946c6
|
feat(core+backend/X11): 区分窗口销毁和撤销
|
2026-04-27 22:28:43 +08:00 |
|
|
|
a749fc3c6c
|
feat(core/policy): 添加 unmanage/focus/kill 命令处理
|
2026-04-23 04:49:43 +08:00 |
|
|
|
a7225836e4
|
feat(core/policy): 实现 policy_apply_command 命令分发功能
|
2026-04-19 23:38:43 +08:00 |
|
|
|
5230b8b718
|
feat(core): 添加 command 定义及 command_buffer 维护功能
|
2026-04-13 05:34:53 +08:00 |
|