Browse Source

More improvements to KnobEventHandler stepped movement

pull/321/merge
falkTX 3 years ago
parent
commit
c5d9a72038
1 changed files with 10 additions and 3 deletions
  1. +10
    -3
      dgl/src/EventHandlers.cpp

+ 10
- 3
dgl/src/EventHandlers.cpp View File

@@ -430,7 +430,11 @@ struct KnobEventHandler::PrivateData {
movDiff = lastY - ev.pos.getY() / scaleFactor;
break;
case Both:
movDiff = (ev.pos.getX() / scaleFactor - lastX) + (lastY - ev.pos.getY() / scaleFactor);
{
const float movDiffX = ev.pos.getX() / scaleFactor - lastX;
const float movDiffY = lastY - ev.pos.getY() / scaleFactor;
movDiff = std::abs(movDiffX) > std::abs(movDiffY) ? movDiffX : movDiffY;
}
break;
default:
return false;
@@ -464,10 +468,13 @@ struct KnobEventHandler::PrivateData {
{
if (std::abs(valueTmp - value) >= step)
{
const float rest = std::fmod(valueTmp, step);
valueChanged = true;
value2 = valueTmp + std::fmod(valueTmp, step);
value2 = valueTmp - rest;

if (movDiff < 0.0)
if (rest < 0 && rest < step * -0.5f)
value2 -= step;
else if (rest > 0 && rest > step * 0.5f)
value2 += step;

if (value2 < minimum)


Loading…
Cancel
Save