diff --git a/include/TGUI/Widget.hpp b/include/TGUI/Widget.hpp index 64df8aaa..69788e53 100644 --- a/include/TGUI/Widget.hpp +++ b/include/TGUI/Widget.hpp @@ -473,7 +473,16 @@ namespace tgui ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // This function is called every frame with the time passed since the last frame. + /// @internal + /// This function is called when the widget is added to a container. + /// You should not call this function yourself. + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + virtual void setParent(Container* parent); + + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /// @internal + /// This function is called every frame with the time passed since the last frame. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// virtual void update(sf::Time elapsedTime); @@ -558,13 +567,6 @@ namespace tgui ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// protected: - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - /// @internal - // This function is called when the widget is added to a container. - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - virtual void initialize(Container *const container); - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// @brief Attach a theme to the widget /// diff --git a/include/TGUI/Widgets/Label.hpp b/include/TGUI/Widgets/Label.hpp index 14ba7ca8..6dca9fa7 100644 --- a/include/TGUI/Widgets/Label.hpp +++ b/include/TGUI/Widgets/Label.hpp @@ -301,6 +301,14 @@ namespace tgui virtual sf::Vector2f getWidgetOffset() const override; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /// @internal + /// This function is called when the widget is added to a container. + /// You should not call this function yourself. + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + virtual void setParent(Container* parent) override; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// @internal ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -310,13 +318,6 @@ namespace tgui ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// protected: - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - /// @internal - // Tell the widget about its parent - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - virtual void initialize(Container *const container) override; - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// @brief Reload the widget /// diff --git a/include/TGUI/Widgets/MenuBar.hpp b/include/TGUI/Widgets/MenuBar.hpp index a60228da..768474f8 100644 --- a/include/TGUI/Widgets/MenuBar.hpp +++ b/include/TGUI/Widgets/MenuBar.hpp @@ -239,6 +239,14 @@ namespace tgui virtual void setOpacity(float opacity) override; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /// @internal + /// This function is called when the widget is added to a container. + /// You should not call this function yourself. + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + virtual void setParent(Container* parent) override; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// @internal ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -283,11 +291,6 @@ namespace tgui ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// protected: - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // This function is called when the widget is added to a container. - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - virtual void initialize(Container *const container) override; - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Makes a copy of the widget diff --git a/src/TGUI/Container.cpp b/src/TGUI/Container.cpp index 73266b76..d2f7ebab 100644 --- a/src/TGUI/Container.cpp +++ b/src/TGUI/Container.cpp @@ -99,7 +99,7 @@ namespace tgui if (!widgetPtr->getFont() && getFont()) widgetPtr->setFont(getFont()); - widgetPtr->initialize(this); + widgetPtr->setParent(this); m_widgets.push_back(widgetPtr); m_objName.push_back(widgetName); diff --git a/src/TGUI/Widget.cpp b/src/TGUI/Widget.cpp index 2c8afa06..6ec1f873 100644 --- a/src/TGUI/Widget.cpp +++ b/src/TGUI/Widget.cpp @@ -408,6 +408,20 @@ namespace tgui ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void Widget::setParent(Container* parent) + { + m_parent = parent; + if (m_parent) + { + m_position.x.getImpl()->recalculate(); + m_position.y.getImpl()->recalculate(); + m_size.x.getImpl()->recalculate(); + m_size.y.getImpl()->recalculate(); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void Widget::update(sf::Time elapsedTime) { m_animationTimeElapsed += elapsedTime; @@ -504,20 +518,6 @@ namespace tgui ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - void Widget::initialize(Container *const parent) - { - assert(parent); - - m_parent = parent; - - m_position.x.getImpl()->recalculate(); - m_position.y.getImpl()->recalculate(); - m_size.x.getImpl()->recalculate(); - m_size.y.getImpl()->recalculate(); - } - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - void Widget::attachTheme(std::shared_ptr theme) { detachTheme(); diff --git a/src/TGUI/Widgets/Label.cpp b/src/TGUI/Widgets/Label.cpp index 5aa601ec..e27a194d 100644 --- a/src/TGUI/Widgets/Label.cpp +++ b/src/TGUI/Widgets/Label.cpp @@ -204,6 +204,15 @@ namespace tgui ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void Label::setParent(Container* parent) + { + bool autoSize = getAutoSize(); + Widget::setParent(parent); + setAutoSize(autoSize); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void Label::leftMouseReleased(float x, float y) { bool mouseDown = m_mouseDown; @@ -230,15 +239,6 @@ namespace tgui ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - void Label::initialize(Container *const parent) - { - bool autoSize = getAutoSize(); - Widget::initialize(parent); - setAutoSize(autoSize); - } - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - void Label::reload(const std::string& primary, const std::string& secondary, bool force) { getRenderer()->setBackgroundColor(sf::Color::Transparent); diff --git a/src/TGUI/Widgets/MenuBar.cpp b/src/TGUI/Widgets/MenuBar.cpp index 50324018..1acea237 100644 --- a/src/TGUI/Widgets/MenuBar.cpp +++ b/src/TGUI/Widgets/MenuBar.cpp @@ -274,6 +274,16 @@ namespace tgui ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void MenuBar::setParent(Container* parent) + { + Widget::setParent(parent); + + if (getSize().x == 0) + setSize(bindWidth(m_parent->shared_from_this()), m_size.y); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + bool MenuBar::mouseOnWidget(float x, float y) { // Check if the mouse is on top of the menu bar @@ -452,16 +462,6 @@ namespace tgui ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - void MenuBar::initialize(Container *const parent) - { - Widget::initialize(parent); - - if (getSize().x == 0) - setSize(bindWidth(m_parent->shared_from_this()), m_size.y); - } - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - void MenuBar::mouseLeftWidget() { // Menu items which are selected on mouse hover should not remain selected now that the mouse has left