A WYSIWYG rich-text editor: a formatting toolbar over a TextArea. More...
#include <Malena/Graphics/Text/RichTextEditor.h>
Public Types | |
| using | Flag = DraggableManifest::Flag |
| using | manifest_type |
The manifest type, used by GatherFlags and GatherStates to locate this class's flag and state declarations. | |
| using | manifest_type |
The manifest type, used by GatherFlags and GatherStates to locate this class's flag and state declarations. | |
| using | State = DraggableManifest::State |
| using | State |
| The enum type this manager stores flags for. | |
Public Member Functions | |
| RichTextEditor () | |
| void | addComponent (Core &child) |
| template<typename E, typename = std::enable_if_t<std::is_enum_v<E>>> | |
| void | addComponent (Core &child, E layer) |
| Register a child at a layer identified by any enum value. | |
| void | addComponent (Core &child, int layer) |
| template<typename T> | |
| void | addComponent (T &child, bool fill=false) |
| Add a child component to this panel. | |
| template<typename... Children> | |
| void | addComponents (Children &... children) |
| Register multiple child components at the default layer. | |
| template<typename E, typename... Children, typename = std::enable_if_t<std::is_enum_v<E>>> | |
| void | addComponents (E layer, Children &... children) |
| Variadic shared-layer registration with an enum layer key. | |
| template<typename... Children> | |
| void | addComponents (int layer, Children &... children) |
| Register multiple child components at a shared layer. | |
| void | addRef (Core &child) |
Alias for addUntracked(). Kept for compatibility. | |
| void | addUntracked (Core &child) |
| Add a child that will NOT follow the panel when it moves. | |
| template<class T> | |
| void | center (T &obj) |
Center this object within obj (both axes). | |
| template<class T> | |
| void | centerHorizonally (T &obj) |
Center this object horizontally within obj. | |
| void | centerText (sf::Text &obj) |
Center an sf::Text object within this object's bounds. | |
| template<class T> | |
| void | centerVertically (T &obj) |
Center this object vertically within obj. | |
| bool | checkFlag (State state) const |
| Return the current value of a flag. | |
| void | clear () |
| Remove all child components from this panel. | |
| void | clearDragBounds () |
| Remove any previously set drag bounds. | |
| void | closePopups () |
| void | disableFlag (State state) |
Set a flag to false. | |
| void | draw (sf::RenderTarget &target, sf::RenderStates states) const override |
| Draw this graphic to an SFML render target. | |
| void | enableFlag (State state) |
Set a flag to true. | |
| unsigned int | getCornerPointCount () const |
| Return the current per-corner vertex count. | |
| Color | getFillColor () const |
| virtual Vector2f | getGeometricCenter () const |
| sf::FloatRect | getGlobalBounds () const override |
| Return the axis-aligned bounding box in world space. | |
| const Transform & | getInverseTransform () const |
| FloatRect | getLocalBounds () const |
| Vector2f | getOrigin () const |
| Color | getOutlineColor () const |
| float | getOutlineThickness () const |
| virtual sf::Vector2f | getPoint (std::size_t index) const override |
| Return the position of a single vertex. | |
| virtual std::size_t | getPointCount () const override |
| Return the total number of shape vertices. | |
| sf::Vector2f | getPosition () const override |
| Return the current world-space position. | |
| float | getRadius () const |
| Return the current corner arc radius. | |
| virtual sf::RenderStates | getRenderStates () const |
| std::string | getRichText () const |
| Angle | getRotation () const |
| Vector2f | getScale () const |
| const sf::Vector2f & | getSize () const |
| Return the current size of the rectangle. | |
| std::enable_if_t<!std::is_void_v< T >, T > | getState () const |
| Return the current state value. | |
| std::enable_if_t<!std::is_void_v< T >, T > | getState () const |
| Return the current state value. | |
| const Texture * | getTexture () const |
| const IntRect & | getTextureRect () const |
| const Transform & | getTransform () const |
| std::string | getValue () const |
| Graphic () | |
| template<typename U> | |
| Graphic (const U &obj) | |
Construct from an existing SFML object of type U. | |
| bool | isEffectivelyVisible () const |
| True only if this component and every ancestor are visible. | |
| bool | isEnabled () const |
| bool | isScrolling () |
Return true while a moveTo or moveDistance animation is in progress. | |
| bool | isSettingsLocked () const |
Return true if applySettings() is currently blocked. | |
| std::enable_if_t<!std::is_void_v< T >, bool > | isState (T state) const |
Return true if currently in state. | |
| std::enable_if_t<!std::is_void_v< T >, bool > | isState (T state) const |
Return true if currently in state. | |
| bool | isThemeLocked () const |
Return true if this component ignores theme changes. | |
| bool | isVisible () const |
| void | lockSettings () |
Prevent applySettings() from taking effect. | |
| void | lockTheme () |
| Prevent automatic re-styling when the global theme changes. | |
| void | move (Vector2f offset) |
| void | moveDistance (sf::Vector2f distance, float seconds=1.f) |
| Animate by a relative offset from the current position. | |
| void | moveTo (sf::FloatRect position, float seconds=1.f) |
Animate to a position defined by a FloatRect origin. | |
| void | moveTo (sf::Vector2f position, float seconds=1.f) |
| Animate to an absolute world-space position. | |
| void | onBlur (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked when this component loses keyboard focus. | |
| void | onBlur (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| Register a callback invoked when this component loses keyboard focus, receiving the raw SFML event. | |
| void | onChange (std::function< void(const std::string &)> cb) |
| void | onClick (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked when this component is clicked. | |
| void | onClick (std::function< void(const std::optional< sf::Event > &event)> callback, bool overwrite=true) |
| Register a callback invoked when this component is clicked, receiving the raw SFML event. | |
| void | onFocus (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked when this component gains keyboard focus. | |
| void | onFocus (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| Register a callback invoked when this component gains keyboard focus, receiving the raw SFML event. | |
| void | onHover (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked when the mouse enters this component's bounds. | |
| void | onHover (std::function< void(const std::optional< sf::Event > &event)> callback, bool overwrite=true) |
| Register a callback invoked when the mouse enters this component's bounds, receiving the raw SFML event. | |
| void | onKeypress (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked when a key is pressed while this component has focus. | |
| void | onKeypress (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| Register a callback invoked when a key is pressed while this component has focus, receiving the raw SFML event. | |
| void | onKeyRelease (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked when a key is released while this component has focus. | |
| void | onKeyRelease (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| Register a callback invoked when a key is released while this component has focus, receiving the raw SFML event. | |
| void | onMouseMoved (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked whenever the mouse moves anywhere in the window. | |
| void | onMouseMoved (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| Register a callback invoked whenever the mouse moves anywhere in the window, receiving the raw SFML event. | |
| void | onMousePressed (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked when a mouse button is pressed anywhere in the window. | |
| void | onMousePressed (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| Register a callback invoked when a mouse button is pressed, receiving the raw SFML event. | |
| void | onMouseReleased (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked when a mouse button is released anywhere in the window. | |
| void | onMouseReleased (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| Register a callback invoked when a mouse button is released, receiving the raw SFML event. | |
| void | onScroll (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked when the mouse wheel is scrolled while the cursor is over this component. | |
| void | onScroll (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| Register a callback invoked when the mouse wheel is scrolled while the cursor is over this component, receiving the SFML event. | |
| std::enable_if_t<!std::is_void_v< T > > | onStateEnter (std::function< void(T)> callback) |
| Register a callback invoked after each state transition. | |
| std::enable_if_t<!std::is_void_v< T > > | onStateEnter (std::function< void(T)> callback) |
| Register a callback invoked after each state transition. | |
| std::enable_if_t<!std::is_void_v< T > > | onStateExit (std::function< void(T)> callback) |
| Register a callback invoked before each state transition. | |
| std::enable_if_t<!std::is_void_v< T > > | onStateExit (std::function< void(T)> callback) |
| Register a callback invoked before each state transition. | |
| void | onTextEntered (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked when a unicode character is entered while this component has focus. | |
| void | onTextEntered (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| Register a callback invoked when a unicode character is entered while this component has focus, receiving the raw SFML event. | |
| void | onUnhover (std::function< void()> callback, bool overwrite=true) |
| Register a no-argument callback invoked when the mouse leaves this component's bounds. | |
| void | onUnhover (std::function< void(const std::optional< sf::Event > &event)> callback, bool overwrite=true) |
| Register a callback invoked when the mouse leaves this component's bounds, receiving the raw SFML event. | |
| void | onUpdate (std::function< void()> callback, bool overwrite=false) |
| Register a no-argument callback invoked every frame. | |
| void | onUpdate (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=false) |
| Register a callback invoked every frame, receiving the SFML event. | |
| void | onWindowFocusGained (std::function< void()> callback, bool overwrite=false) |
| Register a no-argument callback invoked when the application window gains OS focus. | |
| void | onWindowFocusGained (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=false) |
| Register a callback invoked when the application window gains OS focus, receiving the raw SFML event. | |
| void | onWindowFocusLost (std::function< void()> callback, bool overwrite=false) |
| Register a no-argument callback invoked when the application window loses OS focus. | |
| void | onWindowFocusLost (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=false) |
| Register a callback invoked when the application window loses OS focus, receiving the raw SFML event. | |
| virtual void | onWindowResize (unsigned int, unsigned int) |
| void | onWindowResized (std::function< void()> callback, bool overwrite=false) |
| Register a no-argument callback invoked when the application window is resized. | |
| void | onWindowResized (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=false) |
| Register a callback invoked when the application window is resized, receiving the raw SFML event. | |
| operator const sf::Drawable & () const | |
Implicit conversion to a const sf::Drawable reference. | |
| virtual void | process (const std::string &key, const std::optional< sf::Event > &event) |
Invoke all callbacks registered for key. | |
| template<typename ENUM_TYPE> | |
| void | process (ENUM_TYPE eventName, const std::optional< sf::Event > &event) |
Invoke all callbacks registered for eventName. | |
| template<typename ENUM_TYPE> | |
| void | publish (ENUM_TYPE event, FilterCallback filter=[](EventReceiver &){ return true;}, SystemCallback resolve=nullptr, SystemCallback reject=nullptr) |
| Fire an enum-keyed event to all matching subscribers. | |
| bool | removeComponent (Core &child) |
| Remove a child component from this panel. | |
| void | rotate (Angle angle) |
| void | scale (Vector2f factor) |
| template<class T> | |
| void | setAbove (T &obj, float spacing=0) |
Position this object immediately above obj. | |
| void | setActive (bool active) override |
| void | setAutoHideToolbar (bool enabled) |
| When enabled, the formatting toolbar is hidden until the editor is "active" (the user clicks inside it) and hides again when they click out — so it reads as a plain text area until focused. The text fills the full height while collapsed. | |
| template<class T> | |
| void | setBelow (T &obj, float spacing=0) |
Position this object immediately below obj. | |
| void | setCornerPointCount (unsigned int count) |
| Set the number of vertices per corner arc. | |
| void | setDragBounds (const sf::FloatRect &bounds) |
| Constrain drag movement to an axis-aligned bounding rectangle. | |
| void | setEnabled (bool enabled) |
| void | setFillColor (Color color) |
| void | setFlag (State state, bool status) |
| Set a flag to an explicit value. | |
| void | setFramerate (float framerate) |
| Set the assumed framerate for movement interpolation. | |
| template<class T> | |
| void | setLeftOf (T &obj, float spacing=0) |
Position this object immediately to the left of obj. | |
| void | setOrigin (Vector2f origin) |
| void | setOutlineColor (Color color) |
| void | setOutlineThickness (float thickness) |
| void | setParentEnabled (bool enabled) |
| void | setPosition (const sf::Vector2f &pos) override |
| Move the panel and shift all children by the same delta. | |
| void | setPosition (Vector2f position) |
| void | setRadius (float radius) |
| Set the corner arc radius. | |
| void | setRichText (const std::string &json) |
| template<class T> | |
| void | setRightOf (T &obj, float spacing=0) |
Position this object immediately to the right of obj. | |
| void | setRotation (Angle angle) |
| void | setScale (Vector2f factors) |
| void | setSize (const sf::Vector2f &size) |
| std::enable_if_t<!std::is_void_v< T > > | setState (T newState) |
| Transition to a new state. | |
| std::enable_if_t<!std::is_void_v< T > > | setState (T newState) |
| Transition to a new state. | |
| void | setTexture (const Texture *texture, bool resetRect=false) |
| void | setTextureRect (const IntRect &rect) |
| void | setValue (const std::string &text) |
| void | setVisible (bool visible) override |
| template<typename ENUM_TYPE> | |
| void | subscribe (ENUM_TYPE event, Callback callback) |
| Subscribe to an enum-keyed event with a no-argument callback. | |
| template<typename ENUM_TYPE> | |
| void | subscribe (ENUM_TYPE event, EventCallback callback) |
| Subscribe to an enum-keyed event with a full SFML event callback. | |
| void | toggleFlag (State state) |
Flip a flag between true and false. | |
| Core * | topmostMatching (const std::function< bool(Core &)> &accept) |
Find the front-most (last-painted) node in this subtree that satisfies accept, searching topmost-first. | |
| void | unlockSettings () |
Allow applySettings() to take effect again. | |
| void | unlockTheme () |
| Resume reacting to global theme changes. | |
| template<typename EnumType> | |
| void | unsubscribe (EnumType event) |
| Unsubscribe from a single event by enum value. | |
| void | unsubscribeAll () |
| Remove all event subscriptions for this component. | |
Static Public Member Functions | |
| static void | linkChild (Core *parent, Core *child) |
| static void | unlinkAll (Core *core) |
Static Public Attributes | |
| static constexpr int | DefaultLayer = 100 |
Protected Member Functions | |
| void | drawChildren (sf::RenderTarget &target, sf::RenderStates states) const |
| const std::vector< Child > & | getChildren () const |
| virtual void | onEnabledChanged (bool enabled) |
| void | onThemeApplied (const Theme &theme) override |
Called by ThemeManager when the active theme changes. | |
| void | update () |
A WYSIWYG rich-text editor: a formatting toolbar over a TextArea.
TinyMCE-style. The toolbar (an ml::Toolbar, so its clicks dispatch reliably) provides bold / italic / underline toggles and color choices that apply to the current selection (or the next typed text). Content round-trips losslessly as JSON spans via getRichText / setRichText.
Definition at line 37 of file RichTextEditor.h.
|
inherited |
Definition at line 73 of file Draggable.h.
|
inherited |
The manifest type, used by GatherFlags and GatherStates to locate this class's flag and state declarations.
Definition at line 65 of file Customizable.h.
|
inherited |
The manifest type, used by GatherFlags and GatherStates to locate this class's flag and state declarations.
Definition at line 65 of file Customizable.h.
|
inherited |
Definition at line 74 of file Draggable.h.
|
inherited |
The enum type this manager stores flags for.
Definition at line 63 of file FlagManager.h.
| ml::RichTextEditor::RichTextEditor | ( | ) |
|
inherited |
|
inlineinherited |
Register a child at a layer identified by any enum value.
Sugar over addComponent(child, int) — the enum's underlying integer value is used as the layer key. Lets manifests declare a domain-meaningful Layer enum and pass it directly at the call site without explicit casts:
Also accepts ml::Layer (the framework-provided default) when a component has no manifest of its own.
|
inherited |
|
inlineinherited |
Add a child component to this panel.
The child's current absolute position is recorded relative to the panel's current position. Subsequent setPosition() calls will keep the child at the same relative offset.
| child | The component to add. |
| fill | If true (default) and the child has setSize, it will be resized to match this panel whenever the panel resizes. Pass false to manage size manually. |
|
inlineinherited |
Register multiple child components at the default layer.
Equivalent to calling addComponent for each argument. Use this in a composite component's constructor when several fixed member components need to participate in the enable/disable cascade.
|
inlineinherited |
Variadic shared-layer registration with an enum layer key.
|
inlineinherited |
Register multiple child components at a shared layer.
|
inherited |
Alias for addUntracked(). Kept for compatibility.
|
inherited |
Add a child that will NOT follow the panel when it moves.
The panel draws the child and propagates enable/visible state, but never calls setPosition or setSize on it. The caller is responsible for positioning the child at all times.
Use this only when the child's position is managed externally (e.g., a custom setPosition override that manually lays out children). In most cases addComponent() is the right choice — it tracks the child and shifts it whenever the panel moves.
|
inherited |
Center this object within obj (both axes).
| T | Any type with getGlobalBounds(). |
| obj | Container to center within. |
|
inherited |
Center this object horizontally within obj.
| T | Any type with getGlobalBounds(). |
| obj | Container to center within. |
|
inherited |
|
inherited |
Center this object vertically within obj.
| T | Any type with getGlobalBounds(). |
| obj | Container to center within. |
|
inherited |
Return the current value of a flag.
Returns false for any flag that has never been explicitly set.
| state | The flag to query. |
true if the flag is enabled; false otherwise.
|
inherited |
Remove all child components from this panel.
|
inherited |
Remove any previously set drag bounds.
After this call the component can be dragged freely across the window with no position clamping. Has no effect if no bounds were set.
| void ml::RichTextEditor::closePopups | ( | ) |
Close any open color/style pop-up immediately.
|
inherited |
Set a flag to false.
| state | The flag to disable. |
|
overridevirtualinherited |
Draw this graphic to an SFML render target.
Delegates to T::draw after applying any render states returned by getRenderStates() (e.g., a shader set on this component).
| target | SFML render target (window or texture). |
| states | Current render states (transform, blend mode, etc.). |
Reimplemented from ml::Graphic< ml::RoundedRectangle >.
|
protectedinherited |
Render all registered children in layer order, skipping invisible ones. The framework default draw uses this; derived classes that override draw to add procedural visuals (background, decoration) or to wrap the loop in a clip view call this at the appropriate point.
|
inherited |
Set a flag to true.
| state | The flag to enable. |
|
inlineprotectedinherited |
|
inherited |
Return the current per-corner vertex count.
|
overridevirtualinherited |
Return the axis-aligned bounding box in world space.
Delegates to T::getGlobalBounds(). Used by AppManager for hit-testing (click, hover) and by layout helpers.
Reimplemented from ml::Positionable.
|
overridevirtualinherited |
Return the position of a single vertex.
Required by sf::Shape for geometry generation.
| index | Vertex index in [0, getPointCount()). |
Implements sf::Shape.
|
overridevirtualinherited |
|
overridevirtualinherited |
Return the current world-space position.
Delegates to T::getPosition.
Reimplemented from ml::Positionable.
|
inherited |
Return the current corner arc radius.
|
inlinevirtualinherited |
|
nodiscard |
|
inherited |
Return the current size of the rectangle.
|
inherited |
Return the current state value.
StateEnum value.
|
inherited |
Return the current state value.
StateEnum value.
|
nodiscard |
|
inherited |
|
explicitinherited |
Construct from an existing SFML object of type U.
| U | Source type, must be compatible with T's copy/move constructor. |
| obj | The source object to copy-construct from. |
|
inherited |
True only if this component and every ancestor are visible.
isVisible() reports a single component's own HIDDEN flag, but visibility is not cascaded the way enabled-state is: hiding a container does not flip the HIDDEN flag on its descendants. A descendant of a hidden container is therefore not drawn (the parent never reaches it) yet still looks visible to anything that inspects its own flag — notably hit-testing. This walks the parent chain so such a descendant is correctly treated as not visible.
|
inherited |
|
inherited |
Return true while a moveTo or moveDistance animation is in progress.
true if the waypoint queue is non-empty.
|
inlinenodiscardinherited |
Return true if applySettings() is currently blocked.
Definition at line 115 of file Themeable.h.
|
inherited |
Return true if currently in state.
| state | The state value to compare against. |
true if the current state equals state.
|
inherited |
Return true if currently in state.
| state | The state value to compare against. |
true if the current state equals state.
|
inlinenodiscardinherited |
Return true if this component ignores theme changes.
Definition at line 97 of file Themeable.h.
|
inherited |
|
inlineinherited |
Prevent applySettings() from taking effect.
Explicit individual setter calls still work normally. Only blocks the batch applySettings() path.
Definition at line 107 of file Themeable.h.
|
inlineinherited |
Prevent automatic re-styling when the global theme changes.
The component keeps its current visual state. Explicit individual setter calls still work normally.
Definition at line 85 of file Themeable.h.
|
inherited |
Animate by a relative offset from the current position.
Equivalent to moveTo(getPosition() + distance, seconds).
| distance | Offset in world coordinates to move by. |
| seconds | Duration of the animation. Defaults to 1.0 s. |
|
inherited |
Animate to a position defined by a FloatRect origin.
Convenience overload that uses the top-left of position as the target. Useful when positioning relative to layout rects.
| position | Rect whose origin is the animation target. |
| seconds | Duration of the animation. Defaults to 1.0 s. |
|
inherited |
Animate to an absolute world-space position.
Populates an internal waypoint queue and advances through it on successive onUpdate ticks. The object's position at the start of the call is the implicit start point.
| position | Target position in world coordinates. |
| seconds | Duration of the animation. Defaults to 1.0 s. |
|
inherited |
Register a no-argument callback invoked when this component loses keyboard focus.
| callback | Function invoked with no arguments when focus is lost. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when this component loses keyboard focus, receiving the raw SFML event.
| callback | Function invoked with the SFML event when focus is lost. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
| void ml::RichTextEditor::onChange | ( | std::function< void(const std::string &)> | cb | ) |
|
inherited |
Register a no-argument callback invoked when this component is clicked.
Replaces any previously registered onClick callback. The callback fires after the mouse button is released over this component.
| callback | Function invoked with no arguments on click. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when this component is clicked, receiving the raw SFML event.
Replaces any previously registered onClick callback unless overwrite is false, in which case the callback is appended.
| callback | Function invoked with the SFML event on click. |
| overwrite | If true (default), replaces any existing callback. |
|
inlineprotectedvirtualinherited |
THE hook for reacting to an enable/disable change. Fires whenever the effective enabled state flips — on both the direct (setEnabled) and cascade (setParentEnabled) paths — so visuals, hover/press state, popup teardown, etc. stay correct no matter how the change arrived. Override this instead of setEnabled/setParentEnabled.
| enabled | the new effective enabled state. |
Reimplemented in ml::EditableList.
|
inherited |
Register a no-argument callback invoked when this component gains keyboard focus.
| callback | Function invoked with no arguments when focus is gained. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when this component gains keyboard focus, receiving the raw SFML event.
| callback | Function invoked with the SFML event when focus is gained. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a no-argument callback invoked when the mouse enters this component's bounds.
| callback | Function invoked with no arguments on hover enter. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when the mouse enters this component's bounds, receiving the raw SFML event.
| callback | Function invoked with the SFML event on hover enter. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a no-argument callback invoked when a key is pressed while this component has focus.
| callback | Function invoked with no arguments on key press. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when a key is pressed while this component has focus, receiving the raw SFML event.
| callback | Function invoked with the SFML event on key press. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a no-argument callback invoked when a key is released while this component has focus.
| callback | Function invoked with no arguments on key release. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when a key is released while this component has focus, receiving the raw SFML event.
| callback | Function invoked with the SFML event on key release. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a no-argument callback invoked whenever the mouse moves anywhere in the window.
Unlike onHover, this fires for every component regardless of whether the cursor is over it.
| callback | Function invoked with no arguments on mouse move. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked whenever the mouse moves anywhere in the window, receiving the raw SFML event.
| callback | Function invoked with the SFML event on mouse move. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a no-argument callback invoked when a mouse button is pressed anywhere in the window.
This fires before click logic is evaluated. Prefer onClick for standard click handling.
| callback | Function invoked with no arguments on mouse press. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when a mouse button is pressed, receiving the raw SFML event.
| callback | Function invoked with the SFML event on mouse press. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a no-argument callback invoked when a mouse button is released anywhere in the window.
This fires before click logic is evaluated. Prefer onClick for standard click handling.
| callback | Function invoked with no arguments on mouse release. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when a mouse button is released, receiving the raw SFML event.
| callback | Function invoked with the SFML event on mouse release. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a no-argument callback invoked when the mouse wheel is scrolled while the cursor is over this component.
| callback | Function invoked with no arguments on scroll. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when the mouse wheel is scrolled while the cursor is over this component, receiving the SFML event.
| callback | Function invoked with the SFML event on scroll. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked after each state transition.
The callback receives the newly entered state. Only one enter callback is active at a time; calling this again replaces it.
| callback | Function called with the new state after each transition. |
|
inherited |
Register a callback invoked after each state transition.
The callback receives the newly entered state. Only one enter callback is active at a time; calling this again replaces it.
| callback | Function called with the new state after each transition. |
|
inherited |
Register a callback invoked before each state transition.
The callback receives the state being left. Only one exit callback is active at a time; calling this again replaces it.
| callback | Function called with the old state before each transition. |
|
inherited |
Register a callback invoked before each state transition.
The callback receives the state being left. Only one exit callback is active at a time; calling this again replaces it.
| callback | Function called with the old state before each transition. |
|
inherited |
Register a no-argument callback invoked when a unicode character is entered while this component has focus.
Prefer onTextEntered over onKeypress for text input — it handles modifier keys, input method editors (IME), and non-ASCII characters correctly.
| callback | Function invoked with no arguments when text is entered. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when a unicode character is entered while this component has focus, receiving the raw SFML event.
| callback | Function invoked with the SFML event when text is entered. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
overrideprotectedvirtualinherited |
Called by ThemeManager when the active theme changes.
Override in your component to re-style from the new theme. Always check isThemeLocked() first:
| theme | The newly active theme. |
Implements ml::Themeable.
|
inherited |
Register a no-argument callback invoked when the mouse leaves this component's bounds.
| callback | Function invoked with no arguments on hover leave. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when the mouse leaves this component's bounds, receiving the raw SFML event.
| callback | Function invoked with the SFML event on hover leave. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a no-argument callback invoked every frame.
The callback fires once per frame before the draw pass. All active components receive this regardless of hover or focus state.
| callback | Function invoked with no arguments each frame. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked every frame, receiving the SFML event.
For frame events the std::optional<sf::Event> is always std::nullopt — use the no-argument overload unless you specifically need the optional parameter in your callback signature.
| callback | Function invoked with the SFML event (always nullopt) each frame. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a no-argument callback invoked when the application window gains OS focus.
| callback | Function invoked with no arguments when focus is gained. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when the application window gains OS focus, receiving the raw SFML event.
| callback | Function invoked with the SFML event when focus is gained. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a no-argument callback invoked when the application window loses OS focus.
| callback | Function invoked with no arguments when focus is lost. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when the application window loses OS focus, receiving the raw SFML event.
| callback | Function invoked with the SFML event when focus is lost. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inlinevirtualinherited |
Called by AppManager on every registered component when the window is resized. Override in responsive components to reflow to the new pixel size (the framework keeps a 1:1 view, so width/height are window pixels).
|
inherited |
Register a no-argument callback invoked when the application window is resized.
| callback | Function invoked with no arguments on window resize. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Register a callback invoked when the application window is resized, receiving the raw SFML event.
| callback | Function invoked with the SFML event on window resize. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
|
inherited |
Implicit conversion to a const sf::Drawable reference.
Allows a Graphic to be passed wherever a raw sf::Drawable& is expected (e.g., window.draw()).
sf::Drawable.
|
virtualinherited |
Invoke all callbacks registered for key.
Called by framework dispatchers. key is the string produced by EnumKey::get(eventEnum).
| key | String key identifying the event. |
| event | SFML event forwarded to each callback. |
|
inherited |
Invoke all callbacks registered for eventName.
Template overload that accepts any enum value directly, converting to a string key via EnumKey::get() internally.
| ENUM_TYPE | Any enum type. |
| eventName | The enum value identifying the event. |
| event | SFML event forwarded to each callback. |
|
inherited |
Fire an enum-keyed event to all matching subscribers.
Iterates all subscribers registered for event and invokes their callbacks for each subscriber that passes the optional filter. Optional resolve and reject system callbacks are called after each component passes or fails the filter respectively.
| ENUM_TYPE | Any enum type. |
| event | The enum value identifying the event to fire. |
| filter | Optional predicate; only subscribers for which this returns true receive the event. Defaults to accepting all subscribers. |
| resolve | Optional callback invoked for each subscriber that passes the filter. |
| reject | Optional callback invoked for each subscriber that fails the filter. |
|
inherited |
Remove a child component from this panel.
|
inherited |
Position this object immediately above obj.
| T | Any type with getGlobalBounds(). |
| obj | Reference object. |
| spacing | Gap in pixels between the two objects. Defaults to 0. |
|
overridevirtualinherited |
Reimplemented from ml::Core.
| void ml::RichTextEditor::setAutoHideToolbar | ( | bool | enabled | ) |
When enabled, the formatting toolbar is hidden until the editor is "active" (the user clicks inside it) and hides again when they click out — so it reads as a plain text area until focused. The text fills the full height while collapsed.
|
inherited |
Position this object immediately below obj.
| T | Any type with getGlobalBounds(). |
| obj | Reference object. |
| spacing | Gap in pixels between the two objects. Defaults to 0. |
|
inherited |
Set the number of vertices per corner arc.
Triggers geometry regeneration.
| count | Vertex count per corner. Must be at least 1. |
|
inherited |
Constrain drag movement to an axis-aligned bounding rectangle.
While bounds are set, the component's position is clamped so that its top-left corner never moves outside bounds during a drag gesture. Bounds are applied in world coordinates.
Call clearDragBounds() to remove the constraint and allow free movement again.
| bounds | The world-space rectangle within which the component may be dragged. |
|
inherited |
Set this component's own enabled intent (_selfEnabled). Public API and non-virtual: there is exactly one enable mechanism. To react to an enable/disable change, override onEnabledChanged — never this.
|
inherited |
Set a flag to an explicit value.
| state | The flag to modify. |
| status | true to enable, false to disable. |
|
inherited |
Set the assumed framerate for movement interpolation.
moveTo generates a queue of intermediate positions based on this value. Defaults to 60 fps. Call this if your application runs at a different target rate to keep animation timing accurate.
| framerate | Target framerate in frames per second. |
|
inherited |
Position this object immediately to the left of obj.
| T | Any type with getGlobalBounds(). |
| obj | Reference object. |
| spacing | Gap in pixels between the two objects. Defaults to 0. |
|
inherited |
Cascade plumbing: set the inherited (_parentEnabled) component of the effective state. Called by the framework when an ancestor's effective state changes (and by Modal/Panel for explicit subtree gating). NOT an override point — react via onEnabledChanged instead.
|
overridevirtual |
Move the panel and shift all children by the same delta.
Reimplemented from ml::Panel.
|
inherited |
Set the corner arc radius.
Triggers geometry regeneration. Values larger than half the shorter side are clamped automatically.
| radius | Corner radius in pixels. |
| void ml::RichTextEditor::setRichText | ( | const std::string & | json | ) |
|
inherited |
Position this object immediately to the right of obj.
| T | Any type with getGlobalBounds(). |
| obj | Reference object. |
| spacing | Gap in pixels between the two objects. Defaults to 0. |
| void ml::RichTextEditor::setSize | ( | const sf::Vector2f & | size | ) |
|
inherited |
Transition to a new state.
Fires the exit callback with the current state, updates the stored state to newState, then fires the enter callback with the new state. Either callback may be unset (nullptr), in which case it is skipped.
| newState | The state to transition into. |
|
inherited |
Transition to a new state.
Fires the exit callback with the current state, updates the stored state to newState, then fires the enter callback with the new state. Either callback may be unset (nullptr), in which case it is skipped.
| newState | The state to transition into. |
| void ml::RichTextEditor::setValue | ( | const std::string & | text | ) |
|
overridevirtual |
Reimplemented from ml::Panel.
|
inherited |
Subscribe to an enum-keyed event with a no-argument callback.
Convenience overload for callbacks that do not need access to the raw SFML event.
| ENUM_TYPE | Any enum type. |
| event | The enum value identifying the event to subscribe to. |
| callback | Function invoked with no arguments when the event fires. |
|
inherited |
Subscribe to an enum-keyed event with a full SFML event callback.
The callback is invoked each time the event fires and the framework's filter (defined by the associated EventDispatcher) passes this component. The std::optional<sf::Event> parameter carries the raw SFML event when one is available, or std::nullopt for frame events.
| ENUM_TYPE | Any enum type — ml::Event for built-in events, or a manifest event enum for custom events. |
| event | The enum value identifying the event to subscribe to. |
| callback | Function invoked with the SFML event when the event fires. |
|
inherited |
Flip a flag between true and false.
| state | The flag to toggle. |
Find the front-most (last-painted) node in this subtree that satisfies accept, searching topmost-first.
Walks this Core and its descendants in reverse paint order — children before their parent, and within a parent the highest layer first — so the first node for which accept returns true is the one visually on top at that location. Invisible subtrees are skipped.
This is the hit-testing seam the event system uses to route a click to only the top-most interactive target instead of every overlapping one. accept encapsulates the test (e.g. "is hovered AND a click target"), keeping Core free of any geometry/bounds knowledge.
| accept | Predicate evaluated per node, topmost-first. |
nullptr if none match.
|
staticinherited |
|
inlineinherited |
Allow applySettings() to take effect again.
Definition at line 112 of file Themeable.h.
|
inlineinherited |
Resume reacting to global theme changes.
Does NOT immediately re-apply the current theme — call ThemeManager::get() and pass it to onThemeApplied() manually if you want to re-sync immediately after unlocking.
Definition at line 94 of file Themeable.h.
|
inlineinherited |
Unsubscribe from a single event by enum value.
Works with any enum type — ml::Event for built-in events, or a manifest Event enum for custom events.
If called during an EventManager::fire() iteration the removal is deferred until the iteration completes.
| EnumType | Any enum type. Enforced at compile time. |
| event | The enum value identifying the event to remove. |
Definition at line 65 of file Unsubscribable.h.
|
inherited |
Remove all event subscriptions for this component.
Removes every subscription registered across all event names. Called automatically by Core's destructor.
If called during an EventManager::fire() iteration the removal is deferred until the iteration completes.
|
staticconstexprinherited |