From 814be0155a567328f95c3e1a2b7becf4f0b5b977 Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 18 Nov 2021 17:56:12 +0800 Subject: ... --- include/cru/osx/gui/Clipboard.hpp | 31 ++++++++++++++++++++++++++++++ include/cru/osx/gui/UiApplication.hpp | 2 ++ include/cru/platform/gui/Base.hpp | 1 + include/cru/platform/gui/Clipboard.hpp | 9 +++++++++ include/cru/platform/gui/UiApplication.hpp | 2 ++ 5 files changed, 45 insertions(+) create mode 100644 include/cru/osx/gui/Clipboard.hpp create mode 100644 include/cru/platform/gui/Clipboard.hpp (limited to 'include') diff --git a/include/cru/osx/gui/Clipboard.hpp b/include/cru/osx/gui/Clipboard.hpp new file mode 100644 index 00000000..fea97140 --- /dev/null +++ b/include/cru/osx/gui/Clipboard.hpp @@ -0,0 +1,31 @@ +#pragma once +#include "Resource.hpp" + +#include "cru/platform/gui/Base.hpp" +#include "cru/platform/gui/Clipboard.hpp" + +#include + +namespace cru::platform::gui::osx { +namespace details { +class OsxClipboardPrivate; +} + +class OsxClipboard : public OsxGuiResource, public virtual IClipboard { + public: + OsxClipboard(cru::platform::gui::IUiApplication* ui_application, + std::unique_ptr p); + + CRU_DELETE_COPY(OsxClipboard) + CRU_DELETE_MOVE(OsxClipboard) + + ~OsxClipboard() override; + + public: + String GetText() override; + void SetText(String text) override; + + private: + std::unique_ptr p_; +}; +} // namespace cru::platform::gui::osx diff --git a/include/cru/osx/gui/UiApplication.hpp b/include/cru/osx/gui/UiApplication.hpp index a7b88010..e3cb269a 100644 --- a/include/cru/osx/gui/UiApplication.hpp +++ b/include/cru/osx/gui/UiApplication.hpp @@ -46,6 +46,8 @@ class OsxUiApplication : public OsxGuiResource, public virtual IUiApplication { ICursorManager* GetCursorManager() override; + IClipboard* GetClipboard() override; + private: void UnregisterWindow(OsxWindow* window); diff --git a/include/cru/platform/gui/Base.hpp b/include/cru/platform/gui/Base.hpp index 4c2a8034..b432a2e0 100644 --- a/include/cru/platform/gui/Base.hpp +++ b/include/cru/platform/gui/Base.hpp @@ -21,6 +21,7 @@ struct ICursorManager; struct IUiApplication; struct INativeWindow; struct IInputMethodContext; +struct IClipboard; namespace details { struct TagMouseButton {}; diff --git a/include/cru/platform/gui/Clipboard.hpp b/include/cru/platform/gui/Clipboard.hpp new file mode 100644 index 00000000..c3467de5 --- /dev/null +++ b/include/cru/platform/gui/Clipboard.hpp @@ -0,0 +1,9 @@ +#pragma once +#include "Base.hpp" + +namespace cru::platform::gui { +struct IClipboard : virtual IPlatformResource { + virtual String GetText() = 0; + virtual void SetText(String text) = 0; +}; +} // namespace cru::platform::gui diff --git a/include/cru/platform/gui/UiApplication.hpp b/include/cru/platform/gui/UiApplication.hpp index 78c7fae6..be95e71c 100644 --- a/include/cru/platform/gui/UiApplication.hpp +++ b/include/cru/platform/gui/UiApplication.hpp @@ -65,5 +65,7 @@ struct CRU_PLATFORM_GUI_API IUiApplication : public virtual IPlatformResource { virtual cru::platform::graphics::IGraphicsFactory* GetGraphicsFactory() = 0; virtual ICursorManager* GetCursorManager() = 0; + + virtual IClipboard* GetClipboard() = 0; }; } // namespace cru::platform::gui -- cgit v1.2.3