aboutsummaryrefslogtreecommitdiff
path: root/src/ui/events/MouseEventArgs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/events/MouseEventArgs.cpp')
-rw-r--r--src/ui/events/MouseEventArgs.cpp14
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