+ virtual bool ItemsDeleted(wxDataViewItem const& parent, wxDataViewItemArray const& items)
+ {
+ bool noFailureFlag;
+
+ DataBrowserItemID* itemIDs;
+
+ wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->m_dataViewControlPtr->GetPeer()));
+
+ size_t noOfEntries;
+
+
+ wxCHECK_MSG(dataViewCtrlPtr != NULL,false,_("Data view control is not correctly initialized"));
+ // convert all valid data view items to data browser items:
+ itemIDs = ::CreateDataBrowserItemIDArray(noOfEntries,items);
+ // when this method is called and currently an item is being edited this item may have already been deleted in the model (the passed item and the being edited item have
+ // not to be identical because the being edited item might be below the passed item in the hierarchy);
+ // to prevent the control trying to ask the model to update an already deleted item the control is informed that currently a deleting process
+ // has been started and that variables can currently not be updated even when requested by the system:
+ dataViewCtrlPtr->SetDeleting(true);
+ // insert all valid items into control:
+ noFailureFlag = ((noOfEntries == 0) ||
+ !(parent.IsOk()) && (this->m_dataViewControlPtr->RemoveItems(kDataBrowserNoItem,noOfEntries,itemIDs,kDataBrowserItemNoProperty) == noErr) ||
+ parent.IsOk() && (this->m_dataViewControlPtr->RemoveItems(reinterpret_cast<DataBrowserItemID>(parent.GetID()),noOfEntries,itemIDs,kDataBrowserItemNoProperty) == noErr));
+ // enable automatic updating again:
+ dataViewCtrlPtr->SetDeleting(false);
+ // give allocated array space free again:
+ delete[] itemIDs;
+ // done:
+ return noFailureFlag;
+ } /* ItemsDeleted(wxDataViewItem const&, wxDataViewItemArray const&) */
+