diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 53b15a3214..0250d2164b 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -1088,22 +1088,28 @@ void MenuFactory::create_common_object_menu(wxMenu* menu) append_menu_items_mirror(menu); } -void MenuFactory::create_object_menu() +void MenuFactory::append_menu_items_split(wxMenu *menu) { - create_common_object_menu(&m_object_menu); wxMenu* split_menu = new wxMenu(); if (!split_menu) return; append_menu_item(split_menu, wxID_ANY, _L("To objects"), _L("Split the selected object into individual objects"), - [](wxCommandEvent&) { plater()->split_object(); }, "split_object_SMALL", &m_object_menu, + [](wxCommandEvent&) { plater()->split_object(); }, "split_object_SMALL", menu, []() { return plater()->can_split(true); }, m_parent); append_menu_item(split_menu, wxID_ANY, _L("To parts"), _L("Split the selected object into individual parts"), - [](wxCommandEvent&) { plater()->split_volume(); }, "split_parts_SMALL", &m_object_menu, + [](wxCommandEvent&) { plater()->split_volume(); }, "split_parts_SMALL", menu, []() { return plater()->can_split(false); }, m_parent); - append_submenu(&m_object_menu, split_menu, wxID_ANY, _L("Split"), _L("Split the selected object"), "", + append_submenu(menu, split_menu, wxID_ANY, _L("Split"), _L("Split the selected object"), "", []() { return plater()->can_split(true); }, m_parent); +} + +void MenuFactory::create_object_menu() +{ + create_common_object_menu(&m_object_menu); + + append_menu_items_split(&m_object_menu); m_object_menu.AppendSeparator(); // "Height range Modifier" and "Add (volumes)" menu items will be added later in append_menu_items_add_volume() @@ -1112,9 +1118,7 @@ void MenuFactory::create_object_menu() void MenuFactory::create_sla_object_menu() { create_common_object_menu(&m_sla_object_menu); - append_menu_item(&m_sla_object_menu, wxID_ANY, _L("Split"), _L("Split the selected object into individual objects"), - [](wxCommandEvent&) { plater()->split_object(); }, "split_object_SMALL", nullptr, - []() { return plater()->can_split(true); }, m_parent); + append_menu_items_split(&m_sla_object_menu); m_sla_object_menu.AppendSeparator(); append_menu_items_add_sla_volume(&m_sla_object_menu); diff --git a/src/slic3r/GUI/GUI_Factories.hpp b/src/slic3r/GUI/GUI_Factories.hpp index 81798af9cc..34725d6c14 100644 --- a/src/slic3r/GUI/GUI_Factories.hpp +++ b/src/slic3r/GUI/GUI_Factories.hpp @@ -113,6 +113,7 @@ private: void append_menu_item_edit_text(wxMenu *menu); void append_menu_items_instance_manipulation(wxMenu *menu); void update_menu_items_instance_manipulation(MenuType type); + void append_menu_items_split(wxMenu *menu); }; }} diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 7d197e1e36..9b179be663 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -4484,9 +4484,9 @@ void Plater::priv::on_right_click(RBtnEvent& evt) // so this selection should be updated before menu creation wxGetApp().obj_list()->update_selections(); - if (printer_technology == ptSLA) - menu = menus.sla_object_menu(); - else { +// if (printer_technology == ptSLA) +// menu = menus.sla_object_menu(); +// else { const Selection& selection = get_selection(); // show "Object menu" for each one or several FullInstance instead of FullObject const bool is_some_full_instances = selection.is_single_full_instance() || @@ -4498,12 +4498,12 @@ void Plater::priv::on_right_click(RBtnEvent& evt) const bool is_part = selection.is_single_volume() || selection.is_single_modifier(); #endif // ENABLE_WORLD_COORDINATE if (is_some_full_instances) - menu = menus.object_menu(); + menu = printer_technology == ptSLA ? menus.sla_object_menu() : menus.object_menu(); else if (is_part) menu = selection.is_single_text() ? menus.text_part_menu() : menus.part_menu(); else menu = menus.multi_selection_menu(); - } +// } } if (q != nullptr && menu) {