@@ -32,8 +32,7 @@ END_NAMESPACE_DISTRHO | |||||
START_NAMESPACE_DGL | START_NAMESPACE_DGL | ||||
class Application; | |||||
class ImageSlider; | |||||
// class Application; | |||||
class NanoWidget; | class NanoWidget; | ||||
class Window; | class Window; | ||||
class StandaloneWindow; | class StandaloneWindow; | ||||
@@ -422,6 +421,12 @@ protected: | |||||
*/ | */ | ||||
virtual bool onSpecial(const SpecialEvent&); | virtual bool onSpecial(const SpecialEvent&); | ||||
/** | |||||
A function called when an UTF-8 character is received. | |||||
@return True to stop event propagation, false otherwise. | |||||
*/ | |||||
virtual bool onCharacterInput(const CharacterInputEvent&); | |||||
/** | /** | ||||
A function called when a mouse button is pressed or released. | A function called when a mouse button is pressed or released. | ||||
@return True to stop event propagation, false otherwise. | @return True to stop event propagation, false otherwise. | ||||
@@ -450,6 +455,8 @@ protected: | |||||
*/ | */ | ||||
virtual void onPositionChanged(const PositionChangedEvent&); | virtual void onPositionChanged(const PositionChangedEvent&); | ||||
void setNeedsFullViewport(); | |||||
private: | private: | ||||
struct PrivateData; | struct PrivateData; | ||||
PrivateData* const pData; | PrivateData* const pData; | ||||
@@ -457,7 +464,6 @@ private: | |||||
/** @internal */ | /** @internal */ | ||||
explicit Widget(Widget* groupWidget, bool addToSubWidgets); | explicit Widget(Widget* groupWidget, bool addToSubWidgets); | ||||
friend class ImageSlider; | |||||
friend class NanoWidget; | friend class NanoWidget; | ||||
friend class Window; | friend class Window; | ||||
friend class StandaloneWindow; | friend class StandaloneWindow; | ||||
@@ -675,7 +675,7 @@ ImageSlider::ImageSlider(Window& parent, const Image& image) noexcept | |||||
fEndPos(), | fEndPos(), | ||||
fSliderArea() | fSliderArea() | ||||
{ | { | ||||
pData->needsFullViewport = true; | |||||
setNeedsFullViewport(); | |||||
} | } | ||||
ImageSlider::ImageSlider(Widget* widget, const Image& image) noexcept | ImageSlider::ImageSlider(Widget* widget, const Image& image) noexcept | ||||
@@ -698,7 +698,7 @@ ImageSlider::ImageSlider(Widget* widget, const Image& image) noexcept | |||||
fEndPos(), | fEndPos(), | ||||
fSliderArea() | fSliderArea() | ||||
{ | { | ||||
pData->needsFullViewport = true; | |||||
setNeedsFullViewport(); | |||||
} | } | ||||
float ImageSlider::getValue() const noexcept | float ImageSlider::getValue() const noexcept | ||||
@@ -24,24 +24,20 @@ START_NAMESPACE_DGL | |||||
Widget::Widget(Window& parent) | Widget::Widget(Window& parent) | ||||
: pData(new PrivateData(this, parent, nullptr, false)) | : pData(new PrivateData(this, parent, nullptr, false)) | ||||
{ | { | ||||
parent._addWidget(this); | |||||
} | } | ||||
Widget::Widget(Widget* groupWidget) | Widget::Widget(Widget* groupWidget) | ||||
: pData(new PrivateData(this, groupWidget->getParentWindow(), groupWidget, true)) | : pData(new PrivateData(this, groupWidget->getParentWindow(), groupWidget, true)) | ||||
{ | { | ||||
pData->parent._addWidget(this); | |||||
} | } | ||||
Widget::Widget(Widget* groupWidget, bool addToSubWidgets) | Widget::Widget(Widget* groupWidget, bool addToSubWidgets) | ||||
: pData(new PrivateData(this, groupWidget->getParentWindow(), groupWidget, addToSubWidgets)) | : pData(new PrivateData(this, groupWidget->getParentWindow(), groupWidget, addToSubWidgets)) | ||||
{ | { | ||||
pData->parent._addWidget(this); | |||||
} | } | ||||
Widget::~Widget() | Widget::~Widget() | ||||
{ | { | ||||
pData->parent._removeWidget(this); | |||||
delete pData; | delete pData; | ||||
} | } | ||||
@@ -228,6 +224,11 @@ bool Widget::onSpecial(const SpecialEvent&) | |||||
return false; | return false; | ||||
} | } | ||||
bool Widget::onCharacterInput(const CharacterInputEvent&) | |||||
{ | |||||
return false; | |||||
} | |||||
bool Widget::onMouse(const MouseEvent&) | bool Widget::onMouse(const MouseEvent&) | ||||
{ | { | ||||
return false; | return false; | ||||
@@ -251,6 +252,11 @@ void Widget::onPositionChanged(const PositionChangedEvent&) | |||||
{ | { | ||||
} | } | ||||
void Widget::setNeedsFullViewport() | |||||
{ | |||||
pData->needsFullViewport = true; | |||||
} | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
END_NAMESPACE_DGL | END_NAMESPACE_DGL |
@@ -56,10 +56,13 @@ struct Widget::PrivateData { | |||||
skipDisplay = true; | skipDisplay = true; | ||||
groupWidget->pData->subWidgets.push_back(self); | groupWidget->pData->subWidgets.push_back(self); | ||||
} | } | ||||
parent._addWidget(self); | |||||
} | } | ||||
~PrivateData() | ~PrivateData() | ||||
{ | { | ||||
parent._removeWidget(self); | |||||
subWidgets.clear(); | subWidgets.clear(); | ||||
} | } | ||||