Browse Source

Allow to pass scale factor to KnobEventHandler mouse events

pull/321/merge
falkTX 2 years ago
parent
commit
0ffd22d07e
3 changed files with 17 additions and 17 deletions
  1. +2
    -2
      dgl/EventHandlers.hpp
  2. +13
    -13
      dgl/src/EventHandlers.cpp
  3. +2
    -2
      dgl/src/ImageBaseWidgets.cpp

+ 2
- 2
dgl/EventHandlers.hpp View File

@@ -151,8 +151,8 @@ public:
// default 200, higher means slower
void setMouseDeceleration(float accel) noexcept;

bool mouseEvent(const Widget::MouseEvent& ev);
bool motionEvent(const Widget::MotionEvent& ev);
bool mouseEvent(const Widget::MouseEvent& ev, double scaleFactor = 1.0);
bool motionEvent(const Widget::MotionEvent& ev, double scaleFactor = 1.0);
bool scrollEvent(const Widget::ScrollEvent& ev);

protected:


+ 13
- 13
dgl/src/EventHandlers.cpp View File

@@ -361,7 +361,7 @@ struct KnobEventHandler::PrivateData {
return std::log(v/a)/b;
}

bool mouseEvent(const Widget::MouseEvent& ev)
bool mouseEvent(const Widget::MouseEvent& ev, const double scaleFactor)
{
if (ev.button != 1)
return false;
@@ -378,8 +378,8 @@ struct KnobEventHandler::PrivateData {
return true;
}

lastX = ev.pos.getX();
lastY = ev.pos.getY();
lastX = ev.pos.getX() / scaleFactor;
lastY = ev.pos.getY() / scaleFactor;

if (lastClickTime > 0 && ev.time > lastClickTime && ev.time - lastClickTime <= 300)
{
@@ -414,7 +414,7 @@ struct KnobEventHandler::PrivateData {
return false;
}

bool motionEvent(const Widget::MotionEvent& ev)
bool motionEvent(const Widget::MotionEvent& ev, const double scaleFactor)
{
if ((state & kKnobStateDragging) == 0x0)
return false;
@@ -424,13 +424,13 @@ struct KnobEventHandler::PrivateData {
switch (orientation)
{
case Horizontal:
movDiff = ev.pos.getX() - lastX;
movDiff = ev.pos.getX() / scaleFactor - lastX;
break;
case Vertical:
movDiff = lastY - ev.pos.getY();
movDiff = lastY - ev.pos.getY() / scaleFactor;
break;
case Both:
movDiff = (ev.pos.getX() - lastX) + (lastY - ev.pos.getY());
movDiff = (ev.pos.getX() / scaleFactor - lastX) + (lastY - ev.pos.getY() / scaleFactor);
break;
default:
return false;
@@ -486,8 +486,8 @@ struct KnobEventHandler::PrivateData {
if (valueChanged)
setValue(value2, true);

lastX = ev.pos.getX();
lastY = ev.pos.getY();
lastX = ev.pos.getX() / scaleFactor;
lastY = ev.pos.getY() / scaleFactor;

return true;
}
@@ -652,14 +652,14 @@ void KnobEventHandler::setMouseDeceleration(float accel) noexcept
pData->accel = accel;
}

bool KnobEventHandler::mouseEvent(const Widget::MouseEvent& ev)
bool KnobEventHandler::mouseEvent(const Widget::MouseEvent& ev, const double scaleFactor)
{
return pData->mouseEvent(ev);
return pData->mouseEvent(ev, scaleFactor);
}

bool KnobEventHandler::motionEvent(const Widget::MotionEvent& ev)
bool KnobEventHandler::motionEvent(const Widget::MotionEvent& ev, const double scaleFactor)
{
return pData->motionEvent(ev);
return pData->motionEvent(ev, scaleFactor);
}

bool KnobEventHandler::scrollEvent(const Widget::ScrollEvent& ev)


+ 2
- 2
dgl/src/ImageBaseWidgets.cpp View File

@@ -395,7 +395,7 @@ bool ImageBaseKnob<ImageType>::onMouse(const MouseEvent& ev)
{
if (SubWidget::onMouse(ev))
return true;
return KnobEventHandler::mouseEvent(ev);
return KnobEventHandler::mouseEvent(ev, getTopLevelWidget()->getScaleFactor());
}

template <class ImageType>
@@ -403,7 +403,7 @@ bool ImageBaseKnob<ImageType>::onMotion(const MotionEvent& ev)
{
if (SubWidget::onMotion(ev))
return true;
return KnobEventHandler::motionEvent(ev);
return KnobEventHandler::motionEvent(ev, getTopLevelWidget()->getScaleFactor());
}

template <class ImageType>


Loading…
Cancel
Save