50 using Ptr = std::shared_ptr<ChildWindow>;
51 using ConstPtr = std::shared_ptr<const ChildWindow>;
53 static constexpr const char StaticWidgetType[] =
"ChildWindow";
81 ChildWindow(
const char* typeName = StaticWidgetType,
bool initRenderer =
true);
155 void setPosition(const
Layout2d& position) override;
156 using
Widget::setPosition;
177 TGUI_NODISCARD
Vector2f getInnerSize() const override;
257 TGUI_NODISCARD const
String& getTitle() const;
265 void setTitleTextSize(
unsigned int size);
272 TGUI_NODISCARD
unsigned int getTitleTextSize() const;
305 void setTitleButtons(
unsigned int buttons);
314 TGUI_NODISCARD
unsigned int getTitleButtons() const;
343 void setResizable(
bool resizable = true);
352 TGUI_NODISCARD
bool isResizable() const;
361 void setPositionLocked(
bool positionLocked = true);
368 TGUI_NODISCARD
bool isPositionLocked() const;
378 void setKeepInParent(
bool enabled = true);
388 TGUI_NODISCARD
bool isKeptInParent() const;
398 TGUI_NODISCARD
Vector2f getChildWidgetsOffset() const override;
406 void setParent(
Container* parent) override;
415 TGUI_NODISCARD
bool isMouseOnWidget(
Vector2f pos) const override;
425 void leftMouseReleased(
Vector2f pos) override;
430 void rightMousePressed(
Vector2f pos) override;
435 void rightMouseReleased(
Vector2f pos) override;
440 void mouseMoved(
Vector2f pos) override;
445 void keyPressed(const
Event::KeyEvent& event) override;
456 bool canHandleKeyPress(const
Event::KeyEvent& event) override;
461 void mouseNoLongerOnWidget() override;
466 void leftMouseButtonNoLongerDown() override;
485 void updateTitleBarHeight();
491 void updateResizeMouseCursor(
Vector2f mousePos);
512 void rendererChanged(const
String& property) override;
518 TGUI_NODISCARD std::unique_ptr<DataIO::Node> save(SavingRenderersMap& renderers) const override;
524 void load(const std::unique_ptr<DataIO::Node>& node, const LoadingRenderersMap& renderers) override;
530 void mouseEnteredWidget() override;
536 void mouseLeftWidget() override;
551 void connectTitleButtonCallbacks();
587 Vector2f m_draggingPosition;
588 Vector2f m_maximumSize = {std::numeric_limits<float>::infinity(), std::numeric_limits<float>::infinity()};
589 Vector2f m_minimumSize = {0, 0};
590 Layout* m_decorationLayoutX =
nullptr;
591 Layout* m_decorationLayoutY =
nullptr;
592 TitleAlignment m_titleAlignment = TitleAlignment::Center;
593 unsigned int m_titleButtons = TitleButton::Close;
594 unsigned int m_titleTextSize = 0;
595 Cursor::Type m_currentChildWindowMouseCursor = Cursor::Type::Arrow;
597 CopiedSharedPtr<Button> m_closeButton;
598 CopiedSharedPtr<Button> m_minimizeButton;
599 CopiedSharedPtr<Button> m_maximizeButton;
601 bool m_mouseDownOnTitleBar =
false;
602 bool m_keepInParent =
false;
604 bool m_positionLocked =
false;
605 bool m_resizable =
false;
606 int m_resizeDirection = ResizeNone;
608 Sprite m_spriteTitleBar;
609 Sprite m_spriteBackground;
612 Borders m_bordersCached;
613 Color m_borderColorCached;
614 Color m_borderColorFocusedCached;
615 Color m_titleColorCached;
616 Color m_titleBarColorCached;
617 Color m_backgroundColorCached;
618 float m_titleBarHeightCached = 20;
619 float m_borderBelowTitleBarCached = 0;
620 float m_distanceToSideCached = 0;
621 float m_paddingBetweenButtonsCached = 0;
622 float m_minimumResizableBorderWidthCached = 10;
623 bool m_showTextOnTitleButtonsCached =
false;