##// END OF EJS Templates
Keep the selection zones when a graph is dropped in another synchro zone
Keep the selection zones when a graph is dropped in another synchro zone

File last commit:

r1048:1eed201e150e
r1048:1eed201e150e
Show More
VisualizationDragWidget.cpp
61 lines | 1.6 KiB | text/x-c | CppLexer
/ gui / src / Visualization / VisualizationDragWidget.cpp
#include "Visualization/VisualizationDragWidget.h"
#include "Visualization/VisualizationDragDropContainer.h"
#include <QApplication>
#include <QMouseEvent>
#include <SqpApplication.h>
struct VisualizationDragWidget::VisualizationDragWidgetPrivate {
QPoint m_DragStartPosition;
bool m_DragStartPositionValid = false;
explicit VisualizationDragWidgetPrivate() {}
};
VisualizationDragWidget::VisualizationDragWidget(QWidget *parent)
: QWidget{parent}, impl{spimpl::make_unique_impl<VisualizationDragWidgetPrivate>()}
{
}
QPixmap VisualizationDragWidget::customDragPixmap(const QPoint &dragPosition)
{
Q_UNUSED(dragPosition);
return QPixmap();
}
void VisualizationDragWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
impl->m_DragStartPosition = event->pos();
}
impl->m_DragStartPositionValid = isDragAllowed();
QWidget::mousePressEvent(event);
}
void VisualizationDragWidget::mouseMoveEvent(QMouseEvent *event)
{
if (!impl->m_DragStartPositionValid || !isDragAllowed()) {
return;
}
if (!(event->buttons() & Qt::LeftButton)) {
return;
}
if (sqpApp->plotsInteractionMode() == SqpApplication::PlotsInteractionMode::DragAndDrop
|| event->modifiers().testFlag(Qt::AltModifier)) {
if ((event->pos() - impl->m_DragStartPosition).manhattanLength()
< QApplication::startDragDistance()) {
return;
}
emit dragDetected(this, impl->m_DragStartPosition);
}
QWidget::mouseMoveEvent(event);
}