FIX: fix the crash issue when dragging object in seq-print
Change-Id: If2fd7e2d4d41e6cde6c8d4824cf489e10700c91e
This commit is contained in:
parent
941df8ba8b
commit
81e723711a
|
@ -1720,6 +1720,7 @@ wxDataViewItem ObjectDataViewModel::ReorganizeObjects( const int current_id, co
|
||||||
return wxDataViewItem(nullptr);
|
return wxDataViewItem(nullptr);
|
||||||
|
|
||||||
ObjectDataViewModelNode* deleted_node = m_objects[current_id];
|
ObjectDataViewModelNode* deleted_node = m_objects[current_id];
|
||||||
|
ObjectDataViewModelNode* new_node = m_objects[new_id];
|
||||||
ObjectDataViewModelNode* plate_node = deleted_node->m_parent;
|
ObjectDataViewModelNode* plate_node = deleted_node->m_parent;
|
||||||
|
|
||||||
m_objects.erase(m_objects.begin() + current_id);
|
m_objects.erase(m_objects.begin() + current_id);
|
||||||
|
@ -1727,7 +1728,13 @@ wxDataViewItem ObjectDataViewModel::ReorganizeObjects( const int current_id, co
|
||||||
ItemDeleted(wxDataViewItem(deleted_node->m_parent), wxDataViewItem(deleted_node));
|
ItemDeleted(wxDataViewItem(deleted_node->m_parent), wxDataViewItem(deleted_node));
|
||||||
|
|
||||||
m_objects.emplace(m_objects.begin() + new_id, deleted_node);
|
m_objects.emplace(m_objects.begin() + new_id, deleted_node);
|
||||||
plate_node->Insert(deleted_node, new_id);
|
int plate_child_index = plate_node->GetChildIndex(new_node);
|
||||||
|
if (current_id < new_id)
|
||||||
|
plate_node->Insert(deleted_node, plate_child_index+1);
|
||||||
|
else {
|
||||||
|
//should not happen
|
||||||
|
plate_node->Insert(deleted_node, plate_child_index);
|
||||||
|
}
|
||||||
ItemAdded(wxDataViewItem(deleted_node->m_parent), wxDataViewItem(deleted_node));
|
ItemAdded(wxDataViewItem(deleted_node->m_parent), wxDataViewItem(deleted_node));
|
||||||
|
|
||||||
//ItemChanged(wxDataViewItem(nullptr));
|
//ItemChanged(wxDataViewItem(nullptr));
|
||||||
|
|
|
@ -173,6 +173,18 @@ public:
|
||||||
{
|
{
|
||||||
return m_children.Item(n);
|
return m_children.Item(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int GetChildIndex(ObjectDataViewModelNode* child) const
|
||||||
|
{
|
||||||
|
size_t child_count = GetChildCount();
|
||||||
|
for (int index = 0; index < child_count; index++)
|
||||||
|
{
|
||||||
|
if (m_children.Item(index) == child)
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
void Insert(ObjectDataViewModelNode* child, unsigned int n)
|
void Insert(ObjectDataViewModelNode* child, unsigned int n)
|
||||||
{
|
{
|
||||||
if (!m_container)
|
if (!m_container)
|
||||||
|
|
Loading…
Reference in New Issue