aboutsummaryrefslogtreecommitdiff
path: root/src/ui/host/WindowHost.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-05-12 08:36:43 +0800
committercrupest <crupest@outlook.com>2021-05-12 08:36:43 +0800
commit02baef645090f0514fa14b43aecf954fd55257dc (patch)
tree3d26669c5781238fb4737c9b315ad534b7c0a3e0 /src/ui/host/WindowHost.cpp
parentf54032b94817bc5a03be68d39758e9b3d67a1b59 (diff)
downloadcru-02baef645090f0514fa14b43aecf954fd55257dc.tar.gz
cru-02baef645090f0514fa14b43aecf954fd55257dc.tar.bz2
cru-02baef645090f0514fa14b43aecf954fd55257dc.zip
...
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