bool TabStrip::DragAndDrop_HandleDrop(Gwen::DragAndDrop::Package* /*pPackage*/, int x, int y) { Gwen::Point LocalPos = CanvasPosToLocal(Gwen::Point(x, y)); Base* el = DragAndDrop::SourceControl; TabButton* pButton = el ? el->DynamicCastTabButton() : 0; TabControl* pTabControl = GetParent() ? GetParent()->DynamicCastTabControl() : 0; if (pTabControl && pButton) { if (pButton->GetTabControl() != pTabControl) { // We've moved tab controls! pTabControl->AddPage(pButton); } } Base* DroppedOn = GetControlAt(LocalPos.x, LocalPos.y); if (DroppedOn) { Gwen::Point DropPos = DroppedOn->CanvasPosToLocal(Gwen::Point(x, y)); DragAndDrop::SourceControl->BringNextToControl(DroppedOn, DropPos.x > DroppedOn->Width() / 2); } else { DragAndDrop::SourceControl->BringToFront(); } return true; }