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

@@ -8,6 +8,7 @@
#include "base/array.h"
#include "base/log.h"
#include "base/memory.h"
#include "base/window_list.h"
#include "core/layer.h"
#include "core/types.h"
#include "core/window.h"
@@ -479,6 +480,15 @@ void state_window_set_fixed_size(
if (window) window_set_fixed_size(window, fixed_size);
}
void state_window_set_border_width(
state_t *state,
window_id_t window_id,
uint32_t border_width
) {
window_t *window = (window_t *)state_window_get(state, window_id);
if (window) window_set_border_width(window, border_width);
}
void state_window_set_skip_taskbar(
state_t *state,
window_id_t window_id,
@@ -599,3 +609,16 @@ bool state_stack_lower(state_t *state, window_id_t window_id) {
return layer_stack_lower(layer, window_id);
}
void state_get_windows_need_layout_in_workspace(
const state_t *state,
workspace_id_t workspace_id,
window_list_t *window_list_out
) {
for (size_t i = 0; i < state->window_count; ++i) {
auto window = &state->windows[i];
if (window->workspace_id == workspace_id && window_need_layout(window)) {
window_list_push(window_list_out, window->id);
}
}
}