diff options
Diffstat (limited to 'src/ui/events/MouseEventArgs.cpp')
-rw-r--r-- | src/ui/events/MouseEventArgs.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/ui/events/MouseEventArgs.cpp b/src/ui/events/MouseEventArgs.cpp index b27bb9d4..39424c65 100644 --- a/src/ui/events/MouseEventArgs.cpp +++ b/src/ui/events/MouseEventArgs.cpp @@ -1,5 +1,7 @@ #include "cru/ui/events/MouseEventArgs.hpp" +#include "cru/ui/controls/Control.hpp" +#include "cru/ui/host/WindowHost.hpp" #include "cru/ui/render/RenderObject.hpp" namespace cru::ui::events { @@ -11,4 +13,16 @@ Point MouseEventArgs::GetPointToContent( render::RenderObject* render_object) const { return render_object->FromRootToContent(GetPoint()); } + +Point MouseEventArgs::GetPointOfScreen() const { + auto sender = GetSender(); + if (auto control = dynamic_cast<controls::Control*>(sender)) { + if (auto host = control->GetWindowHost()) + return GetPoint() + control->GetWindowHost() + ->GetNativeWindow() + ->GetClientRect() + .GetLeftTop(); + } + return GetPoint(); +} } // namespace cru::ui::events |