Extract layer rename planning

This commit is contained in:
2026-06-03 10:10:08 +02:00
parent 5d5bb24711
commit 07ed23c2d1
8 changed files with 242 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
#include "pch.h"
#include "app.h"
#include "action.h"
#include "app_core/document_layer.h"
#include "app_core/document_resize.h"
#include "app_core/document_export.h"
#include "app_core/document_session.h"
@@ -605,6 +606,17 @@ void App::dialog_layer_rename()
dialog->btn_ok->on_click = [this,dialog](Node*)
{
const auto old_name = layers->m_current_layer->m_label_text;
const auto plan = pp::app::plan_document_layer_rename(old_name, dialog->get_name());
if (!plan)
return;
if (plan.value().action == pp::app::DocumentLayerRenameAction::no_op_same_name)
{
dialog->destroy();
App::I->hideKeyboard();
return;
}
struct ActionLayerRename : public Action
{
std::string m_old_name;
@@ -628,9 +640,13 @@ void App::dialog_layer_rename()
};
auto layer_node = std::static_pointer_cast<NodeLayer>(layers->m_current_layer->shared_from_this());
auto* layer = canvas->m_canvas->m_layers[canvas->m_canvas->m_current_layer_idx].get();
ActionManager::add(new ActionLayerRename(layers->m_current_layer->m_label_text, dialog->get_name(), layer_node, layer));
layer_node->set_name(dialog->get_name().c_str());
layer->m_name = dialog->get_name();
ActionManager::add(new ActionLayerRename(
plan.value().old_name,
plan.value().new_name,
layer_node,
layer));
layer_node->set_name(plan.value().new_name.c_str());
layer->m_name = plan.value().new_name;
dialog->destroy();
App::I->hideKeyboard();
};