From 817fb5adb39dc6b1d74b0c767abaf7786bf5e287 Mon Sep 17 00:00:00 2001
From: YuSanka <yusanka@gmail.com>
Date: Tue, 14 Aug 2018 15:35:54 +0200
Subject: [PATCH] Test of item_changed_selection(obj_idx)

---
 lib/Slic3r/GUI/Plater.pm              | 2 ++
 xs/src/slic3r/GUI/GUI_ObjectParts.cpp | 6 +++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm
index 062746e79..3632bb07c 100644
--- a/lib/Slic3r/GUI/Plater.pm
+++ b/lib/Slic3r/GUI/Plater.pm
@@ -1986,6 +1986,7 @@ sub on_config_change {
 
 sub item_changed_selection{
     my ($self, $obj_idx) = @_;
+    printf "BEGIN item_changed_selection : obj_idx = $obj_idx\n";
 
     $self->{canvas}->Refresh;
     if ($self->{canvas3D}) {
@@ -1996,6 +1997,7 @@ sub item_changed_selection{
         }
         Slic3r::GUI::_3DScene::render($self->{canvas3D});
     }
+    printf "END item_changed_selection";
 }
 
 sub collect_selections {
diff --git a/xs/src/slic3r/GUI/GUI_ObjectParts.cpp b/xs/src/slic3r/GUI/GUI_ObjectParts.cpp
index 3260b4d27..47be0b832 100644
--- a/xs/src/slic3r/GUI/GUI_ObjectParts.cpp
+++ b/xs/src/slic3r/GUI/GUI_ObjectParts.cpp
@@ -733,7 +733,7 @@ void unselect_objects()
     g_prevent_list_events = true;
     if (m_objects_ctrl->GetSelection()) {
         m_objects_ctrl->UnselectAll();
-        get_optgroup(ogFrequentlyObjectSettings)->disable();
+        part_selection_changed();
     }
     else
         printf("all items are UNSELECTED\n");
@@ -751,8 +751,6 @@ void select_current_object(int idx)
 	m_objects_ctrl->Select(m_objects_model->GetItemById(idx));
 	part_selection_changed();
 	g_prevent_list_events = false;
-
-	get_optgroup(ogFrequentlyObjectSettings)->enable();
 }
 
 void remove()
@@ -1359,11 +1357,13 @@ void part_selection_changed()
 
 		auto config = m_config;
         og->set_value("object_name", m_objects_model->GetName(item));
+        og->enable();
 		m_default_config = std::make_shared<DynamicPrintConfig>(*DynamicPrintConfig::new_from_defaults_keys(get_options(is_part)));
 	}
     else {
         wxString empty_str = wxEmptyString;
         og->set_value("object_name", empty_str);
+        og->disable();
         m_config = nullptr;
     }