New gcode visualization integration - Follow-up of 35ee55e29bb231fd01a2eb71ae293832a37ca65d - Better fix for toolpaths visible range when toggling options' visibility

This commit is contained in:
enricoturri1966 2024-01-10 08:45:57 +01:00 committed by Lukas Matena
parent 5c29f868c3
commit 028888bea5
2 changed files with 14 additions and 11 deletions

View File

@ -5598,8 +5598,14 @@ void GCodeViewer::render_legend(float& legend_height)
if (imgui.draw_radio_button(name, 1.5f * icon_size, active, draw_callback)) {
#if ENABLE_NEW_GCODE_VIEWER
const libvgcode::Interval view_visible_range = m_viewer.get_view_visible_range();
// check whether we need to keep the current visible range
libvgcode::Interval view_visible_range = m_viewer.get_view_visible_range();
const libvgcode::Interval view_enabled_range = m_viewer.get_view_enabled_range();
// update visible range to take in account for skipped moves
const uint32_t view_first_visible_gcode_id = m_viewer.get_vertex_at(view_visible_range[0]).gcode_id;
while (view_visible_range[0] > view_enabled_range[0] && view_first_visible_gcode_id == m_viewer.get_vertex_at(view_visible_range[0] - 1).gcode_id) {
--view_visible_range[0];
}
const bool keep_visible_range = view_visible_range != view_enabled_range;
#if ENABLE_COG_AND_TOOL_MARKERS
if (type == Preview::OptionType::Shells)

View File

@ -768,19 +768,16 @@ void Preview::update_moves_slider()
if (!skip) {
values.emplace_back(static_cast<double>(i + 1));
alternate_values.emplace_back(static_cast<double>(gcode_id));
}
if (gcode_id_min.has_value() && alternate_values.back() == static_cast<double>(*gcode_id_min))
visible_range_min_id = counter;
else if (gcode_id_max.has_value() && alternate_values.back() == static_cast<double>(*gcode_id_max))
visible_range_max_id = counter;
if (!skip)
if (gcode_id_min.has_value() && alternate_values.back() == static_cast<double>(*gcode_id_min))
visible_range_min_id = counter;
else if (gcode_id_max.has_value() && alternate_values.back() == static_cast<double>(*gcode_id_max))
visible_range_max_id = counter;
++counter;
}
}
const int span_min_id = visible_range_min_id.has_value() ? std::max(0, static_cast<int>(*visible_range_min_id) - 1) : 0;
const int span_max_id = visible_range_max_id.has_value() ? std::max(0, static_cast<int>(*visible_range_max_id) - 1) : static_cast<int>(values.size()) - 1;
const int span_min_id = visible_range_min_id.has_value() ? *visible_range_min_id : 0;
const int span_max_id = visible_range_max_id.has_value() ? *visible_range_max_id : static_cast<int>(values.size()) - 1;
m_moves_slider->SetSliderValues(values);
m_moves_slider->SetSliderAlternateValues(alternate_values);