From ffcac528d54195092a8ab2e9ab6f4ed39bcaebbc Mon Sep 17 00:00:00 2001 From: Tomas Pavlicek Date: Mon, 26 Aug 2019 22:51:10 +0200 Subject: [PATCH] TechDraw: Middle button panning --- src/Mod/TechDraw/Gui/QGVPage.cpp | 29 ++++++++++++++++++++++++++++- src/Mod/TechDraw/Gui/QGVPage.h | 3 +++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index e2c77e2043..129519dabf 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -116,7 +116,8 @@ QGVPage::QGVPage(ViewProviderPage *vp, QGraphicsScene* s, QWidget *parent) pageTemplate(0), m_renderer(Native), drawBkg(true), - m_vpPage(0) + m_vpPage(0), + panningActive(false) { assert(vp); m_vpPage = vp; @@ -1112,12 +1113,33 @@ void QGVPage::leaveEvent(QEvent * event) void QGVPage::mousePressEvent(QMouseEvent *event) { + if (event->button() == Qt::MiddleButton) { + panOrigin = event->pos(); + panningActive = true; + event->accept(); + + QApplication::setOverrideCursor(Qt::ClosedHandCursor); + } + QGraphicsView::mousePressEvent(event); } void QGVPage::mouseMoveEvent(QMouseEvent *event) { balloonCursorPos = event->pos(); + + if (panningActive) { + QScrollBar *horizontalScrollbar = horizontalScrollBar(); + QScrollBar *verticalScrollbar = verticalScrollBar(); + QPoint direction = event->pos() - panOrigin; + + horizontalScrollbar->setValue(horizontalScrollbar->value() - m_reversePan*direction.x()); + verticalScrollbar->setValue(verticalScrollbar->value() - m_reverseScroll*direction.y()); + + panOrigin = event->pos(); + event->accept(); + } + QGraphicsView::mouseMoveEvent(event); } @@ -1152,6 +1174,11 @@ void QGVPage::mouseReleaseEvent(QMouseEvent *event) getDrawPage()->balloonParent->X.setValue(x); } + if (event->button()&Qt::MiddleButton) { + QApplication::restoreOverrideCursor(); + panningActive = false; + } + QGraphicsView::mouseReleaseEvent(event); viewport()->setCursor(Qt::ArrowCursor); } diff --git a/src/Mod/TechDraw/Gui/QGVPage.h b/src/Mod/TechDraw/Gui/QGVPage.h index 923abefcb0..fbddd2f3c4 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.h +++ b/src/Mod/TechDraw/Gui/QGVPage.h @@ -156,6 +156,9 @@ private: QLabel *balloonCursor; QPoint balloonCursorPos; void cancelBalloonPlacing(void); + + QPoint panOrigin; + bool panningActive; }; } // namespace