Signed-off-by: falkTX <falktx@falktx.com>pull/272/head
@@ -232,10 +232,6 @@ public: | |||||
// TODO mark as deprecated | // TODO mark as deprecated | ||||
void drawAt(const Point<int>& pos); | void drawAt(const Point<int>& pos); | ||||
protected: | |||||
/** @internal */ | |||||
// void _drawAt(const Point<int>& pos) override; | |||||
private: | private: | ||||
GLenum fFormat; | GLenum fFormat; | ||||
GLenum fType; | GLenum fType; | ||||
@@ -124,6 +124,7 @@ private: | |||||
struct PrivateData; | struct PrivateData; | ||||
PrivateData* const pData; | PrivateData* const pData; | ||||
friend class Widget; | friend class Widget; | ||||
template <class BaseWidget> friend class NanoWidget; | |||||
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SubWidget) | DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SubWidget) | ||||
}; | }; | ||||
@@ -963,6 +963,7 @@ NanoWidget<BaseWidget>::NanoWidget(Widget* const parent, int flags) | |||||
NanoVG(flags), | NanoVG(flags), | ||||
nData(new PrivateData(this)) | nData(new PrivateData(this)) | ||||
{ | { | ||||
BaseWidget::pData->viewportNeedsScaling = true; | |||||
} | } | ||||
// TopLevelWidget | // TopLevelWidget | ||||
@@ -365,12 +365,11 @@ void SubWidget::PrivateData::display(uint width, uint height, double autoScaling | |||||
{ | { | ||||
// full viewport size | // full viewport size | ||||
glViewport(0, | glViewport(0, | ||||
-(height * autoScaling - height), | |||||
width * autoScaling, | |||||
height * autoScaling); | |||||
-(height * autoScaling - height), | |||||
width * autoScaling, | |||||
height * autoScaling); | |||||
} | } | ||||
/* | |||||
else if (needsScaling) | |||||
else if (viewportNeedsScaling) | |||||
{ | { | ||||
// limit viewport to widget bounds | // limit viewport to widget bounds | ||||
glViewport(absolutePos.getX(), | glViewport(absolutePos.getX(), | ||||
@@ -378,7 +377,6 @@ void SubWidget::PrivateData::display(uint width, uint height, double autoScaling | |||||
self->getWidth(), | self->getWidth(), | ||||
self->getHeight()); | self->getHeight()); | ||||
} | } | ||||
*/ | |||||
else | else | ||||
{ | { | ||||
// only set viewport pos | // only set viewport pos | ||||
@@ -24,7 +24,8 @@ START_NAMESPACE_DGL | |||||
SubWidget::PrivateData::PrivateData(SubWidget* const s, Widget* const pw) | SubWidget::PrivateData::PrivateData(SubWidget* const s, Widget* const pw) | ||||
: self(s), | : self(s), | ||||
parentWidget(pw), | parentWidget(pw), | ||||
absolutePos() | |||||
absolutePos(), | |||||
viewportNeedsScaling(false) | |||||
{ | { | ||||
parentWidget->pData->subWidgets.push_back(self); | parentWidget->pData->subWidgets.push_back(self); | ||||
} | } | ||||
@@ -27,6 +27,7 @@ struct SubWidget::PrivateData { | |||||
SubWidget* const self; | SubWidget* const self; | ||||
Widget* const parentWidget; | Widget* const parentWidget; | ||||
Point<int> absolutePos; | Point<int> absolutePos; | ||||
bool viewportNeedsScaling; // needed for NanoVG | |||||
explicit PrivateData(SubWidget* const s, Widget* const pw); | explicit PrivateData(SubWidget* const s, Widget* const pw); | ||||
~PrivateData(); | ~PrivateData(); | ||||