diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/PinoutWidgets/PinoutContainer.cpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/PinoutWidgets/PinoutContainer.cpp index 81b70dd9..26a97663 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/PinoutWidgets/PinoutContainer.cpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/PinoutWidgets/PinoutContainer.cpp @@ -50,4 +50,23 @@ namespace Widgets::PinoutWidgets QGraphicsView::keyReleaseEvent(event); } + + void PinoutContainer::mousePressEvent(QMouseEvent* event) { + if (this->dragMode() == QGraphicsView::DragMode::ScrollHandDrag) { + return QGraphicsView::mousePressEvent(event); + } + + const auto modifiers = event->modifiers(); + if ((modifiers & Qt::KeyboardModifier::ControlModifier) != 0) { + const auto viewSize = this->size(); + const auto sceneRect = this->pinoutScene->sceneRect(); + this->setDragMode( + sceneRect.width() > viewSize.width() || sceneRect.height() > viewSize.height() + ? QGraphicsView::DragMode::ScrollHandDrag + : QGraphicsView::DragMode::NoDrag + ); + } + + return QGraphicsView::mousePressEvent(event); + } } diff --git a/src/Insight/UserInterfaces/InsightWindow/Widgets/PinoutWidgets/PinoutContainer.hpp b/src/Insight/UserInterfaces/InsightWindow/Widgets/PinoutWidgets/PinoutContainer.hpp index 2f4d05c5..da28df0a 100644 --- a/src/Insight/UserInterfaces/InsightWindow/Widgets/PinoutWidgets/PinoutContainer.hpp +++ b/src/Insight/UserInterfaces/InsightWindow/Widgets/PinoutWidgets/PinoutContainer.hpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "src/Targets/TargetDescriptor.hpp" @@ -21,6 +22,7 @@ namespace Widgets::PinoutWidgets void resizeEvent(QResizeEvent* event) override; void keyPressEvent(QKeyEvent* event) override; void keyReleaseEvent(QKeyEvent* event) override; + void mousePressEvent(QMouseEvent* event) override; protected: const Targets::TargetDescriptor& targetDescriptor;