commit 402254e469ec6b00a1595d3b14c758aec9b70b10 parent b79311a0b373301a399370762d0c70f9938a5487 Author: falkTX <falktx@falktx.com> Date: Sun, 10 Oct 2021 13:56:00 +0100 Fix nano subwidgets getting double offset Signed-off-by: falkTX <falktx@falktx.com> Diffstat:
M | dgl/src/WidgetPrivateData.cpp | | | 33 | ++++++++++++--------------------- |
1 file changed, 12 insertions(+), 21 deletions(-)
diff --git a/dgl/src/WidgetPrivateData.cpp b/dgl/src/WidgetPrivateData.cpp @@ -112,18 +112,15 @@ bool Widget::PrivateData::giveMouseEventForSubWidgets(MouseEvent& ev) if (subWidgets.size() == 0) return false; - double x = ev.absolutePos.getX(); - double y = ev.absolutePos.getY(); + const double x = ev.absolutePos.getX(); + const double y = ev.absolutePos.getY(); if (SubWidget* const selfw = dynamic_cast<SubWidget*>(self)) { if (selfw->pData->needsViewportScaling) { - x -= selfw->getAbsoluteX(); - y -= selfw->getAbsoluteY(); - - ev.absolutePos.setX(x); - ev.absolutePos.setY(y); + ev.absolutePos.setX(x - selfw->getAbsoluteX()); + ev.absolutePos.setY(y - selfw->getAbsoluteY()); } } @@ -151,18 +148,15 @@ bool Widget::PrivateData::giveMotionEventForSubWidgets(MotionEvent& ev) if (subWidgets.size() == 0) return false; - double x = ev.absolutePos.getX(); - double y = ev.absolutePos.getY(); + const double x = ev.absolutePos.getX(); + const double y = ev.absolutePos.getY(); if (SubWidget* const selfw = dynamic_cast<SubWidget*>(self)) { if (selfw->pData->needsViewportScaling) { - x -= selfw->getAbsoluteX(); - y -= selfw->getAbsoluteY(); - - ev.absolutePos.setX(x); - ev.absolutePos.setY(y); + ev.absolutePos.setX(x - selfw->getAbsoluteX()); + ev.absolutePos.setY(y - selfw->getAbsoluteY()); } } @@ -190,18 +184,15 @@ bool Widget::PrivateData::giveScrollEventForSubWidgets(ScrollEvent& ev) if (subWidgets.size() == 0) return false; - double x = ev.absolutePos.getX(); - double y = ev.absolutePos.getY(); + const double x = ev.absolutePos.getX(); + const double y = ev.absolutePos.getY(); if (SubWidget* const selfw = dynamic_cast<SubWidget*>(self)) { if (selfw->pData->needsViewportScaling) { - x -= selfw->getAbsoluteX(); - y -= selfw->getAbsoluteY(); - - ev.absolutePos.setX(x); - ev.absolutePos.setY(y); + ev.absolutePos.setX(x - selfw->getAbsoluteX()); + ev.absolutePos.setY(y - selfw->getAbsoluteY()); } }