Browse Source

Add KnobEventHandler::setMouseDeceleration

pull/321/merge
falkTX 3 years ago
parent
commit
b8e8eb7a9a
2 changed files with 18 additions and 6 deletions
  1. +3
    -0
      dgl/EventHandlers.hpp
  2. +15
    -6
      dgl/src/EventHandlers.cpp

+ 3
- 0
dgl/EventHandlers.hpp View File

@@ -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);


+ 15
- 6
dgl/src/EventHandlers.cpp View File

@@ -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);


Loading…
Cancel
Save