opt: If nodes are not used, then do not create them

This commit is contained in:
DreamMaoMao 2026-06-17 21:19:09 +08:00
parent 3251e9d3bb
commit 79d9b4aa6b
3 changed files with 28 additions and 15 deletions

View file

@ -96,3 +96,21 @@ void client_pending_force_kill(Client *c) {
return;
kill(c->pid, SIGKILL);
}
void client_add_text_node(Client *c) {
c->text_node = mango_text_node_create(c->scene, config.textdata);
wlr_scene_node_lower_to_bottom(&c->text_node->scene_buffer->node);
wlr_scene_node_set_enabled(&c->text_node->scene_buffer->node, false);
}
void client_add_titlebar_node(Client *c) {
MangoNodeData *mangonodedata = ecalloc(1, sizeof(MangoNodeData));
mangonodedata->node_data = c;
mangonodedata->type = MANGO_TITLE_NODE;
c->titlebar_node = mango_titlebar_node_create(
mangonodedata, layers[LyrDecorate], config.textdata, 0, 0);
wlr_scene_node_lower_to_bottom(&c->titlebar_node->scene_buffer->node);
wlr_scene_node_set_enabled(&c->titlebar_node->scene_buffer->node, false);
mango_titlebar_node_update(c->titlebar_node, client_get_title(c), 1.0);
}

View file

@ -1143,6 +1143,15 @@ void pre_caculate_before_arrange(Monitor *m, bool want_animation,
set_size_per(m, c);
}
if (m->is_jump_mode && !c->text_node) {
client_add_text_node(c);
}
if (m->pertag->ltidxs[m->pertag->curtag]->id == MONOCLE &&
!c->titlebar_node) {
client_add_titlebar_node(c);
}
if (c->titlebar_node && c->mon == m) {
wlr_scene_node_set_enabled(&c->titlebar_node->scene_buffer->node,
false);

View file

@ -4573,20 +4573,6 @@ mapnotify(struct wl_listener *listener, void *data) {
#endif
// extra node
c->text_node = mango_text_node_create(c->scene, config.textdata);
wlr_scene_node_lower_to_bottom(&c->text_node->scene_buffer->node);
wlr_scene_node_set_enabled(&c->text_node->scene_buffer->node, false);
MangoNodeData *mangonodedata = ecalloc(1, sizeof(MangoNodeData));
mangonodedata->node_data = c;
mangonodedata->type = MANGO_TITLE_NODE;
c->titlebar_node = mango_titlebar_node_create(
mangonodedata, layers[LyrDecorate], config.textdata, 0, 0);
wlr_scene_node_lower_to_bottom(&c->titlebar_node->scene_buffer->node);
wlr_scene_node_set_enabled(&c->titlebar_node->scene_buffer->node, false);
mango_titlebar_node_update(c->titlebar_node, client_get_title(c), 1.0);
for (i = 0; i < 2; i++) {
c->splitindicator[i] = wlr_scene_rect_create(
c->scene, 0, 0,