|
|
|
@ -317,15 +317,44 @@ CSMDoc::Document& CSVRender::WorldspaceWidget::getDocument()
|
|
|
|
|
|
|
|
|
|
void CSVRender::WorldspaceWidget::dragEnterEvent (QDragEnterEvent* event)
|
|
|
|
|
{
|
|
|
|
|
const CSMWorld::TableMimeData* mime = dynamic_cast<const CSMWorld::TableMimeData*> (event->mimeData());
|
|
|
|
|
if (!mime) // May happen when non-records (e.g. plain text) are dragged and dropped
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (mime->fromDocument (mDocument))
|
|
|
|
|
{
|
|
|
|
|
if (mime->holdsType (CSMWorld::UniversalId::Type_Cell) ||
|
|
|
|
|
mime->holdsType (CSMWorld::UniversalId::Type_Cell_Missing) ||
|
|
|
|
|
mime->holdsType (CSMWorld::UniversalId::Type_DebugProfile))
|
|
|
|
|
{
|
|
|
|
|
// These drops are handled through the subview object.
|
|
|
|
|
event->accept();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
dynamic_cast<EditMode&> (*mEditMode->getCurrent()).dragEnterEvent (event);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CSVRender::WorldspaceWidget::dragMoveEvent(QDragMoveEvent *event)
|
|
|
|
|
{
|
|
|
|
|
const CSMWorld::TableMimeData* mime = dynamic_cast<const CSMWorld::TableMimeData*> (event->mimeData());
|
|
|
|
|
if (!mime) // May happen when non-records (e.g. plain text) are dragged and dropped
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (mime->fromDocument (mDocument))
|
|
|
|
|
{
|
|
|
|
|
if (mime->holdsType (CSMWorld::UniversalId::Type_Cell) ||
|
|
|
|
|
mime->holdsType (CSMWorld::UniversalId::Type_Cell_Missing) ||
|
|
|
|
|
mime->holdsType (CSMWorld::UniversalId::Type_DebugProfile))
|
|
|
|
|
{
|
|
|
|
|
// These drops are handled through the subview object.
|
|
|
|
|
event->accept();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
dynamic_cast<EditMode&> (*mEditMode->getCurrent()).dragMoveEvent (event);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool CSVRender::WorldspaceWidget::storeMappingSetting (const CSMPrefs::Setting *setting)
|
|
|
|
|
{
|
|
|
|
|
if (setting->getParent()->getKey()!="3D Scene Input")
|
|
|
|
@ -427,9 +456,16 @@ void CSVRender::WorldspaceWidget::dropEvent (QDropEvent* event)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (mime->fromDocument (mDocument))
|
|
|
|
|
{
|
|
|
|
|
if (mime->holdsType (CSMWorld::UniversalId::Type_Cell) ||
|
|
|
|
|
mime->holdsType (CSMWorld::UniversalId::Type_Cell_Missing) ||
|
|
|
|
|
mime->holdsType (CSMWorld::UniversalId::Type_DebugProfile))
|
|
|
|
|
{
|
|
|
|
|
emit dataDropped(mime->getData());
|
|
|
|
|
} //not handling drops from different documents at the moment
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
dynamic_cast<EditMode&> (*mEditMode->getCurrent()).dropEvent (event);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CSVRender::WorldspaceWidget::runRequest (const std::string& profile)
|
|
|
|
|