backend: X11 后端 window 信息查询接口使用原始封装代替语义化封装

- 拆分 window_get_skip_taskbar / window_get_urgency /
  window_get_states / window_get_geometry_mode 为更底层的
  window_get_atom_array / window_get_wm_hints / atom_to_window_state
- window_get_fixed_size 改为输出参数风格
- 扁平化 window_map_request_event_t,内联原 window_props_t 和
  window_geometry_t 的字段
- window_props_t → window_layer_props_t,仅保留 layer 分类所需的
  types/states
This commit is contained in:
2026-04-09 05:08:39 +08:00
parent 3884d3fc50
commit 0c7fdf08df
7 changed files with 159 additions and 197 deletions

View File

@@ -1,11 +1,15 @@
#pragma once
#include <stdbool.h>
#include <stddef.h>
#include <xcb/xcb_icccm.h>
#include <xcb/xproto.h>
#include "core/backend.h"
#include "core/window.h"
typedef struct atoms_t atoms_t;
/**
* @brief 获取窗口的 role 属性
* @param backend 后端实例指针
@@ -33,18 +37,16 @@ char *window_get_title(backend_t *backend, xcb_window_t window);
*/
void window_get_class(backend_t *backend, xcb_window_t window, char **class_out,
char **instance_out);
xcb_window_t window_get_transient_for(backend_t *backend, xcb_window_t window);
xcb_get_window_attributes_reply_t *window_get_attributes(backend_t *backend,
xcb_window_t window);
bool window_get_skip_taskbar(backend_t *backend, xcb_window_t window);
bool window_get_urgency(backend_t *backend, xcb_window_t window);
bool window_get_types(backend_t *backend, xcb_window_t window,
window_type_t **types, size_t *count);
bool window_get_states(backend_t *backend, xcb_window_t window,
window_state_t **states, size_t *count);
bool window_get_fixed_size(backend_t *backend, xcb_window_t window);
bool window_get_fixed_size(backend_t *backend, xcb_window_t window, bool *out);
bool window_get_geometry(backend_t *backend, xcb_window_t window, rect_t *out);
window_geometry_mode_t window_get_geometry_mode(backend_t *backend,
xcb_window_t window);
bool window_get_atom_array(backend_t *backend, xcb_window_t window,
xcb_atom_t property, xcb_atom_t **out_atoms,
uint32_t *out_len);
bool window_get_wm_hints(backend_t *backend, xcb_window_t window,
xcb_icccm_wm_hints_t *out);
window_state_t atom_to_window_state(const atoms_t *atoms, xcb_atom_t atom);