feat(core+backend/X11): 实现窗口边框管理和焦点跟随鼠标

This commit is contained in:
2026-05-02 00:46:13 +08:00
parent 1cfa2c4505
commit d90cebe0c2
23 changed files with 272 additions and 87 deletions

View File

@@ -1,4 +1,4 @@
#include "color.h"
#include "base/color.h"
#include <stddef.h>
#include <stdint.h>

26
src/base/window_list.c Normal file
View File

@@ -0,0 +1,26 @@
#include "base/window_list.h"
#include <zdwm/types.h>
#include "base/array.h"
#include "base/memory.h"
void window_list_push(
window_list_t *window_list,
zdwm_window_id_t window_id
) {
zdwm_window_id_t *window =
array_push(window_list->windows, window_list->count, window_list->capacity);
*window = window_id;
}
void window_list_reset(window_list_t *window_list) {
p_clear(window_list->windows, window_list->capacity);
window_list->count = 0;
}
void window_list_cleanup(window_list_t *window_list) {
p_delete(window_list->windows);
window_list->count = 0;
window_list->capacity = 0;
}

14
src/base/window_list.h Normal file
View File

@@ -0,0 +1,14 @@
#pragma once
#include <stddef.h>
#include <zdwm/types.h>
typedef struct window_list_t {
zdwm_window_id_t *windows;
size_t count;
size_t capacity;
} window_list_t;
void window_list_push(window_list_t *window_list, zdwm_window_id_t window_id);
void window_list_reset(window_list_t *window_list);
void window_list_cleanup(window_list_t *window_list);