Merge remote-tracking branch 'remotes/origin/master' into vb_faster_tabs

This commit is contained in:
bubnikv 2019-03-18 20:54:28 +01:00
commit 2fab555daf
7 changed files with 41 additions and 14 deletions

View file

@ -2022,6 +2022,8 @@ void ObjectList::update_selections_on_canvas()
void ObjectList::select_item(const wxDataViewItem& item)
{
if (! item.IsOk()) { return; }
m_prevent_list_events = true;
UnselectAll();

View file

@ -186,6 +186,7 @@ Preview::Preview(wxWindow* parent, Bed3D& bed, Camera& camera, GLToolbar& view_t
, m_loaded(false)
, m_enabled(false)
, m_schedule_background_process(schedule_background_process_func)
, m_volumes_cleanup_required(false)
{
if (init(parent, bed, camera, view_toolbar))
{
@ -363,18 +364,22 @@ void Preview::load_print()
load_print_as_sla();
}
void Preview::reload_print(bool force, bool keep_volumes)
void Preview::reload_print(bool keep_volumes)
{
if (!keep_volumes)
if (!IsShown())
{
m_volumes_cleanup_required = !keep_volumes;
return;
}
if (m_volumes_cleanup_required || !keep_volumes)
{
m_canvas->reset_volumes();
m_canvas->reset_legend_texture();
m_loaded = false;
m_volumes_cleanup_required = false;
}
if (!IsShown() && !force)
return;
load_print();
}
@ -554,15 +559,14 @@ static int find_close_layer_idx(const std::vector<double>& zs, double &z, double
return -1;
}
void Preview::update_double_slider(const std::vector<double>& layers_z, bool force_sliders_full_range)
void Preview::update_double_slider(const std::vector<double>& layers_z)
{
// Save the initial slider span.
double z_low = m_slider->GetLowerValueD();
double z_high = m_slider->GetHigherValueD();
bool was_empty = m_slider->GetMaxValue() == 0;
bool span_changed = layers_z.empty() || std::abs(layers_z.back() - m_slider->GetMaxValueD()) > 1e-6;
force_sliders_full_range |= was_empty | span_changed;
bool snap_to_min = force_sliders_full_range || m_slider->is_lower_at_min();
bool force_sliders_full_range = was_empty;
bool snap_to_min = force_sliders_full_range || m_slider->is_lower_at_min();
bool snap_to_max = force_sliders_full_range || m_slider->is_higher_at_max();
std::vector<std::pair<int, double>> values;

View file

@ -86,6 +86,8 @@ class Preview : public wxPanel
BackgroundSlicingProcess* m_process;
GCodePreviewData* m_gcode_preview_data;
bool m_volumes_cleanup_required;
// Calling this function object forces Plater::schedule_background_process.
std::function<void()> m_schedule_background_process;
@ -112,7 +114,7 @@ public:
void set_drop_target(wxDropTarget* target);
void load_print();
void reload_print(bool force = false, bool keep_volumes = false);
void reload_print(bool keep_volumes = false);
void refresh_print();
private:
@ -136,7 +138,7 @@ private:
// Create/Update/Reset double slider on 3dPreview
void create_double_slider();
void update_double_slider(const std::vector<double>& layers_z, bool force_sliders_full_range = false);
void update_double_slider(const std::vector<double>& layers_z);
void fill_slider_values(std::vector<std::pair<int, double>> &values,
const std::vector<double> &layers_z);
void reset_double_slider();

View file

@ -2388,7 +2388,7 @@ void Plater::priv::set_current_panel(wxPanel* panel)
{
this->q->reslice();
// keeps current gcode preview, if any
preview->reload_print(false, true);
preview->reload_print(true);
preview->set_canvas_as_dirty();
view_toolbar.select_item("Preview");
}