Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuSanka <yusanka@gmail.com>2019-09-16 11:22:26 +0300
committerYuSanka <yusanka@gmail.com>2019-09-16 11:22:26 +0300
commit284355d3786d80687a37067d1083d6f70963aa5f (patch)
treee946ad1f7fd2d5d094f9f4d3854234c777c85c24 /src/slic3r/GUI/GUI_ObjectSettings.cpp
parent145cf294c9d2bdb87b8ccf8d1c6ba9d8ef16425c (diff)
Fix of #2878 (endless warning loop in configuration update)
Diffstat (limited to 'src/slic3r/GUI/GUI_ObjectSettings.cpp')
-rw-r--r--src/slic3r/GUI/GUI_ObjectSettings.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp
index 0c10c5460..adb549617 100644
--- a/src/slic3r/GUI/GUI_ObjectSettings.cpp
+++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp
@@ -168,6 +168,23 @@ bool ObjectSettings::update_settings_list()
return true;
}
+bool ObjectSettings::add_missed_options(DynamicPrintConfig* config_to, const DynamicPrintConfig& config_from)
+{
+ bool is_added = false;
+ if (wxGetApp().plater()->printer_technology() == ptFFF)
+ {
+ if (config_to->has("fill_density") && !config_to->has("fill_pattern"))
+ {
+ if (config_from.option<ConfigOptionPercent>("fill_density")->value == 100) {
+ config_to->set_key_value("fill_pattern", config_from.option("fill_pattern")->clone());
+ is_added = true;
+ }
+ }
+ }
+
+ return is_added;
+}
+
void ObjectSettings::update_config_values(DynamicPrintConfig* config)
{
const auto objects_model = wxGetApp().obj_list()->GetModel();
@@ -185,6 +202,12 @@ void ObjectSettings::update_config_values(DynamicPrintConfig* config)
auto load_config = [this, config, &main_config]()
{
+ /* Additional check for overrided options.
+ * There is a case, when some options should to be added,
+ * to avoid check loop in the next configuration update
+ */
+ bool is_added = add_missed_options(config, main_config);
+
// load checked values from main_config to config
config->apply_only(main_config, config->keys(), true);
// Initialize UI components with the config values.
@@ -192,6 +215,14 @@ void ObjectSettings::update_config_values(DynamicPrintConfig* config)
og->reload_config();
// next config check
update_config_values(config);
+
+ if (is_added) {
+ wxTheApp->CallAfter([this]() {
+ wxWindowUpdateLocker noUpdates(m_parent);
+ update_settings_list();
+ m_parent->Layout();
+ });
+ }
};
auto get_field = [this](const t_config_option_key & opt_key, int opt_index)