feat: bar 点击回调添加按键和修饰键参数

on_click 新增 modifiers/button,使 bar item 可按按键与修饰键区分动作;
因参数增多,回调与 bar_click 改用结构参数封装。同时将 button_t 与
modifier 类型提升至公开头 include/zdwm/types.h 以供使用
This commit is contained in:
2026-06-23 07:42:52 +08:00
parent 195aeb5166
commit 8f671bd755
8 changed files with 77 additions and 62 deletions

View File

@@ -59,6 +59,15 @@ typedef struct zdwm_bar_cell_api_t {
void (*cell_set_indicator)(zdwm_bar_item_t *item, size_t index, bool show);
} zdwm_bar_cell_api_t;
typedef struct zdwm_bar_click_params_t {
zdwm_bar_item_t *item;
size_t cell_index;
int32_t x;
zdwm_modifier_mask_t modifiers;
zdwm_button_t button;
void *state;
} zdwm_bar_click_params_t;
typedef struct zdwm_bar_item_type_t {
void *(*create_state)(zdwm_output_id_t output_id, void *config);
void (*update)(
@@ -66,12 +75,7 @@ typedef struct zdwm_bar_item_type_t {
const zdwm_bar_cell_api_t *cells,
void *state
);
zdwm_action_t (*on_click)(
zdwm_bar_item_t *item,
size_t cell_index,
int32_t x,
void *state
);
zdwm_action_t (*on_click)(zdwm_bar_click_params_t *params);
void (*destroy_state)(void *state);
zdwm_bar_item_t *instance;
uint32_t update_interval_ms;

View File

@@ -18,6 +18,25 @@ typedef uint32_t zdwm_binding_mode_id_t;
#define ZDWM_WORKSPACE_ID_INVALID ((zdwm_workspace_id_t)UINT32_MAX)
#define ZDWM_BINDING_MODE_ID_INVALID ((zdwm_binding_mode_id_t)UINT32_MAX)
typedef enum zdwm_button_t {
ZDWM_BUTTON_NONE,
ZDWM_BUTTON_LEFT,
ZDWM_BUTTON_RIGHT,
ZDWM_BUTTON_MIDDLE,
} zdwm_button_t;
typedef enum zdwm_modifier_bit_t {
ZDWM_MOD_NONE = 0u,
ZDWM_MOD_SHIFT = 1u << 0,
ZDWM_MOD_CONTROL = 1u << 1,
ZDWM_MOD_1 = 1u << 2,
ZDWM_MOD_2 = 1u << 3,
ZDWM_MOD_3 = 1u << 4,
ZDWM_MOD_4 = 1u << 5,
ZDWM_MOD_5 = 1u << 6,
} zdwm_modifier_bit_t;
typedef uint32_t zdwm_modifier_mask_t;
typedef struct zdwm_rect_t {
int32_t x;
int32_t y;