diff options
Diffstat (limited to 'include/cru/osx/gui')
-rw-r--r-- | include/cru/osx/gui/Cursor.hpp | 43 | ||||
-rw-r--r-- | include/cru/osx/gui/Window.hpp | 2 |
2 files changed, 44 insertions, 1 deletions
diff --git a/include/cru/osx/gui/Cursor.hpp b/include/cru/osx/gui/Cursor.hpp new file mode 100644 index 00000000..497f5853 --- /dev/null +++ b/include/cru/osx/gui/Cursor.hpp @@ -0,0 +1,43 @@ +#pragma once +#include "Resource.hpp" +#include "cru/platform/gui/Cursor.hpp" + +#include <memory> + +namespace cru::platform::gui::osx { +namespace details { +class OsxWindowPrivate; +class OsxCursorPrivate; +class OsxCursorManagerPrivate; +} // namespace details + +class OsxCursor : public OsxGuiResource, public virtual ICursor { + friend class OsxWindow; + friend class details::OsxWindowPrivate; + + public: + OsxCursor(IUiApplication* ui_application, SystemCursorType cursor_type); + CRU_DELETE_COPY(OsxCursor) + CRU_DELETE_MOVE(OsxCursor) + + ~OsxCursor() override; + + private: + std::unique_ptr<details::OsxCursorPrivate> p_; +}; + +class OsxCursorManager : public OsxGuiResource, public virtual ICursorManager { + public: + explicit OsxCursorManager(IUiApplication* ui_application); + + CRU_DELETE_COPY(OsxCursorManager) + CRU_DELETE_MOVE(OsxCursorManager) + + ~OsxCursorManager() override; + + std::shared_ptr<ICursor> GetSystemCursor(SystemCursorType type) override; + + private: + std::unique_ptr<details::OsxCursorManagerPrivate> p_; +}; +} // namespace cru::platform::gui::osx diff --git a/include/cru/osx/gui/Window.hpp b/include/cru/osx/gui/Window.hpp index 56ae83e6..710246bc 100644 --- a/include/cru/osx/gui/Window.hpp +++ b/include/cru/osx/gui/Window.hpp @@ -133,6 +133,6 @@ class OsxInputMethodContext : public OsxGuiResource, IEvent<StringView>* TextEvent() override; private: - details::OsxInputMethodContextPrivate* p_; + std::unique_ptr<details::OsxInputMethodContextPrivate> p_; }; } // namespace cru::platform::gui::osx |