FIX: ObjectSetting changed when search plate

JIRA: STUDIO-5095

Signed-off-by: Kunlong Ma <kunlong.ma@bambulab.com>
Change-Id: I39b1ad997d51ac4224ff5ad2b3555f56da4bd911
This commit is contained in:
Kunlong Ma 2023-11-02 16:57:52 +08:00 committed by Lane.Wei
parent 23b2edda34
commit 8e246b4165
3 changed files with 20 additions and 3 deletions

View File

@ -212,10 +212,13 @@ bool ObjectSettings::update_settings_list()
if (type == itPlate) {
is_plate_settings = true;
int plate_id = objects_model->GetPlateIdByItem(item);
assert(plate_id >= 0);
static ModelConfig cfg;
auto plate = wxGetApp().plater()->get_partplate_list().get_curr_plate();
cfg.assign_config(*plate->config());
plate_configs.emplace(plate, &cfg);
PartPlateList& ppl = wxGetApp().plater()->get_partplate_list();
cfg.assign_config(*ppl.get_plate(plate_id)->config());
plate_configs.emplace(ppl.get_plate(plate_id), &cfg);
}
if (type != itObject && type != itVolume && type != itLayerRoot && type != itLayer) {
continue;

View File

@ -1364,6 +1364,19 @@ int ObjectDataViewModel::GetIdByItem(const wxDataViewItem& item) const
return it - m_objects.begin();
}
int ObjectDataViewModel::GetPlateIdByItem(const wxDataViewItem& item) const
{
if (!item.IsOk())
return -1;
ObjectDataViewModelNode* node = static_cast<ObjectDataViewModelNode*>(item.GetID());
auto it = find(m_plates.begin(), m_plates.end(), node);
if (it == m_plates.end())
return -1;
return it - m_plates.begin();
}
int ObjectDataViewModel::GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const
{
wxASSERT(item.IsOk());

View File

@ -370,6 +370,7 @@ public:
wxDataViewItem GetItemByLayerRange(const int obj_idx, const t_layer_height_range& layer_range);
int GetItemIdByLayerRange(const int obj_idx, const t_layer_height_range& layer_range);
int GetIdByItem(const wxDataViewItem& item) const;
int GetPlateIdByItem(const wxDataViewItem& item) const;
int GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const;
int GetObjectIdByItem(const wxDataViewItem& item) const;
int GetVolumeIdByItem(const wxDataViewItem& item) const;