From 755e1ff856ca09a8bcba8de55d146d1d4968e3bd Mon Sep 17 00:00:00 2001 From: omigamedev Date: Thu, 26 Sep 2019 19:49:57 +0200 Subject: [PATCH] fix manager assignment --- src/app_cloud.cpp | 2 +- src/app_dialogs.cpp | 28 ++++++++++++++-------------- src/app_layout.cpp | 19 +++++++++---------- src/canvas.cpp | 2 +- src/layout.cpp | 2 +- src/node.cpp | 14 ++++++++------ src/node.h | 4 ++-- src/node_dialog_browse.cpp | 4 ++-- src/node_dialog_cloud.cpp | 2 +- src/node_dialog_open.cpp | 4 ++-- src/node_panel_quick.cpp | 2 +- src/node_panel_stroke.cpp | 4 ++-- 12 files changed, 44 insertions(+), 43 deletions(-) diff --git a/src/app_cloud.cpp b/src/app_cloud.cpp index fce1c61..421503b 100644 --- a/src/app_cloud.cpp +++ b/src/app_cloud.cpp @@ -79,7 +79,7 @@ void App::cloud_browse() // load thumbnail test auto dialog = std::make_shared(); - dialog->m_manager = &layout; + dialog->set_manager(&layout); dialog->init(); dialog->create(); dialog->loaded(); diff --git a/src/app_dialogs.cpp b/src/app_dialogs.cpp index e626282..3487b00 100644 --- a/src/app_dialogs.cpp +++ b/src/app_dialogs.cpp @@ -17,7 +17,7 @@ std::shared_ptr App::show_progress(const std::string& title, int total /*= 0*/) { auto pb = std::make_shared(); - pb->m_manager = &layout; + pb->set_manager(&layout); pb->init(); pb->create(); pb->loaded(); @@ -32,7 +32,7 @@ std::shared_ptr App::show_progress(const std::string& title, in std::shared_ptr App::message_box(const std::string &title, const std::string& text, bool cancel_button) { auto m = std::make_shared(); - m->m_manager = &layout; + m->set_manager(&layout); m->init(); m->create(); m->loaded(); @@ -49,7 +49,7 @@ std::shared_ptr App::input_box(const std::string& title, const std::string& field_name, const std::string& ok_caption /*= "Ok"*/) { auto m = std::make_shared(); - m->m_manager = &layout; + m->set_manager(&layout); m->init(); m->create(); m->loaded(); @@ -63,7 +63,7 @@ std::shared_ptr App::input_box(const std::string& title, void App::dialog_usermanual() { auto dialog = std::make_shared(); - dialog->m_manager = &layout; + dialog->set_manager(&layout); dialog->init(); dialog->create(); dialog->loaded(); @@ -74,7 +74,7 @@ void App::dialog_usermanual() void App::dialog_changelog() { auto dialog = std::make_shared(); - dialog->m_manager = &layout; + dialog->set_manager(&layout); dialog->init(); dialog->create(); dialog->loaded(); @@ -85,7 +85,7 @@ void App::dialog_changelog() void App::dialog_about() { auto dialog = std::make_shared(); - dialog->m_manager = &layout; + dialog->set_manager(&layout); dialog->init(); dialog->create(); dialog->loaded(); @@ -97,7 +97,7 @@ void App::dialog_newdoc() { auto show_dialog = [this] { auto dialog = std::make_shared(); - dialog->m_manager = &layout; + dialog->set_manager(&layout); dialog->init(); dialog->create(); dialog->loaded(); @@ -146,7 +146,7 @@ void App::dialog_newdoc() { // ask confirm is file already exist auto msgbox = new NodeMessageBox(); - msgbox->m_manager = &layout; + msgbox->set_manager(&layout); msgbox->init(); msgbox->m_title->set_text("Warning"); msgbox->m_message->set_text("A document with this name already exists, continue?"); @@ -205,7 +205,7 @@ void App::dialog_open() auto show_dialog = [this] { // load thumbnail test auto dialog = std::make_shared(); - dialog->m_manager = &layout; + dialog->set_manager(&layout); dialog->init(); dialog->create(); dialog->loaded(); @@ -265,7 +265,7 @@ void App::dialog_browse() auto show_dialog = [this] { // load thumbnail test auto dialog = std::make_shared(); - dialog->m_manager = &layout; + dialog->set_manager(&layout); #ifdef __IOS__ dialog->search_paths = {work_path, data_path + "/Inbox"}; #else @@ -365,7 +365,7 @@ void App::dialog_save() if (canvas) { auto dialog = std::make_shared(); - dialog->m_manager = &layout; + dialog->set_manager(&layout); dialog->init(); dialog->create(); dialog->loaded(); @@ -398,7 +398,7 @@ void App::dialog_save() { // ask confirm is file already exist auto msgbox = new NodeMessageBox(); - msgbox->m_manager = &layout; + msgbox->set_manager(&layout); msgbox->init(); msgbox->m_title->set_text("Warning"); msgbox->m_message->set_text(("Are you sure you want to overwrite " + name + "?").c_str()); @@ -505,7 +505,7 @@ void App::dialog_export_depth() void App::dialog_resize() { auto dialog = std::make_shared(); - dialog->m_manager = &layout; + dialog->set_manager(&layout); dialog->init(); dialog->create(); dialog->loaded(); @@ -542,7 +542,7 @@ void App::dialog_export_cube_faces() void App::dialog_layer_rename() { auto dialog = std::make_shared(); - dialog->m_manager = &layout; + dialog->set_manager(&layout); dialog->init(); dialog->create(); dialog->loaded(); diff --git a/src/app_layout.cpp b/src/app_layout.cpp index 2bae97c..c888d8d 100644 --- a/src/app_layout.cpp +++ b/src/app_layout.cpp @@ -73,7 +73,7 @@ void App::init_toolbar_main() { button->on_click = [this](Node*) { msgbox = new NodeMessageBox(); - msgbox->m_manager = &layout; + msgbox->set_manager(&layout); msgbox->init(); layout[main_id]->add_child(msgbox); }; @@ -82,7 +82,7 @@ void App::init_toolbar_main() { button->on_click = [this](Node*) { settings = new NodeSettings(); - settings->m_manager = &layout; + settings->set_manager(&layout); settings->init(); layout[main_id]->add_child(settings); }; @@ -93,7 +93,7 @@ template std::shared_ptr create_panel(LayoutManager& manager) { std::shared_ptr ret; ret = std::make_shared(); - ret->m_manager = &manager; + ret->set_manager(&manager); ret->init(); ret->create(); ret->loaded(); @@ -1405,13 +1405,12 @@ void App::initLayout() layout.load("data/layout.xml"); LOG("initializing layout completed"); - //LOG("initializing layout designer xml"); - //layout_designer.on_loaded = [&](bool reloaded) { - // if (!reloaded) - // layout_designer.create(); - // layout_designer[main_id]->add_child(layout_designer.instantiate("changelog")); - //}; - //layout_designer.load("data/dialogs/changelog.xml"); + LOG("initializing layout designer xml"); + layout_designer.on_loaded = [&](bool reloaded) { + layout_designer.create(); + layout_designer[main_id]->add_child(layout_designer.instantiate("usermanual")); + }; + //layout_designer.load("data/dialogs/usermanual.xml"); } void App::set_ui_scale(float scale) diff --git a/src/canvas.cpp b/src/canvas.cpp index c417e64..71522c5 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -2222,7 +2222,7 @@ bool Canvas::project_open_thread(std::string file_path) if (App::I->layout.m_loaded) { pb = std::make_shared(); - pb->m_manager = &App::I->layout; + pb->set_manager(&App::I->layout); pb->init(); pb->create(); pb->loaded(); diff --git a/src/layout.cpp b/src/layout.cpp index af2c364..d532f60 100644 --- a/src/layout.cpp +++ b/src/layout.cpp @@ -90,7 +90,7 @@ bool LayoutManager::load(const char* path) node.reset(new Node()); break; } - node->m_manager = this; + node->set_manager(this); // try to copy the old size values if (old.count(id)) { diff --git a/src/node.cpp b/src/node.cpp index 480380e..8a77f46 100644 --- a/src/node.cpp +++ b/src/node.cpp @@ -340,21 +340,22 @@ void Node::removed(Node* parent) const Node* Node::init_template(const char* id) { - Node* m_template = nullptr; + Node* t = nullptr; App::I->ui_task([&] { auto hid = const_hash(id); Node* top = m_manager->get(hid); - m_template = static_cast(top->m_children[0].get()); - for (auto& c : m_template->m_children) + t = static_cast(top->m_children[0].get()); + t->set_manager(m_manager); + for (auto& c : t->m_children) { auto node = c->clone(); add_child(node); } - YGNodeCopyStyle(y_node, m_template->y_node); - m_template->clone_copy(this); + YGNodeCopyStyle(y_node, t->y_node); + t->clone_copy(this); }); - return m_template; + return t; } bool Node::init_template_file(const std::string& path, const std::string& id) @@ -366,6 +367,7 @@ bool Node::init_template_file(const std::string& path, const std::string& id) if (m.load(path.c_str())) { auto t = m.get_ref(id.c_str())->m_children[0]; + t->set_manager(m_manager); for (auto& c : t->m_children) add_child(c->clone()); YGNodeCopyStyle(y_node, t->y_node); diff --git a/src/node.h b/src/node.h index 1201216..4cc77b0 100644 --- a/src/node.h +++ b/src/node.h @@ -103,8 +103,8 @@ class Node : public std::enable_shared_from_this public: Node* m_parent{ nullptr }; YGNodeRef y_node{ nullptr }; - class LayoutManager* m_manager; - uint16_t m_nodeID; + class LayoutManager* m_manager = nullptr; + uint16_t m_nodeID = 0; std::string m_nodeID_s; std::vector> m_children; std::shared_ptr current_mouse_capture = nullptr; diff --git a/src/node_dialog_browse.cpp b/src/node_dialog_browse.cpp index 4f43ee1..f2571c9 100644 --- a/src/node_dialog_browse.cpp +++ b/src/node_dialog_browse.cpp @@ -38,7 +38,7 @@ void NodeDialogBrowse::init_controls() return; auto msgbox = new NodeMessageBox(); - msgbox->m_manager = m_manager; + msgbox->set_manager(m_manager); msgbox->init(); msgbox->m_title->set_text("Delete Project"); msgbox->m_message->set_text(("Are you sure you want to delete " + current->m_file_name + "?").c_str()); @@ -134,7 +134,7 @@ void NodeDialogBrowse::init_list() continue; auto node = new NodeDialogBrowseItem; - node->m_manager = m_manager; + node->set_manager(m_manager); node->init(); node->m_text->set_text(f_name.substr(0, f_name.length() - strlen(".ppi")).c_str()); node->m_path = f_path; diff --git a/src/node_dialog_cloud.cpp b/src/node_dialog_cloud.cpp index ab48657..47a20dd 100644 --- a/src/node_dialog_cloud.cpp +++ b/src/node_dialog_cloud.cpp @@ -88,7 +88,7 @@ void NodeDialogCloud::load_thumbs_thread() for (const auto& n : names) { auto node = new NodeDialogCloudItem; - node->m_manager = m_manager; + node->set_manager(m_manager); node->init(); node->m_text->set_text(n.c_str()); node->m_path = App::I->work_path + "/" + n; diff --git a/src/node_dialog_open.cpp b/src/node_dialog_open.cpp index ff98b88..55cb432 100644 --- a/src/node_dialog_open.cpp +++ b/src/node_dialog_open.cpp @@ -40,7 +40,7 @@ void NodeDialogOpen::init_controls() return; auto msgbox = new NodeMessageBox(); - msgbox->m_manager = m_manager; + msgbox->set_manager(m_manager); msgbox->init(); msgbox->m_title->set_text("Delete Project"); msgbox->m_message->set_text(("Are you sure you want to delete " + current->m_file_name + "?").c_str()); @@ -73,7 +73,7 @@ void NodeDialogOpen::init_controls() for (const auto& n : names) { auto node = new NodeDialogOpenItem; - node->m_manager = m_manager; + node->set_manager(m_manager); node->init(); node->m_text->set_text(n.c_str()); node->m_path = App::I->work_path + "/" + n; diff --git a/src/node_panel_quick.cpp b/src/node_panel_quick.cpp index 78df7a8..3d5c04d 100644 --- a/src/node_panel_quick.cpp +++ b/src/node_panel_quick.cpp @@ -108,7 +108,7 @@ void NodePanelQuick::reset_state(bool fire_event /*= false*/) void NodePanelQuick::init_controls() { m_picker = std::make_shared(); - m_picker->m_manager = m_manager; + m_picker->set_manager(m_manager); m_picker->init(); m_picker->create(); m_picker->loaded(); diff --git a/src/node_panel_stroke.cpp b/src/node_panel_stroke.cpp index 6c61dfc..84c8eb9 100644 --- a/src/node_panel_stroke.cpp +++ b/src/node_panel_stroke.cpp @@ -121,7 +121,7 @@ void NodePanelStroke::init_fold(const std::string& name) void NodePanelStroke::init_controls() { m_brush_popup = std::make_shared(); - m_brush_popup->m_manager = m_manager; + m_brush_popup->set_manager(m_manager); m_brush_popup->m_dir_name = "brushes"; m_brush_popup->init(); m_brush_popup->create(); @@ -133,7 +133,7 @@ void NodePanelStroke::init_controls() m_brush_popup->m_capture_children = false; m_pattern_popup = std::make_shared(); - m_pattern_popup->m_manager = m_manager; + m_pattern_popup->set_manager(m_manager); m_pattern_popup->m_dir_name = "patterns"; m_pattern_popup->init(); m_pattern_popup->create();