diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-28 19:28:35 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-28 19:28:35 +0800 |
| commit | e4fd76c113e43aa0fa00cf05a14cb12db080ba78 (patch) | |
| tree | 4174347e22625aa4e0151ece714708d46c10bfd1 /src/platform/gui/sdl/Window.cpp | |
| parent | fa9e88a3a753de0f7a33efcf6a2671c28f099ba3 (diff) | |
| download | cru-e4fd76c113e43aa0fa00cf05a14cb12db080ba78.tar.gz cru-e4fd76c113e43aa0fa00cf05a14cb12db080ba78.tar.bz2 cru-e4fd76c113e43aa0fa00cf05a14cb12db080ba78.zip | |
Impl cursor on sdl.
Diffstat (limited to 'src/platform/gui/sdl/Window.cpp')
| -rw-r--r-- | src/platform/gui/sdl/Window.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/platform/gui/sdl/Window.cpp b/src/platform/gui/sdl/Window.cpp index 3ab8cf4d..77cec606 100644 --- a/src/platform/gui/sdl/Window.cpp +++ b/src/platform/gui/sdl/Window.cpp @@ -1,10 +1,12 @@ #include "cru/platform/gui/sdl/Window.h" #include "cru/base/Base.h" +#include "cru/platform/Base.h" #include "cru/platform/GraphicsBase.h" #include "cru/platform/graphics/NullPainter.h" #include "cru/platform/graphics/Painter.h" #include "cru/platform/gui/Window.h" #include "cru/platform/gui/sdl/Base.h" +#include "cru/platform/gui/sdl/Cursor.h" #include "cru/platform/gui/sdl/Input.h" #include "cru/platform/gui/sdl/UiApplication.h" @@ -155,8 +157,10 @@ bool SdlWindow::ReleaseMouse() { } void SdlWindow::SetCursor(std::shared_ptr<ICursor> cursor) { - if (!sdl_window_) return; - NotImplemented(); + cursor_ = std::move(cursor); + if (sdl_window_) { + DoUpdateCursor(); + } } void SdlWindow::SetToForeground() { @@ -225,9 +229,9 @@ void SdlWindow::DoCreateWindow() { CheckSdlReturn( SDL_SetWindowPosition(sdl_window_, client_rect_.left, client_rect_.top)); - CheckSdlReturn(SDL_SetWindowParent( - sdl_window_, parent_ == nullptr ? nullptr : parent_->sdl_window_)); - CheckSdlReturn(SDL_SyncWindow(sdl_window_)); + + DoUpdateParent(); + DoUpdateCursor(); } void SdlWindow::DoUpdateClientRect() { @@ -259,6 +263,13 @@ void SdlWindow::DoUpdateTitle() { CheckSdlReturn(SDL_SyncWindow(sdl_window_)); } +void SdlWindow::DoUpdateCursor() { + assert(sdl_window_); + auto cursor = CheckPlatform<SdlCursor>(cursor_, GetPlatformId()); + CheckSdlReturn(SDL_SetCursor(cursor->GetSdlCursor())); + CheckSdlReturn(SDL_SyncWindow(sdl_window_)); +} + namespace { NativeMouseButtonEventArgs ConvertMouseButtonEvent( const SDL_MouseButtonEvent& event) { |
