Loading...
Searching...
No Matches
Clickable.h
Go to the documentation of this file.
1// Copyright (c) 2025 Dave R. Smith. All rights reserved.
2// Malena Framework — Proprietary Software. See LICENSE for terms.
3
4//
5// Created by Dave Smith on 3/20/26.
6//
7
8#ifndef MALENA_CLICKABLE_H
9#define MALENA_CLICKABLE_H
10
14#include <optional>
15namespace ml
16{
44 class Core;
46 {
47 public:
56 void onClick(std::function<void()> callback);
57
66 void onClick(std::function<void(const std::optional<sf::Event>& event)> callback);
67 };
68
70 class MALENA_API ClickableDispatcher : public EventDispatcher
71 {
72 inline static EventReceiver* _focused = nullptr;
73 public:
74 bool occurred(const std::optional<sf::Event>& event) override;
75 bool filter(const std::optional<sf::Event>& event, Core* component) override;
76 void fire(const std::optional<sf::Event>& event) override;
77 };
79
80} // namespace ml
81
82ML_EXPORT(ClickableDispatcher);
83#endif // MALENA_CLICKABLE_H
#define ML_EXPORT(ClassName)
Register a Malena type with the framework.
Definition Export.h:43
void onClick(std::function< void(const std::optional< sf::Event > &event)> callback)
Register a callback invoked when this component is clicked, receiving the raw SFML event.
void onClick(std::function< void()> callback)
Register a no-argument callback invoked when this component is clicked.
Virtual base class for all Malena framework objects.
Definition Core.h:69
Base class for all per-event dispatchers in the Malena event system.
Base class for all event-receiving traits.
#define MALENA_API
Definition Component.h:22