FIX: fix the crash issue when dragging object in seq-print
Change-Id: If2fd7e2d4d41e6cde6c8d4824cf489e10700c91e
This commit is contained in:
parent
941df8ba8b
commit
81e723711a
2 changed files with 20 additions and 1 deletions
|
@ -1720,6 +1720,7 @@ wxDataViewItem ObjectDataViewModel::ReorganizeObjects( const int current_id, co
|
|||
return wxDataViewItem(nullptr);
|
||||
|
||||
ObjectDataViewModelNode* deleted_node = m_objects[current_id];
|
||||
ObjectDataViewModelNode* new_node = m_objects[new_id];
|
||||
ObjectDataViewModelNode* plate_node = deleted_node->m_parent;
|
||||
|
||||
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));
|
||||
|
||||
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));
|
||||
|
||||
//ItemChanged(wxDataViewItem(nullptr));
|
||||
|
|
|
@ -173,6 +173,18 @@ public:
|
|||
{
|
||||
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)
|
||||
{
|
||||
if (!m_container)
|
||||
|
|
Loading…
Reference in a new issue