From 402254e469ec6b00a1595d3b14c758aec9b70b10 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 10 Oct 2021 13:56:27 +0100 Subject: [PATCH] Fix nano subwidgets getting double offset Signed-off-by: falkTX --- dgl/src/WidgetPrivateData.cpp | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/dgl/src/WidgetPrivateData.cpp b/dgl/src/WidgetPrivateData.cpp index 3cbe644a..150d11c2 100644 --- 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(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(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(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()); } }