mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-30 22:15:32 +00:00
Merge branch 'drop'
This commit is contained in:
commit
2162f21550
4 changed files with 62 additions and 7 deletions
|
@ -179,7 +179,7 @@ CSMWorld::UniversalId CSMWorld::TableMimeData::returnMatching (CSMWorld::Univers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
throw std::runtime_error ("TableMimeData object does not hold object of the seeked type");
|
throw std::runtime_error ("TableMimeData object does not hold object of the sought type");
|
||||||
}
|
}
|
||||||
|
|
||||||
CSMWorld::UniversalId CSMWorld::TableMimeData::returnMatching (CSMWorld::ColumnBase::Display type) const
|
CSMWorld::UniversalId CSMWorld::TableMimeData::returnMatching (CSMWorld::ColumnBase::Display type) const
|
||||||
|
@ -201,7 +201,7 @@ CSMWorld::UniversalId CSMWorld::TableMimeData::returnMatching (CSMWorld::ColumnB
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
throw std::runtime_error ("TableMimeData object does not hold object of the seeked type");
|
throw std::runtime_error ("TableMimeData object does not hold object of the sought type");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CSMWorld::TableMimeData::fromDocument (const CSMDoc::Document& document) const
|
bool CSMWorld::TableMimeData::fromDocument (const CSMDoc::Document& document) const
|
||||||
|
|
|
@ -64,3 +64,9 @@ void CSVRender::EditMode::dragCompleted() {}
|
||||||
void CSVRender::EditMode::dragAborted() {}
|
void CSVRender::EditMode::dragAborted() {}
|
||||||
|
|
||||||
void CSVRender::EditMode::dragWheel (int diff, double speedFactor) {}
|
void CSVRender::EditMode::dragWheel (int diff, double speedFactor) {}
|
||||||
|
|
||||||
|
void CSVRender::EditMode::dragEnterEvent (QDragEnterEvent *event) {}
|
||||||
|
|
||||||
|
void CSVRender::EditMode::dropEvent (QDropEvent* event) {}
|
||||||
|
|
||||||
|
void CSVRender::EditMode::dragMoveEvent (QDragMoveEvent *event) {}
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
|
|
||||||
#include "../widget/modebutton.hpp"
|
#include "../widget/modebutton.hpp"
|
||||||
|
|
||||||
|
class QDragEnterEvent;
|
||||||
|
class QDropEvent;
|
||||||
|
class QDragMoveEvent;
|
||||||
|
|
||||||
namespace CSVRender
|
namespace CSVRender
|
||||||
{
|
{
|
||||||
class WorldspaceWidget;
|
class WorldspaceWidget;
|
||||||
|
@ -79,6 +83,15 @@ namespace CSVRender
|
||||||
|
|
||||||
/// Default-implementation: ignored
|
/// Default-implementation: ignored
|
||||||
virtual void dragWheel (int diff, double speedFactor);
|
virtual void dragWheel (int diff, double speedFactor);
|
||||||
|
|
||||||
|
/// Default-implementation: ignored
|
||||||
|
virtual void dragEnterEvent (QDragEnterEvent *event);
|
||||||
|
|
||||||
|
/// Default-implementation: ignored
|
||||||
|
virtual void dropEvent (QDropEvent* event);
|
||||||
|
|
||||||
|
/// Default-implementation: ignored
|
||||||
|
virtual void dragMoveEvent (QDragMoveEvent *event);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -317,14 +317,43 @@ CSMDoc::Document& CSVRender::WorldspaceWidget::getDocument()
|
||||||
|
|
||||||
void CSVRender::WorldspaceWidget::dragEnterEvent (QDragEnterEvent* event)
|
void CSVRender::WorldspaceWidget::dragEnterEvent (QDragEnterEvent* event)
|
||||||
{
|
{
|
||||||
event->accept();
|
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)
|
void CSVRender::WorldspaceWidget::dragMoveEvent(QDragMoveEvent *event)
|
||||||
{
|
{
|
||||||
event->accept();
|
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)
|
bool CSVRender::WorldspaceWidget::storeMappingSetting (const CSMPrefs::Setting *setting)
|
||||||
{
|
{
|
||||||
|
@ -428,8 +457,15 @@ void CSVRender::WorldspaceWidget::dropEvent (QDropEvent* event)
|
||||||
|
|
||||||
if (mime->fromDocument (mDocument))
|
if (mime->fromDocument (mDocument))
|
||||||
{
|
{
|
||||||
emit dataDropped(mime->getData());
|
if (mime->holdsType (CSMWorld::UniversalId::Type_Cell) ||
|
||||||
} //not handling drops from different documents at the moment
|
mime->holdsType (CSMWorld::UniversalId::Type_Cell_Missing) ||
|
||||||
|
mime->holdsType (CSMWorld::UniversalId::Type_DebugProfile))
|
||||||
|
{
|
||||||
|
emit dataDropped(mime->getData());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
dynamic_cast<EditMode&> (*mEditMode->getCurrent()).dropEvent (event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSVRender::WorldspaceWidget::runRequest (const std::string& profile)
|
void CSVRender::WorldspaceWidget::runRequest (const std::string& profile)
|
||||||
|
|
Loading…
Reference in a new issue