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;
420 bool leftMousePressed(
Vector2f pos) 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;
450 void mouseNoLongerOnWidget() override;
455 void leftMouseButtonNoLongerDown() override;
474 void updateTitleBarHeight();
480 void updateResizeMouseCursor(
Vector2f mousePos);
501 void rendererChanged(const
String& property) override;
507 TGUI_NODISCARD std::unique_ptr<DataIO::Node> save(SavingRenderersMap& renderers) const override;
513 void load(const std::unique_ptr<DataIO::Node>& node, const LoadingRenderersMap& renderers) override;
519 void mouseEnteredWidget() override;
525 void mouseLeftWidget() override;
540 void connectTitleButtonCallbacks();
576 Vector2f m_draggingPosition;
577 Vector2f m_maximumSize = {std::numeric_limits<float>::infinity(), std::numeric_limits<float>::infinity()};
578 Vector2f m_minimumSize = {0, 0};
579 Layout* m_decorationLayoutX =
nullptr;
580 Layout* m_decorationLayoutY =
nullptr;
581 TitleAlignment m_titleAlignment = TitleAlignment::Center;
582 unsigned int m_titleButtons = TitleButton::Close;
583 unsigned int m_titleTextSize = 0;
584 Cursor::Type m_currentChildWindowMouseCursor = Cursor::Type::Arrow;
586 CopiedSharedPtr<Button> m_closeButton;
587 CopiedSharedPtr<Button> m_minimizeButton;
588 CopiedSharedPtr<Button> m_maximizeButton;
590 bool m_mouseDownOnTitleBar =
false;
591 bool m_keepInParent =
false;
593 bool m_positionLocked =
false;
594 bool m_resizable =
false;
595 int m_resizeDirection = ResizeNone;
597 Sprite m_spriteTitleBar;
598 Sprite m_spriteBackground;
601 Borders m_bordersCached;
602 Color m_borderColorCached;
603 Color m_borderColorFocusedCached;
604 Color m_titleColorCached;
605 Color m_titleBarColorCached;
606 Color m_backgroundColorCached;
607 float m_titleBarHeightCached = 20;
608 float m_borderBelowTitleBarCached = 0;
609 float m_distanceToSideCached = 0;
610 float m_paddingBetweenButtonsCached = 0;
611 float m_minimumResizableBorderWidthCached = 10;
612 bool m_showTextOnTitleButtonsCached =
false;