diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-30 15:40:08 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-30 15:40:08 +0800 |
| commit | a9e3b3ee511f563d1abb67cbe042c3aeb0eca5db (patch) | |
| tree | 0e222bf6853badb18a20e1f747ceb27c850881f6 /src/platform/gui | |
| parent | 7d20efa165289db22c7ff620f1c59f422a025820 (diff) | |
| download | cru-a9e3b3ee511f563d1abb67cbe042c3aeb0eca5db.tar.gz cru-a9e3b3ee511f563d1abb67cbe042c3aeb0eca5db.tar.bz2 cru-a9e3b3ee511f563d1abb67cbe042c3aeb0eca5db.zip | |
Impl sdl clipboard.
Diffstat (limited to 'src/platform/gui')
| -rw-r--r-- | src/platform/gui/sdl/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/platform/gui/sdl/Clipboard.cpp | 18 | ||||
| -rw-r--r-- | src/platform/gui/sdl/UiApplication.cpp | 12 |
3 files changed, 29 insertions, 2 deletions
diff --git a/src/platform/gui/sdl/CMakeLists.txt b/src/platform/gui/sdl/CMakeLists.txt index c01e8bbf..eadc3bac 100644 --- a/src/platform/gui/sdl/CMakeLists.txt +++ b/src/platform/gui/sdl/CMakeLists.txt @@ -1,5 +1,6 @@ add_library(CruPlatformGuiSdl Base.cpp + Clipboard.cpp Cursor.cpp Input.cpp InputMethod.cpp diff --git a/src/platform/gui/sdl/Clipboard.cpp b/src/platform/gui/sdl/Clipboard.cpp new file mode 100644 index 00000000..019c93d0 --- /dev/null +++ b/src/platform/gui/sdl/Clipboard.cpp @@ -0,0 +1,18 @@ +#include "cru/platform/gui/sdl/Clipboard.h" +#include "cru/platform/gui/sdl/Base.h" + +#include <SDL3/SDL_clipboard.h> + +namespace cru::platform::gui::sdl { +std::string SdlClipboard::GetText() { + auto text = SDL_GetClipboardText(); + std::string result(text); + SDL_free(text); + return result; +} + +void SdlClipboard::SetText(std::string text) { + CheckSdlReturn(SDL_SetClipboardText(text.c_str())); +} + +} // namespace cru::platform::gui::sdl diff --git a/src/platform/gui/sdl/UiApplication.cpp b/src/platform/gui/sdl/UiApplication.cpp index 6d52b5f7..42c50f4d 100644 --- a/src/platform/gui/sdl/UiApplication.cpp +++ b/src/platform/gui/sdl/UiApplication.cpp @@ -3,6 +3,8 @@ #include "cru/base/Base.h" #include "cru/platform/graphics/Factory.h" #include "cru/platform/gui/sdl/Base.h" +#include "cru/platform/gui/sdl/Clipboard.h" +#include "cru/platform/gui/sdl/Cursor.h" #include "cru/platform/gui/sdl/Window.h" #include <SDL3/SDL_events.h> @@ -11,6 +13,7 @@ #include <algorithm> #include <chrono> #include <functional> +#include <memory> #include <optional> namespace cru::platform::gui::sdl { @@ -21,6 +24,9 @@ SdlUiApplication::SdlUiApplication(graphics::IGraphicsFactory* graphics_factory, quit_code_(0) { CheckSdlReturn(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS)); empty_event_type_ = SDL_RegisterEvents(1); + + cursor_manager_ = std::make_unique<SdlCursorManager>(); + clipboard_ = std::make_unique<SdlClipboard>(); } SdlUiApplication::~SdlUiApplication() { @@ -117,9 +123,11 @@ SdlUiApplication::GetGraphicsFactory() { return graphics_factory_; } -ICursorManager* SdlUiApplication::GetCursorManager() { NotImplemented(); } +ICursorManager* SdlUiApplication::GetCursorManager() { + return cursor_manager_.get(); +} -IClipboard* SdlUiApplication::GetClipboard() { NotImplemented(); } +IClipboard* SdlUiApplication::GetClipboard() { return clipboard_.get(); } IMenu* SdlUiApplication::GetApplicationMenu() { return nullptr; } |
