aboutsummaryrefslogtreecommitdiff
path: root/src/osx/gui/Window.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/osx/gui/Window.mm')
-rw-r--r--src/osx/gui/Window.mm75
1 files changed, 42 insertions, 33 deletions
diff --git a/src/osx/gui/Window.mm b/src/osx/gui/Window.mm
index 136c3064..f64c096a 100644
--- a/src/osx/gui/Window.mm
+++ b/src/osx/gui/Window.mm
@@ -293,39 +293,6 @@ IInputMethodContext* OsxWindow::GetInputMethodContext() { return p_->input_metho
- (BOOL)canBecomeKeyWindow {
return YES;
}
-
-- (void)keyDown:(NSEvent*)event {
- cru::log::TagDebug(u"CruWindow", u"Recieved key down.");
-
- cru::platform::gui::KeyModifier key_modifier;
- if (event.modifierFlags & NSEventModifierFlagControl)
- key_modifier |= cru::platform::gui::KeyModifiers::ctrl;
- if (event.modifierFlags & NSEventModifierFlagOption)
- key_modifier |= cru::platform::gui::KeyModifiers::alt;
- if (event.modifierFlags & NSEventModifierFlagShift)
- key_modifier |= cru::platform::gui::KeyModifiers::shift;
- auto c = cru::platform::gui::osx::KeyCodeFromOsxToCru(event.keyCode);
-
- _p->OnKeyDown(c, key_modifier);
-
- [super keyDown:event];
-}
-
-- (void)keyUp:(NSEvent*)event {
- cru::log::TagDebug(u"CruWindow", u"Recieved key up.");
-
- cru::platform::gui::KeyModifier key_modifier;
- if (event.modifierFlags & NSEventModifierFlagControl)
- key_modifier |= cru::platform::gui::KeyModifiers::ctrl;
- if (event.modifierFlags & NSEventModifierFlagOption)
- key_modifier |= cru::platform::gui::KeyModifiers::alt;
- if (event.modifierFlags & NSEventModifierFlagShift)
- key_modifier |= cru::platform::gui::KeyModifiers::shift;
- auto c = cru::platform::gui::osx::KeyCodeFromOsxToCru(event.keyCode);
-
- _p->OnKeyUp(c, key_modifier);
- [super keyUp:event];
-}
@end
@implementation CruView {
@@ -459,6 +426,48 @@ IInputMethodContext* OsxWindow::GetInputMethodContext() { return p_->input_metho
_p->OnMouseWheel(static_cast<float>(event.scrollingDeltaY), p, key_modifier);
}
+- (void)keyDown:(NSEvent*)event {
+ cru::log::TagDebug(u"CruWindow", u"Recieved key down.");
+
+ cru::platform::gui::KeyModifier key_modifier;
+ if (event.modifierFlags & NSEventModifierFlagControl)
+ key_modifier |= cru::platform::gui::KeyModifiers::ctrl;
+ if (event.modifierFlags & NSEventModifierFlagOption)
+ key_modifier |= cru::platform::gui::KeyModifiers::alt;
+ if (event.modifierFlags & NSEventModifierFlagShift)
+ key_modifier |= cru::platform::gui::KeyModifiers::shift;
+ auto c = cru::platform::gui::osx::KeyCodeFromOsxToCru(event.keyCode);
+
+ _p->OnKeyDown(c, key_modifier);
+
+ if (dynamic_cast<cru::platform::gui::osx::OsxInputMethodContext*>(
+ _p->GetWindow()->GetInputMethodContext())
+ ->IsEnabled()) {
+ [[self inputContext] handleEvent:event];
+ }
+}
+
+- (void)keyUp:(NSEvent*)event {
+ cru::log::TagDebug(u"CruWindow", u"Recieved key up.");
+
+ cru::platform::gui::KeyModifier key_modifier;
+ if (event.modifierFlags & NSEventModifierFlagControl)
+ key_modifier |= cru::platform::gui::KeyModifiers::ctrl;
+ if (event.modifierFlags & NSEventModifierFlagOption)
+ key_modifier |= cru::platform::gui::KeyModifiers::alt;
+ if (event.modifierFlags & NSEventModifierFlagShift)
+ key_modifier |= cru::platform::gui::KeyModifiers::shift;
+ auto c = cru::platform::gui::osx::KeyCodeFromOsxToCru(event.keyCode);
+
+ _p->OnKeyUp(c, key_modifier);
+
+ if (dynamic_cast<cru::platform::gui::osx::OsxInputMethodContext*>(
+ _p->GetWindow()->GetInputMethodContext())
+ ->IsEnabled()) {
+ [[self inputContext] handleEvent:event];
+ }
+}
+
- (BOOL)hasMarkedText {
return _input_context_text != nil;
}