From dc8cbcf41047e5690e688922cd3c058f9428626b Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Tue, 3 Oct 2023 08:33:58 +1100 Subject: [PATCH] [darwin] Refactor events into mac specific files --- .../application/application_darwin_delegate.m | 2 +- v3/pkg/application/webview_window_darwin.m | 20 +-- .../application/webview_window_darwin_drag.m | 2 +- v3/pkg/events/events_darwin.go | 4 +- v3/pkg/events/events_darwin.h | 136 ++++++++++++++++++ 5 files changed, 140 insertions(+), 24 deletions(-) create mode 100644 v3/pkg/events/events_darwin.h diff --git a/v3/pkg/application/application_darwin_delegate.m b/v3/pkg/application/application_darwin_delegate.m index 855b03093..c4a360bd4 100644 --- a/v3/pkg/application/application_darwin_delegate.m +++ b/v3/pkg/application/application_darwin_delegate.m @@ -1,6 +1,6 @@ //go:build darwin #import "application_darwin_delegate.h" -#import "../events/events.h" +#import "../events/events_darwin.h" extern bool hasListeners(unsigned int); @implementation AppDelegate - (void)dealloc diff --git a/v3/pkg/application/webview_window_darwin.m b/v3/pkg/application/webview_window_darwin.m index fb4523a48..b2ee37e09 100644 --- a/v3/pkg/application/webview_window_darwin.m +++ b/v3/pkg/application/webview_window_darwin.m @@ -2,7 +2,7 @@ #import #import #import "webview_window_darwin.h" -#import "../events/events.h" +#import "../events/events_darwin.h" extern void processMessage(unsigned int, const char*); extern void processURLRequest(unsigned int, void *); extern void processWindowKeyDownEvent(unsigned int, const char*); @@ -17,14 +17,10 @@ extern bool hasListeners(unsigned int); [self setMovableByWindowBackground:YES]; return self; } - - (void)keyDown:(NSEvent *)event { - NSUInteger modifierFlags = event.modifierFlags; - // Create an array to hold the modifier strings NSMutableArray *modifierStrings = [NSMutableArray array]; - // Check for modifier flags and add corresponding strings to the array if (modifierFlags & NSEventModifierFlagShift) { [modifierStrings addObject:@"shift"]; @@ -38,29 +34,23 @@ extern bool hasListeners(unsigned int); if (modifierFlags & NSEventModifierFlagCommand) { [modifierStrings addObject:@"cmd"]; } - NSString *keyString = [self keyStringFromEvent:event]; if (keyString.length > 0) { [modifierStrings addObject:keyString]; } - // Combine the modifier strings with the key character NSString *keyEventString = [modifierStrings componentsJoinedByString:@"+"]; - const char* utf8String = [keyEventString UTF8String]; WebviewWindowDelegate *delegate = (WebviewWindowDelegate*)self.delegate; processWindowKeyDownEvent(delegate.windowId, utf8String); } - - (NSString *)keyStringFromEvent:(NSEvent *)event { - // Get the pressed key // Check for special keys like escape and tab NSString *characters = [event characters]; if (characters.length == 0) { return @""; } - if ([characters isEqualToString:@"\r"]) { return @"enter"; } @@ -90,7 +80,6 @@ extern bool hasListeners(unsigned int); if ([characters isEqualToString:@"\x0C"]) { return @"clear"; } - switch ([event keyCode]) { // Function keys case 122: return @"f1"; @@ -113,7 +102,6 @@ extern bool hasListeners(unsigned int); case 79: return @"f18"; case 80: return @"f19"; case 90: return @"f20"; - // Letter keys case 0: return @"a"; case 11: return @"b"; @@ -141,7 +129,6 @@ extern bool hasListeners(unsigned int); case 7: return @"x"; case 16: return @"y"; case 6: return @"z"; - // Number keys case 29: return @"0"; case 18: return @"1"; @@ -153,7 +140,6 @@ extern bool hasListeners(unsigned int); case 26: return @"7"; case 28: return @"8"; case 25: return @"9"; - // Other special keys case 51: return @"delete"; case 117: return @"forward delete"; @@ -164,7 +150,6 @@ extern bool hasListeners(unsigned int); case 48: return @"tab"; case 53: return @"escape"; case 49: return @"space"; - // Punctuation and other keys (for a standard US layout) case 33: return @"["; case 30: return @"]"; @@ -177,12 +162,9 @@ extern bool hasListeners(unsigned int); case 24: return @"="; case 50: return @"`"; case 42: return @"\\"; - default: return @""; } } - - - (BOOL)canBecomeKeyWindow { return YES; } diff --git a/v3/pkg/application/webview_window_darwin_drag.m b/v3/pkg/application/webview_window_darwin_drag.m index 345c5ee37..9a8e9c574 100644 --- a/v3/pkg/application/webview_window_darwin_drag.m +++ b/v3/pkg/application/webview_window_darwin_drag.m @@ -4,7 +4,7 @@ #import #import "webview_window_darwin_drag.h" -#import "../events/events.h" +#import "../events/events_darwin.h" extern void processDragItems(unsigned int windowId, char** arr, int length); diff --git a/v3/pkg/events/events_darwin.go b/v3/pkg/events/events_darwin.go index 12a7c3af4..d6e978ab8 100644 --- a/v3/pkg/events/events_darwin.go +++ b/v3/pkg/events/events_darwin.go @@ -6,12 +6,10 @@ package events #cgo CFLAGS: -x objective-c #cgo LDFLAGS: -framework Cocoa -mmacosx-version-min=10.13 -#include "events.h" +#include "events_darwin.h" #include #include -#include "events.h" - bool hasListener[MAX_EVENTS] = {false}; void registerListener(unsigned int event) { diff --git a/v3/pkg/events/events_darwin.h b/v3/pkg/events/events_darwin.h new file mode 100644 index 000000000..f3bb1bbe4 --- /dev/null +++ b/v3/pkg/events/events_darwin.h @@ -0,0 +1,136 @@ +//go:build darwin + +#ifndef _events_darwin_h +#define _events_darwin_h + +extern void processApplicationEvent(unsigned int, void* data); +extern void processWindowEvent(unsigned int, unsigned int); + +#define EventApplicationDidBecomeActive 1024 +#define EventApplicationDidChangeBackingProperties 1025 +#define EventApplicationDidChangeEffectiveAppearance 1026 +#define EventApplicationDidChangeIcon 1027 +#define EventApplicationDidChangeOcclusionState 1028 +#define EventApplicationDidChangeScreenParameters 1029 +#define EventApplicationDidChangeStatusBarFrame 1030 +#define EventApplicationDidChangeStatusBarOrientation 1031 +#define EventApplicationDidFinishLaunching 1032 +#define EventApplicationDidHide 1033 +#define EventApplicationDidResignActiveNotification 1034 +#define EventApplicationDidUnhide 1035 +#define EventApplicationDidUpdate 1036 +#define EventApplicationWillBecomeActive 1037 +#define EventApplicationWillFinishLaunching 1038 +#define EventApplicationWillHide 1039 +#define EventApplicationWillResignActive 1040 +#define EventApplicationWillTerminate 1041 +#define EventApplicationWillUnhide 1042 +#define EventApplicationWillUpdate 1043 +#define EventApplicationDidChangeTheme 1044 +#define EventWindowDidBecomeKey 1045 +#define EventWindowDidBecomeMain 1046 +#define EventWindowDidBeginSheet 1047 +#define EventWindowDidChangeAlpha 1048 +#define EventWindowDidChangeBackingLocation 1049 +#define EventWindowDidChangeBackingProperties 1050 +#define EventWindowDidChangeCollectionBehavior 1051 +#define EventWindowDidChangeEffectiveAppearance 1052 +#define EventWindowDidChangeOcclusionState 1053 +#define EventWindowDidChangeOrderingMode 1054 +#define EventWindowDidChangeScreen 1055 +#define EventWindowDidChangeScreenParameters 1056 +#define EventWindowDidChangeScreenProfile 1057 +#define EventWindowDidChangeScreenSpace 1058 +#define EventWindowDidChangeScreenSpaceProperties 1059 +#define EventWindowDidChangeSharingType 1060 +#define EventWindowDidChangeSpace 1061 +#define EventWindowDidChangeSpaceOrderingMode 1062 +#define EventWindowDidChangeTitle 1063 +#define EventWindowDidChangeToolbar 1064 +#define EventWindowDidChangeVisibility 1065 +#define EventWindowDidDeminiaturize 1066 +#define EventWindowDidEndSheet 1067 +#define EventWindowDidEnterFullScreen 1068 +#define EventWindowDidEnterVersionBrowser 1069 +#define EventWindowDidExitFullScreen 1070 +#define EventWindowDidExitVersionBrowser 1071 +#define EventWindowDidExpose 1072 +#define EventWindowDidFocus 1073 +#define EventWindowDidMiniaturize 1074 +#define EventWindowDidMove 1075 +#define EventWindowDidOrderOffScreen 1076 +#define EventWindowDidOrderOnScreen 1077 +#define EventWindowDidResignKey 1078 +#define EventWindowDidResignMain 1079 +#define EventWindowDidResize 1080 +#define EventWindowDidUpdate 1081 +#define EventWindowDidUpdateAlpha 1082 +#define EventWindowDidUpdateCollectionBehavior 1083 +#define EventWindowDidUpdateCollectionProperties 1084 +#define EventWindowDidUpdateShadow 1085 +#define EventWindowDidUpdateTitle 1086 +#define EventWindowDidUpdateToolbar 1087 +#define EventWindowDidUpdateVisibility 1088 +#define EventWindowShouldClose 1089 +#define EventWindowWillBecomeKey 1090 +#define EventWindowWillBecomeMain 1091 +#define EventWindowWillBeginSheet 1092 +#define EventWindowWillChangeOrderingMode 1093 +#define EventWindowWillClose 1094 +#define EventWindowWillDeminiaturize 1095 +#define EventWindowWillEnterFullScreen 1096 +#define EventWindowWillEnterVersionBrowser 1097 +#define EventWindowWillExitFullScreen 1098 +#define EventWindowWillExitVersionBrowser 1099 +#define EventWindowWillFocus 1100 +#define EventWindowWillMiniaturize 1101 +#define EventWindowWillMove 1102 +#define EventWindowWillOrderOffScreen 1103 +#define EventWindowWillOrderOnScreen 1104 +#define EventWindowWillResignMain 1105 +#define EventWindowWillResize 1106 +#define EventWindowWillUnfocus 1107 +#define EventWindowWillUpdate 1108 +#define EventWindowWillUpdateAlpha 1109 +#define EventWindowWillUpdateCollectionBehavior 1110 +#define EventWindowWillUpdateCollectionProperties 1111 +#define EventWindowWillUpdateShadow 1112 +#define EventWindowWillUpdateTitle 1113 +#define EventWindowWillUpdateToolbar 1114 +#define EventWindowWillUpdateVisibility 1115 +#define EventWindowWillUseStandardFrame 1116 +#define EventMenuWillOpen 1117 +#define EventMenuDidOpen 1118 +#define EventMenuDidClose 1119 +#define EventMenuWillSendAction 1120 +#define EventMenuDidSendAction 1121 +#define EventMenuWillHighlightItem 1122 +#define EventMenuDidHighlightItem 1123 +#define EventMenuWillDisplayItem 1124 +#define EventMenuDidDisplayItem 1125 +#define EventMenuWillAddItem 1126 +#define EventMenuDidAddItem 1127 +#define EventMenuWillRemoveItem 1128 +#define EventMenuDidRemoveItem 1129 +#define EventMenuWillBeginTracking 1130 +#define EventMenuDidBeginTracking 1131 +#define EventMenuWillEndTracking 1132 +#define EventMenuDidEndTracking 1133 +#define EventMenuWillUpdate 1134 +#define EventMenuDidUpdate 1135 +#define EventMenuWillPopUp 1136 +#define EventMenuDidPopUp 1137 +#define EventMenuWillSendActionToItem 1138 +#define EventMenuDidSendActionToItem 1139 +#define EventWebViewDidStartProvisionalNavigation 1140 +#define EventWebViewDidReceiveServerRedirectForProvisionalNavigation 1141 +#define EventWebViewDidFinishNavigation 1142 +#define EventWebViewDidCommitNavigation 1143 +#define EventWindowFileDraggingEntered 1144 +#define EventWindowFileDraggingPerformed 1145 +#define EventWindowFileDraggingExited 1146 + +#define MAX_EVENTS 124 + + +#endif \ No newline at end of file