diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 73b877bfb7..833f9d5316 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -741,6 +741,7 @@ public: #if ENABLE_EXTENDED_SELECTION const Selection& get_selection() const { return m_selection; } + Selection& get_selection() { return m_selection; } #endif // ENABLE_EXTENDED_SELECTION // Set the bed shape to a single closed 2D polygon(array of two element arrays), diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 2583df975d..0ee8f204b3 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -18,7 +18,7 @@ namespace GUI { ObjectList::ObjectList(wxWindow* parent) : - wxDataViewCtrl(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize) + wxDataViewCtrl(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_MULTIPLE) { // Fill CATEGORY_ICON { @@ -328,7 +328,9 @@ void ObjectList::on_begin_drag(wxDataViewEvent &event) wxDataViewItem item(event.GetItem()); // only allow drags for item, not containers - if (m_objects_model->GetParent(item) == wxDataViewItem(0) || m_objects_model->IsSettingsItem(item)) { + if (multiple_selection() || + m_objects_model->GetParent(item) == wxDataViewItem(0) || + m_objects_model->IsSettingsItem(item) ) { event.Veto(); return; } @@ -1139,5 +1141,12 @@ void ObjectList::init_objects() m_objects = wxGetApp().model_objects(); } +bool ObjectList::multiple_selection() const +{ + wxDataViewItemArray sels; + GetSelections(sels); + return sels.size() > 1; +} + } //namespace GUI } //namespace Slic3r \ No newline at end of file diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index dc85b13afe..948a4a74b2 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -121,6 +121,8 @@ public: void remove(); void init_objects(); + + bool multiple_selection() const ; }; diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index aaca076ed9..5eb90054c0 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -176,7 +176,8 @@ void ObjectManipulation::update_settings_list() auto config = wxGetApp().obj_list()->m_config; const auto item = objects_ctrl->GetSelection(); - if (config && objects_model->IsSettingsItem(item)) + if (!objects_ctrl->multiple_selection() && + config && objects_model->IsSettingsItem(item)) { auto extra_column = [config](wxWindow* parent, const Line& line) {