当 WM 拒绝窗口的 ConfigureRequest(因窗口需要重新布局)或映射 窗口时,按 ICCCM 规范主动向客户端发送 synthetic ConfigureNotify, 告知其当前真实几何,避免客户端状态不一致。 - core: 新增 NOTIFY_CONFIGURE 命令与 CONFIGURE_NOTIFY 效果, 由 policy 在 window_need_layout 分支生成,plan 层下发 - backend(x11): 新增 configure 批次,map/notify 时查询实际几何 并合成 ConfigureNotify 事件下发
43 lines
1.3 KiB
C
43 lines
1.3 KiB
C
#pragma once
|
|
|
|
#include <stddef.h>
|
|
|
|
#include "base/color.h"
|
|
#include "interface/effect.h"
|
|
#include "interface/types.h"
|
|
|
|
typedef struct plan_t {
|
|
effect_t *effects;
|
|
size_t count;
|
|
size_t capacity;
|
|
bool need_relayout;
|
|
bool quit;
|
|
bool will_restart;
|
|
} plan_t;
|
|
|
|
void plan_reset(plan_t *plan);
|
|
void plan_cleanup(plan_t *plan);
|
|
void plan_push_effect(plan_t *plan, const effect_t *effect);
|
|
|
|
void plan_push_map_effect(plan_t *plan, window_id_t window_id);
|
|
void plan_push_unmap_effect(plan_t *plan, window_id_t window_id);
|
|
void plan_push_focus_effect(plan_t *plan, window_id_t window_id);
|
|
void plan_push_kill_effect(plan_t *plan, window_id_t window_id);
|
|
void plan_push_withdraw_effect(plan_t *plan, window_id_t window_id);
|
|
void plan_push_move_effect(plan_t *plan, window_id_t window_id);
|
|
void plan_push_resize_effect(plan_t *plan, window_id_t window_id);
|
|
void plan_push_configure_notify_effect(plan_t *plan, window_id_t window_id);
|
|
void plan_push_fullscreen_effect(
|
|
plan_t *plan,
|
|
window_id_t window_id,
|
|
bool value
|
|
);
|
|
void plan_push_maximize_effect(plan_t *plan, window_id_t window_id, bool value);
|
|
void plan_push_minimize_effect(plan_t *plan, window_id_t window_id, bool value);
|
|
void plan_push_change_border_color_effect(
|
|
plan_t *plan,
|
|
window_id_t window_id,
|
|
const color_t *color
|
|
);
|
|
void plan_push_ungrab_pointer(plan_t *plan);
|