diff options
author | crupest <crupest@outlook.com> | 2021-11-18 17:56:12 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-11-18 17:56:12 +0800 |
commit | 814be0155a567328f95c3e1a2b7becf4f0b5b977 (patch) | |
tree | 2d9c0d041c6e94ce5cf373f85cfa75ddd939e22b /include | |
parent | 0f3e84f0ef4c62d20e5cb4d9e5677ec39afb894d (diff) | |
download | cru-814be0155a567328f95c3e1a2b7becf4f0b5b977.tar.gz cru-814be0155a567328f95c3e1a2b7becf4f0b5b977.tar.bz2 cru-814be0155a567328f95c3e1a2b7becf4f0b5b977.zip |
...
Diffstat (limited to 'include')
-rw-r--r-- | include/cru/osx/gui/Clipboard.hpp | 31 | ||||
-rw-r--r-- | include/cru/osx/gui/UiApplication.hpp | 2 | ||||
-rw-r--r-- | include/cru/platform/gui/Base.hpp | 1 | ||||
-rw-r--r-- | include/cru/platform/gui/Clipboard.hpp | 9 | ||||
-rw-r--r-- | include/cru/platform/gui/UiApplication.hpp | 2 |
5 files changed, 45 insertions, 0 deletions
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 <memory> + +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<details::OsxClipboardPrivate> p); + + CRU_DELETE_COPY(OsxClipboard) + CRU_DELETE_MOVE(OsxClipboard) + + ~OsxClipboard() override; + + public: + String GetText() override; + void SetText(String text) override; + + private: + std::unique_ptr<details::OsxClipboardPrivate> 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 |