DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit b8e8eb7a9aff73239df6c2b225fb6dac1647904c
parent f2cb4e0f0c6fc901dcbff3fcbd02aec2aa0b9fb2
Author: falkTX <falktx@falktx.com>
Date:   Thu, 25 Aug 2022 08:59:14 +0100

Add KnobEventHandler::setMouseDeceleration

Diffstat:
Mdgl/EventHandlers.hpp | 3+++
Mdgl/src/EventHandlers.cpp | 21+++++++++++++++------
2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/dgl/EventHandlers.hpp b/dgl/EventHandlers.hpp @@ -147,6 +147,9 @@ public: void setCallback(Callback* callback) noexcept; + // default 200, higher means slower + void setMouseDeceleration(float accel) noexcept; + bool mouseEvent(const Widget::MouseEvent& ev); bool motionEvent(const Widget::MotionEvent& ev); bool scrollEvent(const Widget::ScrollEvent& ev); diff --git a/dgl/src/EventHandlers.cpp b/dgl/src/EventHandlers.cpp @@ -274,6 +274,7 @@ struct KnobEventHandler::PrivateData { SubWidget* const widget; KnobEventHandler::Callback* callback; + float accel; float minimum; float maximum; float step; @@ -292,8 +293,9 @@ struct KnobEventHandler::PrivateData { : self(s), widget(w), callback(nullptr), - minimum(0.0f), - maximum(1.0f), + accel(200.f), + minimum(0.f), + maximum(1.f), step(0.0f), value(0.5f), valueDef(value), @@ -309,6 +311,7 @@ struct KnobEventHandler::PrivateData { : self(s), widget(w), callback(other->callback), + accel(other->accel), minimum(other->minimum), maximum(other->maximum), step(other->step), @@ -325,6 +328,7 @@ struct KnobEventHandler::PrivateData { void assignFrom(PrivateData* const other) { callback = other->callback; + accel = other->accel; minimum = other->minimum; maximum = other->maximum; step = other->step; @@ -407,7 +411,7 @@ struct KnobEventHandler::PrivateData { case Horizontal: if (const double movX = ev.pos.getX() - lastX) { - d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + d = (ev.mod & kModifierControl) ? accel * 10.f : accel; value2 = (usingLog ? invlogscale(valueTmp) : valueTmp) + (float(maximum - minimum) / d * float(movX)); doVal = true; } @@ -415,7 +419,7 @@ struct KnobEventHandler::PrivateData { case Vertical: if (const double movY = lastY - ev.pos.getY()) { - d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + d = (ev.mod & kModifierControl) ? accel * 10.f : accel; value2 = (usingLog ? invlogscale(valueTmp) : valueTmp) + (float(maximum - minimum) / d * float(movY)); doVal = true; } @@ -426,7 +430,7 @@ struct KnobEventHandler::PrivateData { if (const double mov = movX + movY) { - d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + d = (ev.mod & kModifierControl) ? accel * 10.f : accel; value2 = (usingLog ? invlogscale(valueTmp) : valueTmp) + (float(maximum - minimum) / d * float(mov)); doVal = true; } @@ -477,7 +481,7 @@ struct KnobEventHandler::PrivateData { return false; const float dir = (ev.delta.getY() > 0.f) ? 1.f : -1.f; - const float d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + const float d = (ev.mod & kModifierControl) ? accel * 10.f : accel; float value2 = (usingLog ? invlogscale(valueTmp) : valueTmp) + ((maximum - minimum) / d * 10.f * dir); @@ -626,6 +630,11 @@ void KnobEventHandler::setCallback(Callback* const callback) noexcept pData->callback = callback; } +void KnobEventHandler::setMouseDeceleration(float accel) noexcept +{ + pData->accel = accel; +} + bool KnobEventHandler::mouseEvent(const Widget::MouseEvent& ev) { return pData->mouseEvent(ev);