From 92b37dc1e64082fcb1eef63439d44e13528e565a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20B=C3=A5ngens?= Date: Mon, 5 Apr 2021 18:47:39 +0200 Subject: [PATCH 1/2] knob input features --- dgl/ImageWidgets.hpp | 1 + dgl/src/ImageWidgets.cpp | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/dgl/ImageWidgets.hpp b/dgl/ImageWidgets.hpp index ac8a3abb..4380d2b3 100644 --- a/dgl/ImageWidgets.hpp +++ b/dgl/ImageWidgets.hpp @@ -150,6 +150,7 @@ private: int fRotationAngle; bool fDragging; + bool fRightClicked; int fLastX; int fLastY; diff --git a/dgl/src/ImageWidgets.cpp b/dgl/src/ImageWidgets.cpp index de94ca02..a0a2b7d1 100644 --- a/dgl/src/ImageWidgets.cpp +++ b/dgl/src/ImageWidgets.cpp @@ -217,6 +217,7 @@ ImageKnob::ImageKnob(Window& parent, const Image& image, Orientation orientation fOrientation(orientation), fRotationAngle(0), fDragging(false), + fRightClicked(false), fLastX(0), fLastY(0), fCallback(nullptr), @@ -245,6 +246,7 @@ ImageKnob::ImageKnob(Widget* widget, const Image& image, Orientation orientation fOrientation(orientation), fRotationAngle(0), fDragging(false), + fRightClicked(false), fLastX(0), fLastY(0), fCallback(nullptr), @@ -273,6 +275,7 @@ ImageKnob::ImageKnob(const ImageKnob& imageKnob) fOrientation(imageKnob.fOrientation), fRotationAngle(imageKnob.fRotationAngle), fDragging(false), + fRightClicked(false), fLastX(0), fLastY(0), fCallback(imageKnob.fCallback), @@ -300,7 +303,8 @@ ImageKnob& ImageKnob::operator=(const ImageKnob& imageKnob) fUsingLog = imageKnob.fUsingLog; fOrientation = imageKnob.fOrientation; fRotationAngle = imageKnob.fRotationAngle; - fDragging = false; + fDragging = false; + fRightClicked = false; fLastX = 0; fLastY = 0; fCallback = imageKnob.fCallback; @@ -515,9 +519,13 @@ void ImageKnob::onDisplay() bool ImageKnob::onMouse(const MouseEvent& ev) { - if (ev.button != 1) + if (ev.button > 3 || ev.button < 1) return false; + if (ev.button == 3) + fRightClicked = true; + else fRightClicked = false; + if (ev.press) { if (! contains(ev.pos)) @@ -563,7 +571,8 @@ bool ImageKnob::onMotion(const MotionEvent& ev) { if (const int movX = ev.pos.getX() - fLastX) { - d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + if (fRightClicked) d = d*10.0f; value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * float(movX)); doVal = true; } @@ -572,7 +581,8 @@ bool ImageKnob::onMotion(const MotionEvent& ev) { if (const int movY = fLastY - ev.pos.getY()) { - d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + if (fRightClicked) d = d*10.0f; value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * float(movY)); doVal = true; } From 5f41b12e962c122955d332d7bb980d39ec0baeee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20B=C3=A5ngens?= Date: Tue, 6 Apr 2021 14:49:22 +0200 Subject: [PATCH 2/2] use ternary operator --- dgl/src/ImageWidgets.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dgl/src/ImageWidgets.cpp b/dgl/src/ImageWidgets.cpp index a0a2b7d1..1b364a2b 100644 --- a/dgl/src/ImageWidgets.cpp +++ b/dgl/src/ImageWidgets.cpp @@ -522,9 +522,7 @@ bool ImageKnob::onMouse(const MouseEvent& ev) if (ev.button > 3 || ev.button < 1) return false; - if (ev.button == 3) - fRightClicked = true; - else fRightClicked = false; + fRightClicked = (ev.button == 3) ? true : false; if (ev.press) {