paint: stage fixes

This commit is contained in:
luboslenco
2026-06-09 15:43:36 +02:00
parent 579459379c
commit 04e2e42a1a
5 changed files with 42 additions and 6 deletions
+2
View File
@@ -409,6 +409,8 @@ char *strings_graphics_api();
stage_t *tab_stages_create_stage(char *name);
stage_t *tab_stages_get_stage();
void tab_stages_apply(stage_t *stage);
void tab_stages_rename_object(char *old_name, char *new_name);
void tab_stages_rename_layer(char *old_name, char *new_name);
void tab_stages_prune();
void project_open();
void project_save(bool save_and_quit);
+3 -1
View File
@@ -403,7 +403,9 @@ void tab_layers_draw_layer_slot_full(slot_layer_t *l, i32 i) {
g_ui->_w = name_right - name_x;
if (tab_layers_layer_name_edit == l->id) {
tab_layers_layer_name_handle->text = string_copy(l->name);
l->name = string_copy(ui_text_input(tab_layers_layer_name_handle, "", UI_ALIGN_LEFT, true, false));
char *new_name = string_copy(ui_text_input(tab_layers_layer_name_handle, "", UI_ALIGN_LEFT, true, false));
tab_stages_rename_layer(l->name, new_name);
l->name = new_name;
if (g_ui->text_selected_handle != tab_layers_layer_name_handle) {
tab_layers_layer_name_edit = -1;
}
+5 -3
View File
@@ -274,9 +274,11 @@ void tab_meshes_draw_context_menu() {
2);
ui_row(row);
ui_text("Name", UI_ALIGN_LEFT, 0x00000000);
h = ui_handle(__ID__);
h->text = string_copy(o->base->name);
o->base->name = string_copy(ui_text_input(h, "", UI_ALIGN_LEFT, true, false));
h = ui_handle(__ID__);
h->text = string_copy(o->base->name);
char *new_name = string_copy(ui_text_input(h, "", UI_ALIGN_LEFT, true, false));
tab_stages_rename_object(o->base->name, new_name);
o->base->name = new_name;
o->data->name = string_copy(o->base->name);
// Material override
+4 -2
View File
@@ -512,8 +512,10 @@ void ui_view2d_update(void *_) {
ui_text(g_context->node_preview_name, UI_ALIGN_LEFT, 0x00000000);
}
else if (ui_view2d_type == VIEW_2D_TYPE_LAYER) {
h->text = string_copy(l->name);
l->name = string_copy(ui_text_input(h, "", UI_ALIGN_LEFT, true, false));
h->text = string_copy(l->name);
char *new_name = string_copy(ui_text_input(h, "", UI_ALIGN_LEFT, true, false));
tab_stages_rename_layer(l->name, new_name);
l->name = new_name;
ui_view2d_text_input_hover = g_ui->is_hovered;
}
else if (ui_view2d_type == VIEW_2D_TYPE_FONT) {
+28
View File
@@ -34,6 +34,34 @@ void tab_stages_apply(stage_t *stage) {
g_context->ddirty = 2;
}
void tab_stages_rename_object(char *old_name, char *new_name) {
if (g_project->stages == NULL || string_equals(old_name, new_name)) {
return;
}
for (i32 i = 0; i < g_project->stages->length; ++i) {
stage_t *s = g_project->stages->buffer[i];
for (i32 j = 0; j < s->objects->length; ++j) {
if (string_equals(s->objects->buffer[j], old_name)) {
s->objects->buffer[j] = string_copy(new_name);
}
}
}
}
void tab_stages_rename_layer(char *old_name, char *new_name) {
if (g_project->stages == NULL || string_equals(old_name, new_name)) {
return;
}
for (i32 i = 0; i < g_project->stages->length; ++i) {
stage_t *s = g_project->stages->buffer[i];
for (i32 j = 0; j < s->layers->length; ++j) {
if (string_equals(s->layers->buffer[j], old_name)) {
s->layers->buffer[j] = string_copy(new_name);
}
}
}
}
void tab_stages_prune() {
if (g_project->stages == NULL) {
return;