mirror of
https://github.com/zebrajr/ladybird.git
synced 2025-12-06 12:20:00 +01:00
UI/AppKit: Support dead keys on MacOS
This commit is contained in:
parent
35254d17d1
commit
e4e18ca84b
|
|
@ -38,7 +38,7 @@
|
|||
|
||||
@end
|
||||
|
||||
@interface LadybirdWebView : NSView <NSMenuDelegate>
|
||||
@interface LadybirdWebView : NSView <NSMenuDelegate, NSTextInputClient>
|
||||
|
||||
- (instancetype)init:(id<LadybirdWebViewObserver>)observer;
|
||||
- (instancetype)initAsChild:(id<LadybirdWebViewObserver>)observer
|
||||
|
|
|
|||
|
|
@ -321,7 +321,7 @@ struct HideCursor {
|
|||
if (self == nil) {
|
||||
return;
|
||||
}
|
||||
NSEvent* event = Ladybird::key_event_to_ns_event(key_event);
|
||||
auto* event = Ladybird::key_event_to_ns_event(key_event);
|
||||
|
||||
self.event_being_redispatched = event;
|
||||
[NSApp sendEvent:event];
|
||||
|
|
@ -1072,8 +1072,7 @@ struct HideCursor {
|
|||
return;
|
||||
}
|
||||
|
||||
auto key_event = Ladybird::ns_event_to_key_event(Web::KeyEvent::Type::KeyDown, event);
|
||||
m_web_view_bridge->enqueue_input_event(move(key_event));
|
||||
[self interpretKeyEvents:@[ event ]];
|
||||
}
|
||||
|
||||
- (void)keyUp:(NSEvent*)event
|
||||
|
|
@ -1123,6 +1122,81 @@ struct HideCursor {
|
|||
// prevent this from happening. See: https://stackoverflow.com/a/20197686
|
||||
}
|
||||
|
||||
- (BOOL)canBecomeKeyView
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
|
||||
#pragma mark - NSResponder
|
||||
|
||||
- (BOOL)acceptsFirstResponder
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
|
||||
#pragma mark - NSTextInputClient
|
||||
|
||||
- (void)insertText:(id)string replacementRange:(NSRange)replacementRange
|
||||
{
|
||||
auto* event = [NSApp currentEvent];
|
||||
if (event && event.type == NSEventTypeKeyDown) {
|
||||
auto key_event = Ladybird::ns_event_to_key_event(Web::KeyEvent::Type::KeyDown, event);
|
||||
m_web_view_bridge->enqueue_input_event(move(key_event));
|
||||
}
|
||||
}
|
||||
|
||||
- (void)doCommandBySelector:(SEL)selector
|
||||
{
|
||||
auto* event = [NSApp currentEvent];
|
||||
if (event && event.type == NSEventTypeKeyDown) {
|
||||
auto key_event = Ladybird::ns_event_to_key_event(Web::KeyEvent::Type::KeyDown, event);
|
||||
m_web_view_bridge->enqueue_input_event(move(key_event));
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)hasMarkedText
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (NSRange)markedRange
|
||||
{
|
||||
return NSMakeRange(NSNotFound, 0);
|
||||
}
|
||||
|
||||
- (NSRange)selectedRange
|
||||
{
|
||||
return NSMakeRange(NSNotFound, 0);
|
||||
}
|
||||
|
||||
- (void)setMarkedText:(id)string selectedRange:(NSRange)selectedRange replacementRange:(NSRange)replacementRange
|
||||
{
|
||||
}
|
||||
|
||||
- (void)unmarkText
|
||||
{
|
||||
}
|
||||
|
||||
- (NSArray<NSAttributedStringKey>*)validAttributesForMarkedText
|
||||
{
|
||||
return @[];
|
||||
}
|
||||
|
||||
- (NSAttributedString*)attributedSubstringForProposedRange:(NSRange)range actualRange:(NSRangePointer)actualRange
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSUInteger)characterIndexForPoint:(NSPoint)point
|
||||
{
|
||||
return NSNotFound;
|
||||
}
|
||||
|
||||
- (NSRect)firstRectForCharacterRange:(NSRange)range actualRange:(NSRangePointer)actualRange
|
||||
{
|
||||
return NSZeroRect;
|
||||
}
|
||||
|
||||
#pragma mark - NSDraggingDestination
|
||||
|
||||
- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)event
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user