diff options
author | crupest <crupest@outlook.com> | 2021-05-12 08:36:43 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-05-12 08:36:43 +0800 |
commit | 02baef645090f0514fa14b43aecf954fd55257dc (patch) | |
tree | 3d26669c5781238fb4737c9b315ad534b7c0a3e0 /src/ui/host/WindowHost.cpp | |
parent | f54032b94817bc5a03be68d39758e9b3d67a1b59 (diff) | |
download | cru-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.cpp | 21 |
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 |