mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#467) Handling drag move events to get the proposed drop action
The tree view model's drag & drop handle is notified about the proposed action in drag move events.
This commit is contained in:
parent
52f1e47576
commit
1b83bfb7f0
@ -58,6 +58,7 @@ public:
|
||||
virtual QMimeData* mimeData(const QModelIndexList &indexes) const = 0;
|
||||
virtual QStringList mimeTypes() const = 0;
|
||||
virtual void endDrag() = 0;
|
||||
virtual void setProposedAction(Qt::DropAction action) = 0;
|
||||
};
|
||||
|
||||
inline PdmUiDragDropHandle::~PdmUiDragDropHandle() { }
|
||||
|
@ -87,6 +87,16 @@ public:
|
||||
virtual ~PdmUiTreeViewWidget() {};
|
||||
|
||||
protected:
|
||||
virtual void dragMoveEvent(QDragMoveEvent* event)
|
||||
{
|
||||
caf::PdmUiTreeViewModel* treeViewModel = dynamic_cast<caf::PdmUiTreeViewModel*>(model());
|
||||
if (treeViewModel)
|
||||
{
|
||||
treeViewModel->updateDragDropHandleFromEvent(event);
|
||||
}
|
||||
|
||||
QTreeView::dragMoveEvent(event);
|
||||
}
|
||||
virtual void dragLeaveEvent(QDragLeaveEvent* event)
|
||||
{
|
||||
caf::PdmUiTreeViewModel* treeViewModel = dynamic_cast<caf::PdmUiTreeViewModel*>(model());
|
||||
@ -94,6 +104,8 @@ protected:
|
||||
{
|
||||
treeViewModel->endDrag();
|
||||
}
|
||||
|
||||
QTreeView::dragLeaveEvent(event);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -45,6 +45,7 @@
|
||||
#include "cafPdmUiTreeViewEditor.h"
|
||||
|
||||
#include <QTreeView>
|
||||
#include <QDragMoveEvent>
|
||||
|
||||
namespace caf
|
||||
{
|
||||
@ -794,6 +795,17 @@ void PdmUiTreeViewModel::setDragDropHandle(PdmUiDragDropHandle* dragDropHandle)
|
||||
m_dragDropHandle = dragDropHandle;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void PdmUiTreeViewModel::updateDragDropHandleFromEvent(const QDragMoveEvent* event)
|
||||
{
|
||||
if (m_dragDropHandle && event)
|
||||
{
|
||||
m_dragDropHandle->setProposedAction(event->proposedAction());
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -41,6 +41,8 @@
|
||||
#include <QAbstractItemModel>
|
||||
#include <QStringList>
|
||||
|
||||
class QDragMoveEvent;
|
||||
|
||||
namespace caf
|
||||
{
|
||||
|
||||
@ -74,6 +76,7 @@ public:
|
||||
QModelIndex findModelIndex(const PdmUiItem* object) const;
|
||||
|
||||
void setDragDropHandle(PdmUiDragDropHandle* dragDropHandle);
|
||||
void updateDragDropHandleFromEvent(const QDragMoveEvent* event);
|
||||
void endDrag();
|
||||
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user