26#ifndef TGUI_CHILD_WINDOW_HPP
27#define TGUI_CHILD_WINDOW_HPP
30#include <TGUI/CopiedSharedPtr.hpp>
31#include <TGUI/Container.hpp>
32#include <TGUI/Widgets/Button.hpp>
33#include <TGUI/Renderers/ChildWindowRenderer.hpp>
47 typedef std::shared_ptr<ChildWindow>
Ptr;
48 typedef std::shared_ptr<const ChildWindow>
ConstPtr;
76 ChildWindow(
const char* typeName =
"ChildWindow",
bool initRenderer =
true);
151 void setPosition(const
Layout2d& position) override;
152 using
Widget::setPosition;
261 void setTitleTextSize(
unsigned int size);
268 unsigned int getTitleTextSize() const;
301 void setTitleButtons(
unsigned int buttons);
310 unsigned int getTitleButtons() const;
339 void setResizable(
bool resizable = true);
348 bool isResizable() const;
357 void setPositionLocked(
bool positionLocked = true);
364 bool isPositionLocked() const;
374 void setKeepInParent(
bool enabled = true);
384 bool isKeptInParent() const;
402 void setParent(
Container* parent) override;
416 void leftMousePressed(
Vector2f pos) override;
421 void leftMouseReleased(
Vector2f pos) override;
426 void rightMousePressed(
Vector2f pos) override;
431 void rightMouseReleased(
Vector2f pos) override;
436 void mouseMoved(
Vector2f pos) override;
441 void keyPressed(const
Event::KeyEvent& event) override;
446 void mouseNoLongerOnWidget() override;
451 void leftMouseButtonNoLongerDown() override;
470 void updateTitleBarHeight();
476 void updateResizeMouseCursor(
Vector2f mousePos);
497 void rendererChanged(const
String& property) override;
503 std::unique_ptr<DataIO::Node> save(SavingRenderersMap& renderers) const override;
509 void load(const std::unique_ptr<DataIO::Node>& node, const LoadingRenderersMap& renderers) override;
515 void mouseEnteredWidget() override;
521 void mouseLeftWidget() override;
563 Vector2f m_draggingPosition;
564 Vector2f m_maximumSize = {std::numeric_limits<float>::infinity(), std::numeric_limits<float>::infinity()};
565 Vector2f m_minimumSize = {0, 0};
566 Layout* m_decorationLayoutX =
nullptr;
567 Layout* m_decorationLayoutY =
nullptr;
568 TitleAlignment m_titleAlignment = TitleAlignment::Center;
569 unsigned int m_titleButtons = TitleButton::Close;
570 unsigned int m_titleTextSize = 0;
573 CopiedSharedPtr<Button> m_closeButton;
574 CopiedSharedPtr<Button> m_minimizeButton;
575 CopiedSharedPtr<Button> m_maximizeButton;
577 bool m_mouseDownOnTitleBar =
false;
578 bool m_keepInParent =
false;
580 bool m_positionLocked =
false;
581 bool m_resizable =
false;
582 int m_resizeDirection = ResizeNone;
584 Sprite m_spriteTitleBar;
585 Sprite m_spriteBackground;
588 Borders m_bordersCached;
589 Color m_borderColorCached;
590 Color m_borderColorFocusedCached;
591 Color m_titleColorCached;
592 Color m_titleBarColorCached;
593 Color m_backgroundColorCached;
594 float m_titleBarHeightCached = 20;
595 float m_borderBelowTitleBarCached = 0;
596 float m_distanceToSideCached = 0;
597 float m_paddingBetweenButtonsCached = 0;
598 float m_minimumResizableBorderWidthCached = 10;
599 bool m_showTextOnTitleButtonsCached =
false;
Base class for render targets.
Definition: BackendRenderTarget.hpp:48
Definition: ChildWindowRenderer.hpp:37
Child window widget.
Definition: ChildWindow.hpp:44
TitleAlignment
Title alignments, possible options for the setTitleAlignment function.
Definition: ChildWindow.hpp:53
ChildWindow(const ChildWindow &)
Copy constructor.
std::shared_ptr< ChildWindow > Ptr
Shared widget pointer.
Definition: ChildWindow.hpp:47
TitleButton
Title buttons (use bitwise OR to combine)
Definition: ChildWindow.hpp:62
ChildWindow(ChildWindow &&) noexcept
Move constructor.
std::shared_ptr< const ChildWindow > ConstPtr
Shared constant widget pointer.
Definition: ChildWindow.hpp:48
Container widget.
Definition: Container.hpp:47
std::shared_ptr< Container > Ptr
Shared widget pointer.
Definition: Container.hpp:50
std::shared_ptr< const Container > ConstPtr
Shared constant widget pointer.
Definition: Container.hpp:51
Type
List of available cursors.
Definition: Cursor.hpp:48
@ Arrow
Arrow cursor (default)
Class to store the position or size of a widget.
Definition: Layout.hpp:284
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:467
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:58
Wrapper class to store strings.
Definition: String.hpp:79
Namespace that contains all TGUI functions and classes.
Definition: AbsoluteOrRelativeValue.hpp:36
States used for drawing.
Definition: RenderStates.hpp:39