diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 13ea764d0b..13ed57c7bf 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2651,7 +2651,7 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) #ifdef SHOW_IMGUI_DEMO_WINDOW static int cur = 0; - if (wxString("demo")[cur] = evt.GetUnicodeKey()) ++cur; else cur = 0; + if (wxString("demo")[cur] == evt.GetUnicodeKey()) ++cur; else cur = 0; if (cur == 4) { show_imgui_demo_window = !show_imgui_demo_window; cur = 0;} #endif // SHOW_IMGUI_DEMO_WINDOW @@ -3740,20 +3740,27 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) evt.Skip(); // Detection of doubleclick on text to open emboss edit window - if (evt.LeftDClick() && m_gizmos.get_current() == nullptr && !m_hover_volume_idxs.empty()) { + auto type = m_gizmos.get_current_type(); + if (evt.LeftDClick() && !m_hover_volume_idxs.empty() && + (type == GLGizmosManager::EType::Undefined || + type == GLGizmosManager::EType::Move || + type == GLGizmosManager::EType::Rotate || + type == GLGizmosManager::EType::Scale || + type == GLGizmosManager::EType::Emboss) ) { for (int hover_volume_id : m_hover_volume_idxs) { const GLVolume &hover_gl_volume = *m_volumes.volumes[hover_volume_id]; - const ModelObject* hover_object = m_model->objects[hover_gl_volume.object_idx()]; + int object_idx = hover_gl_volume.object_idx(); + if (object_idx < 0 || object_idx >= m_model->objects.size()) continue; + const ModelObject* hover_object = m_model->objects[object_idx]; int hover_volume_idx = hover_gl_volume.volume_idx(); + if (hover_volume_idx < 0 || hover_volume_idx >= hover_object->volumes.size()) continue; const ModelVolume* hover_volume = hover_object->volumes[hover_volume_idx]; - if (hover_volume->text_configuration.has_value()) { - //m_selection.set_mode(Selection::EMode::Volume); - //m_selection.add(hover_volume_id); // add whole instance - m_selection.add_volumes(Selection::EMode::Volume, {(unsigned) hover_volume_id}); + if (!hover_volume->text_configuration.has_value()) continue; + m_selection.add_volumes(Selection::EMode::Volume, {(unsigned) hover_volume_id}); + if (type != GLGizmosManager::EType::Emboss) m_gizmos.open_gizmo(GLGizmosManager::EType::Emboss); - wxGetApp().obj_list()->update_selections(); - return; - } + wxGetApp().obj_list()->update_selections(); + return; } }