aboutsummaryrefslogtreecommitdiff
path: root/include/cru/osx/gui/InputMethod.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/osx/gui/InputMethod.hpp')
-rw-r--r--include/cru/osx/gui/InputMethod.hpp50
1 files changed, 49 insertions, 1 deletions
diff --git a/include/cru/osx/gui/InputMethod.hpp b/include/cru/osx/gui/InputMethod.hpp
index 426392dd..79f06f36 100644
--- a/include/cru/osx/gui/InputMethod.hpp
+++ b/include/cru/osx/gui/InputMethod.hpp
@@ -1,3 +1,51 @@
#pragma once
#include "Resource.hpp"
-#include "Window.hpp"
+
+#include "cru/platform/gui/InputMethod.hpp"
+
+namespace cru::platform::gui::osx {
+class OsxWindow;
+
+namespace details {
+class OsxInputMethodContextPrivate;
+}
+
+class OsxInputMethodContext : public OsxGuiResource,
+ public virtual IInputMethodContext {
+ friend details::OsxInputMethodContextPrivate;
+
+ public:
+ explicit OsxInputMethodContext(OsxWindow* window);
+
+ CRU_DELETE_COPY(OsxInputMethodContext)
+ CRU_DELETE_MOVE(OsxInputMethodContext)
+
+ ~OsxInputMethodContext() override;
+
+ public:
+ bool ShouldManuallyDrawCompositionText() override;
+
+ void EnableIME() override;
+
+ void DisableIME() override;
+
+ void CompleteComposition() override;
+
+ void CancelComposition() override;
+
+ CompositionText GetCompositionText() override;
+
+ void SetCandidateWindowPosition(const Point& point) override;
+
+ IEvent<std::nullptr_t>* CompositionStartEvent() override;
+
+ IEvent<std::nullptr_t>* CompositionEndEvent() override;
+
+ IEvent<std::nullptr_t>* CompositionEvent() override;
+
+ IEvent<StringView>* TextEvent() override;
+
+ private:
+ std::unique_ptr<details::OsxInputMethodContextPrivate> p_;
+};
+} // namespace cru::platform::gui::osx