void DbViewerPanel::OnDnDStart(wxTreeEvent& event) { ShapeList lstDnD; lstDnD.DeleteContents(true); DbItem* item = (DbItem*)m_treeDatabases->GetItemData(event.GetItem()); ErdPanel* pPanel = wxDynamicCast(m_mgr->GetActivePage(), ErdPanel); if(item != NULL) { if(pPanel) { Table* table = wxDynamicCast(item->GetData(), Table); if(table) { table = (Table*)table->Clone(); wxSFShapeBase* pShape = new dndTableShape(table); lstDnD.Append(pShape); pPanel->GetCanvas()->DoDragDrop(lstDnD); } View* view = wxDynamicCast(item->GetData(), View); if(view) { view = (View*)view->Clone(); wxSFShapeBase* pShape = new dndTableShape(view); lstDnD.Append(pShape); pPanel->GetCanvas()->DoDragDrop(lstDnD); } } } }