diff options
Diffstat (limited to 'include/cru/ui/events/MouseEventArgs.h')
-rw-r--r-- | include/cru/ui/events/MouseEventArgs.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/include/cru/ui/events/MouseEventArgs.h b/include/cru/ui/events/MouseEventArgs.h new file mode 100644 index 00000000..11ce6463 --- /dev/null +++ b/include/cru/ui/events/MouseEventArgs.h @@ -0,0 +1,27 @@ +#pragma once +#include "UiEventArgs.h" + +#include <optional> + +namespace cru::ui::events { +class CRU_UI_API MouseEventArgs : public UiEventArgs { + public: + MouseEventArgs(Object* sender, Object* original_sender, + const std::optional<Point>& point = std::nullopt) + : UiEventArgs(sender, original_sender), point_(point) {} + MouseEventArgs(const MouseEventArgs& other) = default; + MouseEventArgs(MouseEventArgs&& other) = default; + MouseEventArgs& operator=(const MouseEventArgs& other) = default; + MouseEventArgs& operator=(MouseEventArgs&& other) = default; + ~MouseEventArgs() override = default; + + // This point is relative to window client lefttop. + Point GetPoint() const { return point_.value_or(Point{}); } + Point GetPoint(render::RenderObject* render_target) const; + Point GetPointToContent(render::RenderObject* render_target) const; + Point GetPointOfScreen() const; + + private: + std::optional<Point> point_; +}; +} // namespace cru::ui::events |