aboutsummaryrefslogtreecommitdiff
path: root/src/ui/host/WindowHost.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/host/WindowHost.cpp')
-rw-r--r--src/ui/host/WindowHost.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/ui/host/WindowHost.cpp b/src/ui/host/WindowHost.cpp
index 5e107733..eac2ef41 100644
--- a/src/ui/host/WindowHost.cpp
+++ b/src/ui/host/WindowHost.cpp
@@ -422,9 +422,13 @@ void WindowHost::DispatchMouseHoverControlChangeEvent(
void WindowHost::UpdateCursor() {
if (native_window_) {
- const auto capture = GetMouseCaptureControl();
- native_window_->SetCursor(
- (capture ? capture : GetMouseHoverControl())->GetInheritedCursor());
+ if (override_cursor_) {
+ native_window_->SetCursor(override_cursor_);
+ } else {
+ const auto capture = GetMouseCaptureControl();
+ native_window_->SetCursor(
+ (capture ? capture : GetMouseHoverControl())->GetInheritedCursor());
+ }
}
}
@@ -437,4 +441,15 @@ controls::Control* WindowHost::HitTest(const Point& point) {
}
return root_control_;
}
+
+std::shared_ptr<platform::gui::ICursor> WindowHost::GetOverrideCursor() {
+ return override_cursor_;
+}
+
+void WindowHost::SetOverrideCursor(
+ std::shared_ptr<platform::gui::ICursor> cursor) {
+ if (cursor == override_cursor_) return;
+ override_cursor_ = cursor;
+ UpdateCursor();
+}
} // namespace cru::ui::host