FIX:allow single cutter selected at 3D view
jira: none Change-Id: I2b90dace9f4288bd8077617a526fc3b5cf6543b7
This commit is contained in:
parent
aa4a5910eb
commit
68545b2a81
|
@ -486,6 +486,18 @@ void MenuFactory::append_menu_item_delete(wxMenu* menu)
|
|||
#endif
|
||||
}
|
||||
|
||||
void MenuFactory::append_menu_item_delete_all_cutter(wxMenu *menu)
|
||||
{
|
||||
#ifdef __WINDOWS__
|
||||
append_menu_item(
|
||||
menu, wxID_ANY, _L("Delete all cutter") + "\t" + _L("Del"), _L("Delete all cutter"), [](wxCommandEvent &) { plater()->remove_selected(); }, "menu_delete", nullptr,
|
||||
[]() { return plater()->can_delete(); }, m_parent);
|
||||
#else
|
||||
append_menu_item(
|
||||
menu, wxID_ANY, _L("Delete all cutter") + "\tBackSpace", _L("Delete all cutter"), [](wxCommandEvent &) { plater()->remove_selected(); }, "", nullptr,
|
||||
[]() { return plater()->can_delete(); }, m_parent);
|
||||
#endif
|
||||
}
|
||||
|
||||
void MenuFactory::append_menu_item_edit_text(wxMenu *menu)
|
||||
{
|
||||
|
@ -716,6 +728,10 @@ wxMenuItem* MenuFactory::append_menu_item_change_type(wxMenu* menu)
|
|||
return append_menu_item(menu, wxID_ANY, _L("Change type"), "",
|
||||
[](wxCommandEvent&) { obj_list()->change_part_type(); }, "", menu,
|
||||
[]() {
|
||||
const Selection &selection = plater()->canvas3D()->get_selection();
|
||||
if (selection.get_volume_idxs().size() != 1) {
|
||||
return false;
|
||||
}
|
||||
wxDataViewItem item = obj_list()->GetSelection();
|
||||
return item.IsOk() || obj_list()->GetModel()->GetItemType(item) == itVolume;
|
||||
}, m_parent);
|
||||
|
@ -1340,7 +1356,7 @@ void MenuFactory::create_bbl_assemble_part_menu()
|
|||
void MenuFactory::create_cut_cutter_menu()
|
||||
{
|
||||
wxMenu *menu = &m_cut_cutter_menu;
|
||||
append_menu_item_delete(menu);
|
||||
append_menu_item_delete_all_cutter(menu);
|
||||
append_menu_item_change_type(menu);
|
||||
}
|
||||
|
||||
|
|
|
@ -147,6 +147,7 @@ private:
|
|||
void append_menu_item_change_extruder(wxMenu* menu);
|
||||
void append_menu_item_set_visible(wxMenu* menu);
|
||||
void append_menu_item_delete(wxMenu* menu);
|
||||
void append_menu_item_delete_all_cutter(wxMenu *menu);
|
||||
void append_menu_item_scale_selection_to_fit_print_volume(wxMenu* menu);
|
||||
void append_menu_items_convert_unit(wxMenu* menu); // Add "Conver/Revert..." menu items (from/to inches/meters) after "Reload From Disk"
|
||||
void append_menu_items_flush_options(wxMenu* menu);
|
||||
|
|
|
@ -4791,8 +4791,6 @@ void ObjectList::update_selections_on_canvas()
|
|||
|
||||
if (sel_cnt == 1) {
|
||||
wxDataViewItem item = GetSelection();
|
||||
if (m_objects_model->GetInfoItemType(item) == InfoItemType::CutConnectors)
|
||||
selection.remove_all();
|
||||
|
||||
if (m_objects_model->GetItemType(item) & (itSettings | itInstanceRoot | itLayerRoot | itLayer))
|
||||
add_to_selection(m_objects_model->GetParent(item), selection, instance_idx, mode);
|
||||
|
@ -4829,6 +4827,9 @@ void ObjectList::update_selections_on_canvas()
|
|||
// to avoid lost of some volumes in selection
|
||||
// check non-selected volumes only if selection mode wasn't changed
|
||||
// OR there is no single selection
|
||||
if (is_connectors_item_selected() && !selection.is_empty()) {
|
||||
return;
|
||||
}
|
||||
if (selection.get_mode() == mode || !single_selection)
|
||||
volume_idxs = selection.get_unselected_volume_idxs_from(volume_idxs);
|
||||
Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Add selected to list", UndoRedo::SnapshotType::Selection);
|
||||
|
@ -5137,6 +5138,11 @@ void ObjectList::fix_cut_selection()
|
|||
|
||||
m_prevent_list_events = false;
|
||||
}
|
||||
auto canvas_type = wxGetApp().plater()->get_current_canvas3D()->get_canvas_type();
|
||||
if (canvas_type == GLCanvas3D::ECanvasType::CanvasView3D && is_connectors_item_selected()) {
|
||||
Selection &selection = wxGetApp().plater()->get_view3D_canvas3D()->get_selection();
|
||||
selection.remove_all();
|
||||
}
|
||||
}
|
||||
|
||||
bool ObjectList::fix_cut_selection(wxDataViewItemArray &sels)
|
||||
|
|
|
@ -7454,8 +7454,13 @@ void Plater::priv::on_right_click(RBtnEvent& evt)
|
|||
menu = menus.part_menu();
|
||||
}
|
||||
}
|
||||
} else
|
||||
menu = menus.multi_selection_menu();
|
||||
} else {
|
||||
if (selection.is_any_cut_volume()) {
|
||||
menu = menus.cut_connector_menu();
|
||||
} else {
|
||||
menu = menus.multi_selection_menu();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue