aboutsummaryrefslogtreecommitdiffstats
path: root/gui/fpgaviewwidget.cc
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2019-01-18 16:41:20 +0100
committerSylvain Munaut <tnt@246tNt.com>2019-02-22 12:31:23 +0100
commit9539f57c74717f98a1235dbe8db82906cc7f9d84 (patch)
tree6330cd4c6b49d2c9d77e98dc3cbbaaf26d53ad5f /gui/fpgaviewwidget.cc
parente8d3aaaf34895a073e4023192d97fc936d090990 (diff)
downloadnextpnr-9539f57c74717f98a1235dbe8db82906cc7f9d84.tar.gz
nextpnr-9539f57c74717f98a1235dbe8db82906cc7f9d84.tar.bz2
nextpnr-9539f57c74717f98a1235dbe8db82906cc7f9d84.zip
gui: Allow shift+drag to move around the view
right & middle clight are really inconvenient when working with a touchpad in tap-to-click mode Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Diffstat (limited to 'gui/fpgaviewwidget.cc')
-rw-r--r--gui/fpgaviewwidget.cc19
1 files changed, 14 insertions, 5 deletions
diff --git a/gui/fpgaviewwidget.cc b/gui/fpgaviewwidget.cc
index 0ad90527..ac6cd969 100644
--- a/gui/fpgaviewwidget.cc
+++ b/gui/fpgaviewwidget.cc
@@ -644,12 +644,16 @@ void FPGAViewWidget::mousePressEvent(QMouseEvent *event)
if (io.WantCaptureMouse)
return;
- if (event->buttons() & Qt::RightButton || event->buttons() & Qt::MidButton) {
+ bool shift = QApplication::keyboardModifiers().testFlag(Qt::ShiftModifier);
+ bool ctrl = QApplication::keyboardModifiers().testFlag(Qt::ControlModifier);
+ bool btn_right = event->buttons() & Qt::RightButton;
+ bool btn_mid = event->buttons() & Qt::MidButton;
+ bool btn_left = event->buttons() & Qt::LeftButton;
+
+ if (btn_right || btn_mid || (btn_left && shift)) {
lastDragPos_ = event->pos();
}
- if (event->buttons() & Qt::LeftButton) {
- bool ctrl = QApplication::keyboardModifiers().testFlag(Qt::ControlModifier);
-
+ if (btn_left && !shift) {
auto world = mouseToWorldCoordinates(event->x(), event->y());
auto closestOr = pickElement(world.x(), world.y());
if (!closestOr) {
@@ -681,7 +685,12 @@ void FPGAViewWidget::mouseMoveEvent(QMouseEvent *event)
if (io.WantCaptureMouse)
return;
- if (event->buttons() & Qt::RightButton || event->buttons() & Qt::MidButton) {
+ bool shift = QApplication::keyboardModifiers().testFlag(Qt::ShiftModifier);
+ bool btn_right = event->buttons() & Qt::RightButton;
+ bool btn_mid = event->buttons() & Qt::MidButton;
+ bool btn_left = event->buttons() & Qt::LeftButton;
+
+ if (btn_right || btn_mid || (btn_left && shift)) {
const int dx = event->x() - lastDragPos_.x();
const int dy = event->y() - lastDragPos_.y();
lastDragPos_ = event->pos();