fix: restore window event redispatching on mac (#27701)
This commit is contained in:
parent
b0a6eb6a53
commit
64eb02b671
1 changed files with 12 additions and 0 deletions
|
@ -6,6 +6,7 @@
|
||||||
#include "shell/browser/api/electron_api_web_contents.h"
|
#include "shell/browser/api/electron_api_web_contents.h"
|
||||||
#include "shell/browser/ui/cocoa/event_dispatching_window.h"
|
#include "shell/browser/ui/cocoa/event_dispatching_window.h"
|
||||||
#include "shell/browser/web_contents_preferences.h"
|
#include "shell/browser/web_contents_preferences.h"
|
||||||
|
#include "ui/base/cocoa/command_dispatcher.h"
|
||||||
#include "ui/events/keycodes/keyboard_codes.h"
|
#include "ui/events/keycodes/keyboard_codes.h"
|
||||||
|
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
@ -58,6 +59,7 @@ bool WebContents::PlatformHandleKeyboardEvent(
|
||||||
[[NSApp mainMenu] performKeyEquivalent:event.os_event])
|
[[NSApp mainMenu] performKeyEquivalent:event.os_event])
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
// Let the window redispatch the OS event
|
||||||
if (event.os_event.window &&
|
if (event.os_event.window &&
|
||||||
[event.os_event.window isKindOfClass:[EventDispatchingWindow class]]) {
|
[event.os_event.window isKindOfClass:[EventDispatchingWindow class]]) {
|
||||||
[event.os_event.window redispatchKeyEvent:event.os_event];
|
[event.os_event.window redispatchKeyEvent:event.os_event];
|
||||||
|
@ -65,6 +67,16 @@ bool WebContents::PlatformHandleKeyboardEvent(
|
||||||
// devtools windows as Widgets in order to take advantage of the
|
// devtools windows as Widgets in order to take advantage of the
|
||||||
// pre-existing redispatch code in bridged_native_widget.
|
// pre-existing redispatch code in bridged_native_widget.
|
||||||
return false;
|
return false;
|
||||||
|
} else if (event.os_event.window &&
|
||||||
|
[event.os_event.window
|
||||||
|
conformsToProtocol:@protocol(CommandDispatchingWindow)]) {
|
||||||
|
NSObject<CommandDispatchingWindow>* window =
|
||||||
|
static_cast<NSObject<CommandDispatchingWindow>*>(event.os_event.window);
|
||||||
|
[[window commandDispatcher] redispatchKeyEvent:event.os_event];
|
||||||
|
// FIXME(clavin): Not exactly sure what to return here, likely the same
|
||||||
|
// situation as the branch above. If a future refactor removes
|
||||||
|
// |EventDispatchingWindow| then only this branch will need to remain.
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue