core: 添加窗口规则 (rules) 数据结构和配置接口

This commit is contained in:
2026-04-12 02:11:57 +08:00
parent 823d8c1b65
commit b55d0c6b91
10 changed files with 169 additions and 7 deletions

37
src/core/rules.c Normal file
View File

@@ -0,0 +1,37 @@
#include "core/rules.h"
#include "base/memory.h"
#include "core/types.h"
bool rules_move(rules_t *src, rules_t *dest) {
if (!dest || !src) return false;
dest->items = src->items;
dest->count = src->count;
dest->capacity = src->capacity;
src->items = nullptr;
src->count = 0;
src->capacity = 0;
return true;
}
void rules_cleanup(rules_t *rules) {
for (size_t i = 0; i < rules->count; ++i) {
rule_match_t *match = &rules->items[i].match;
rule_action_t *action = &rules->items[i].action;
p_delete(&match->app_id);
p_delete(&match->role);
p_delete(&match->class_name);
p_delete(&match->instance_name);
p_clear(action, 1);
action->workspace = ZDWM_WORKSPACE_ID_INVALID;
}
p_delete(&rules->items);
rules->capacity = 0;
rules->count = 0;
}