mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-14 05:56:02 +08:00
New gcode visualization integration - Follow-up of 35ee55e29bb231fd01a2eb71ae293832a37ca65d - Better fix for toolpaths visible range when toggling options' visibility
This commit is contained in:
parent
5c29f868c3
commit
028888bea5
@ -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)
|
||||
|
@ -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)
|
||||
++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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user