43 using Ptr = std::shared_ptr<ButtonBase>;
44 using ConstPtr = std::shared_ptr<const ButtonBase>;
53 ButtonBase(
const char* typeName,
bool initRenderer);
85 TGUI_NODISCARD const
ButtonRenderer* getSharedRenderer() const override;
109 void setEnabled(
bool enabled) override;
116 virtual
void setText(const
String& text);
123 TGUI_NODISCARD const
String& getText() const;
152 void setFocused(
bool focused) override;
158 TGUI_NODISCARD
bool isMouseOnWidget(
Vector2f pos) const override;
168 void leftMouseReleased(
Vector2f pos) override;
173 void leftMouseButtonNoLongerDown() override;
189 void mouseEnteredWidget() override;
194 void mouseLeftWidget() override;
201 void rendererChanged(const
String& property) override;
206 TGUI_NODISCARD std::unique_ptr<DataIO::Node> save(SavingRenderersMap& renderers) const override;
211 void load(const std::unique_ptr<DataIO::Node>& node, const LoadingRenderersMap& renderers) override;
216 void updateTextSize() override;
226 virtual
void updateSize();
231 virtual
void updateTextPosition();
236 virtual
void initComponents();
241 void addComponent(const std::shared_ptr<priv::dev::Component>& component);
246 TGUI_NODISCARD std::shared_ptr<priv::dev::Component> getComponent(const
String& name);
254 priv::dev::ComponentState m_state = priv::dev::ComponentState::Normal;
256 bool m_autoSize = true;
257 bool m_updatingTextSize = false;
262 priv::dev::StylePropertyBackground background;
263 priv::dev::StylePropertyText text;
265 std::uint64_t m_textStyleChangedCallbackId = 0;
268 std::map<
String, priv::dev::StylePropertyBase*> m_stylePropertiesNames;
269 std::map<
String, std::vector<priv::dev::StylePropertyBase*>> m_stylePropertiesGlobalNames;
270 std::map<
String, std::shared_ptr<priv::dev::Component>> m_namedComponents;
273 std::shared_ptr<priv::dev::BackgroundComponent> m_backgroundComponent;
274 std::shared_ptr<priv::dev::TextComponent> m_textComponent;
276 std::vector<std::shared_ptr<priv::dev::Component>> m_components;