mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-11 08:47:52 -06:00
Fixed crash when moving horizontal slider thumb in preview with no toolpath active
This commit is contained in:
parent
9e0e597284
commit
2ecd78b0d5
5 changed files with 25 additions and 6 deletions
|
@ -1689,6 +1689,8 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int render_paths_count = 0;
|
||||||
|
|
||||||
// second pass: filter paths by sequential data and collect them by color
|
// second pass: filter paths by sequential data and collect them by color
|
||||||
for (const auto& [buffer, index_buffer_id, path_id] : paths) {
|
for (const auto& [buffer, index_buffer_id, path_id] : paths) {
|
||||||
const Path& path = buffer->paths[path_id];
|
const Path& path = buffer->paths[path_id];
|
||||||
|
@ -1711,6 +1713,7 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool
|
||||||
it->color = color;
|
it->color = color;
|
||||||
it->path_id = path_id;
|
it->path_id = path_id;
|
||||||
it->index_buffer_id = index_buffer_id;
|
it->index_buffer_id = index_buffer_id;
|
||||||
|
++render_paths_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int segments_count = std::min(m_sequential_view.current.last, path.last.s_id) - std::max(m_sequential_view.current.first, path.first.s_id) + 1;
|
unsigned int segments_count = std::min(m_sequential_view.current.last, path.last.s_id) - std::max(m_sequential_view.current.first, path.first.s_id) + 1;
|
||||||
|
@ -1733,6 +1736,8 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool
|
||||||
it->offsets.push_back(static_cast<size_t>((path.first.i_id + delta_1st) * sizeof(unsigned int)));
|
it->offsets.push_back(static_cast<size_t>((path.first.i_id + delta_1st) * sizeof(unsigned int)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxGetApp().plater()->enable_preview_moves_slider(render_paths_count > 0);
|
||||||
|
|
||||||
#if ENABLE_GCODE_VIEWER_STATISTICS
|
#if ENABLE_GCODE_VIEWER_STATISTICS
|
||||||
for (const TBuffer& buffer : m_buffers) {
|
for (const TBuffer& buffer : m_buffers) {
|
||||||
m_statistics.render_paths_size += SLIC3R_STDVEC_MEMSIZE(buffer.render_paths, RenderPath);
|
m_statistics.render_paths_size += SLIC3R_STDVEC_MEMSIZE(buffer.render_paths, RenderPath);
|
||||||
|
|
|
@ -1162,8 +1162,7 @@ void Preview::update_moves_slider()
|
||||||
|
|
||||||
std::vector<double> values(view.endpoints.last - view.endpoints.first + 1);
|
std::vector<double> values(view.endpoints.last - view.endpoints.first + 1);
|
||||||
unsigned int count = 0;
|
unsigned int count = 0;
|
||||||
for (unsigned int i = view.endpoints.first; i <= view.endpoints.last; ++i)
|
for (unsigned int i = view.endpoints.first; i <= view.endpoints.last; ++i) {
|
||||||
{
|
|
||||||
values[count++] = static_cast<double>(i + 1);
|
values[count++] = static_cast<double>(i + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1171,6 +1170,12 @@ void Preview::update_moves_slider()
|
||||||
m_moves_slider->SetMaxValue(view.endpoints.last - view.endpoints.first);
|
m_moves_slider->SetMaxValue(view.endpoints.last - view.endpoints.first);
|
||||||
m_moves_slider->SetSelectionSpan(view.current.first - view.endpoints.first, view.current.last - view.endpoints.first);
|
m_moves_slider->SetSelectionSpan(view.current.first - view.endpoints.first, view.current.last - view.endpoints.first);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Preview::enable_moves_slider(bool enable)
|
||||||
|
{
|
||||||
|
if (m_moves_slider != nullptr)
|
||||||
|
m_moves_slider->Enable(enable);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
void Preview::update_double_slider_from_canvas(wxKeyEvent & event)
|
void Preview::update_double_slider_from_canvas(wxKeyEvent & event)
|
||||||
{
|
{
|
||||||
|
|
|
@ -194,6 +194,7 @@ Preview(wxWindow* parent, Model* model, DynamicPrintConfig* config,
|
||||||
#if ENABLE_GCODE_VIEWER
|
#if ENABLE_GCODE_VIEWER
|
||||||
void update_bottom_toolbar();
|
void update_bottom_toolbar();
|
||||||
void update_moves_slider();
|
void update_moves_slider();
|
||||||
|
void enable_moves_slider(bool enable);
|
||||||
void hide_layers_slider();
|
void hide_layers_slider();
|
||||||
#endif // ENABLE_GCODE_VIEWER
|
#endif // ENABLE_GCODE_VIEWER
|
||||||
|
|
||||||
|
|
|
@ -1612,9 +1612,8 @@ struct Plater::priv
|
||||||
#if ENABLE_GCODE_VIEWER
|
#if ENABLE_GCODE_VIEWER
|
||||||
void update_preview_bottom_toolbar();
|
void update_preview_bottom_toolbar();
|
||||||
void update_preview_moves_slider();
|
void update_preview_moves_slider();
|
||||||
#endif // ENABLE_GCODE_VIEWER
|
void enable_preview_moves_slider(bool enable);
|
||||||
|
|
||||||
#if ENABLE_GCODE_VIEWER
|
|
||||||
void reset_gcode_toolpaths();
|
void reset_gcode_toolpaths();
|
||||||
#endif // ENABLE_GCODE_VIEWER
|
#endif // ENABLE_GCODE_VIEWER
|
||||||
|
|
||||||
|
@ -4105,9 +4104,12 @@ void Plater::priv::update_preview_moves_slider()
|
||||||
{
|
{
|
||||||
preview->update_moves_slider();
|
preview->update_moves_slider();
|
||||||
}
|
}
|
||||||
#endif // ENABLE_GCODE_VIEWER
|
|
||||||
|
|
||||||
#if ENABLE_GCODE_VIEWER
|
void Plater::priv::enable_preview_moves_slider(bool enable)
|
||||||
|
{
|
||||||
|
preview->enable_moves_slider(enable);
|
||||||
|
}
|
||||||
|
|
||||||
void Plater::priv::reset_gcode_toolpaths()
|
void Plater::priv::reset_gcode_toolpaths()
|
||||||
{
|
{
|
||||||
preview->get_canvas3d()->reset_gcode_toolpaths();
|
preview->get_canvas3d()->reset_gcode_toolpaths();
|
||||||
|
@ -5898,6 +5900,11 @@ void Plater::update_preview_moves_slider()
|
||||||
p->update_preview_moves_slider();
|
p->update_preview_moves_slider();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Plater::enable_preview_moves_slider(bool enable)
|
||||||
|
{
|
||||||
|
p->enable_preview_moves_slider(enable);
|
||||||
|
}
|
||||||
|
|
||||||
void Plater::reset_gcode_toolpaths()
|
void Plater::reset_gcode_toolpaths()
|
||||||
{
|
{
|
||||||
p->reset_gcode_toolpaths();
|
p->reset_gcode_toolpaths();
|
||||||
|
|
|
@ -316,6 +316,7 @@ public:
|
||||||
#if ENABLE_GCODE_VIEWER
|
#if ENABLE_GCODE_VIEWER
|
||||||
void update_preview_bottom_toolbar();
|
void update_preview_bottom_toolbar();
|
||||||
void update_preview_moves_slider();
|
void update_preview_moves_slider();
|
||||||
|
void enable_preview_moves_slider(bool enable);
|
||||||
|
|
||||||
void reset_gcode_toolpaths();
|
void reset_gcode_toolpaths();
|
||||||
void reset_last_loaded_gcode() { m_last_loaded_gcode = ""; }
|
void reset_last_loaded_gcode() { m_last_loaded_gcode = ""; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue