5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 06:32:10 +08:00

[v3, darwin] Fix leaking WebKit processes on Window close (#2574)

* [v3, darwin] Fix leaking WebKit processes on Window close

* [v3] Remove window from window map if closed
[v3] Implement `HideOnClose` and ensure it isn't removed when closed

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
This commit is contained in:
stffabi 2023-04-12 13:33:00 +02:00 committed by GitHub
parent f335cbd608
commit c8d203d4d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 262 additions and 223 deletions

View File

@ -53,6 +53,16 @@ func main() {
Show()
windowCounter++
})
myMenu.Add("New WebviewWindow (Hide on Close").
SetAccelerator("CmdOrCtrl+H").
OnClick(func(ctx *application.Context) {
app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{HideOnClose: true}).
SetTitle("WebviewWindow "+strconv.Itoa(windowCounter)).
SetPosition(rand.Intn(1000), rand.Intn(800)).
SetURL("https://wails.io").
Show()
windowCounter++
})
myMenu.Add("New Frameless WebviewWindow").
SetAccelerator("CmdOrCtrl+F").
OnClick(func(ctx *application.Context) {

View File

@ -207,6 +207,12 @@ func (a *App) getWindowForID(id uint) *WebviewWindow {
return a.windows[id]
}
func (a *App) deleteWindowByID(id uint) {
a.windowsLock.Lock()
defer a.windowsLock.Unlock()
delete(a.windows, id)
}
func (a *App) On(eventType events.ApplicationEventType, callback func()) {
eventID := uint(eventType)
a.applicationEventListenersLock.Lock()

View File

@ -29,6 +29,7 @@ type WebviewWindowOptions struct {
CSS string
X int
Y int
HideOnClose bool
FullscreenButtonEnabled bool
Hidden bool
EnableFraudulentWebsiteWarnings bool
@ -43,7 +44,6 @@ var WebviewWindowDefaults = &WebviewWindowOptions{
URL: "",
}
type RGBA struct {
Red, Green, Blue, Alpha uint8
}

View File

@ -14,14 +14,14 @@
- (BOOL) resignFirstResponder;
- (WebviewWindow*) initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation;
@property (assign) WKWebView* webView; // We already retain WKWebView since it's part of the Window.
@end
@interface WebviewWindowDelegate : NSObject <NSWindowDelegate, WKScriptMessageHandler, WKNavigationDelegate, WKURLSchemeHandler, NSDraggingDestination>
@property bool hideOnClose;
@property (retain) WKWebView* webView;
@property unsigned int windowId;
@property (retain) NSWindow* window;
@property (retain) NSEvent* leftMouseEvent;
@property unsigned int invisibleTitleBarHeight;
@property NSWindowStyleMask previousStyleMask; // Used to restore the window style mask when using frameless

View File

@ -33,15 +33,33 @@ extern bool hasListeners(unsigned int);
- (BOOL) resignFirstResponder {
return YES;
}
- (void) setDelegate:(id<NSWindowDelegate>) delegate {
[delegate retain];
[super setDelegate: delegate];
}
- (void) dealloc {
// Remove the script handler, otherwise WebviewWindowDelegate won't get deallocated
// See: https://stackoverflow.com/questions/26383031/wkwebview-causes-my-view-controller-to-leak
[self.webView.configuration.userContentController removeScriptMessageHandlerForName:@"external"];
if (self.delegate) {
[self.delegate release];
}
[super dealloc];
}
@end
@implementation WebviewWindowDelegate
- (BOOL)windowShouldClose:(NSWindow *)sender {
if( self.hideOnClose ) {
[NSApp hide:nil];
[sender orderOut:nil];
return false;
}
return true;
}
- (void) dealloc {
// Makes sure to remove the retained properties so the reference counter of the retains are decreased
self.leftMouseEvent = nil;
[super dealloc];
}
// Handle script messages from the external bridge
- (void)userContentController:(nonnull WKUserContentController *)userContentController didReceiveScriptMessage:(nonnull WKScriptMessage *)message {
NSString *m = message.body;
@ -215,12 +233,6 @@ extern bool hasListeners(unsigned int);
}
}
- (void)windowDidClose:(NSNotification *)notification {
if( hasListeners(EventWindowDidClose) ) {
processWindowEvent(self.windowId, EventWindowDidClose);
}
}
- (void)windowDidDeminiaturize:(NSNotification *)notification {
if( hasListeners(EventWindowDidDeminiaturize) ) {
processWindowEvent(self.windowId, EventWindowDidDeminiaturize);

View File

@ -18,8 +18,7 @@ package application
extern void registerListener(unsigned int event);
// Create a new Window
void* windowNew(unsigned int id, int width, int height, bool fraudulentWebsiteWarningEnabled, bool frameless, bool enableDragAndDrop) {
void* windowNew(unsigned int id, int width, int height, bool fraudulentWebsiteWarningEnabled, bool frameless, bool enableDragAndDrop, bool hideOnClose) {
NSWindowStyleMask styleMask = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable;
if (frameless) {
styleMask = NSWindowStyleMaskBorderless | NSWindowStyleMaskResizable;
@ -31,13 +30,16 @@ void* windowNew(unsigned int id, int width, int height, bool fraudulentWebsiteWa
// Create delegate
WebviewWindowDelegate* delegate = [[WebviewWindowDelegate alloc] init];
[delegate autorelease];
// Set delegate
[window setDelegate:delegate];
delegate.windowId = id;
delegate.window = window;
// Add NSView to window
NSView* view = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, width-1, height-1)];
[view autorelease];
[view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
if( frameless ) {
[view setWantsLayer:YES];
@ -48,6 +50,8 @@ void* windowNew(unsigned int id, int width, int height, bool fraudulentWebsiteWa
// Embed wkwebview in window
NSRect frame = NSMakeRect(0, 0, width, height);
WKWebViewConfiguration* config = [[WKWebViewConfiguration alloc] init];
[config autorelease];
config.suppressesIncrementalRendering = true;
config.applicationNameForUserAgent = @"wails.io";
[config setURLSchemeHandler:delegate forURLScheme:@"wails"];
@ -57,10 +61,14 @@ void* windowNew(unsigned int id, int width, int height, bool fraudulentWebsiteWa
// Setup user content controller
WKUserContentController* userContentController = [WKUserContentController new];
[userContentController autorelease];
[userContentController addScriptMessageHandler:delegate name:@"external"];
config.userContentController = userContentController;
WKWebView* webView = [[WKWebView alloc] initWithFrame:frame configuration:config];
[webView autorelease];
[view addSubview:webView];
// support webview events
@ -69,16 +77,18 @@ void* windowNew(unsigned int id, int width, int height, bool fraudulentWebsiteWa
// Ensure webview resizes with the window
[webView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
delegate.webView = webView;
delegate.hideOnClose = false;
delegate.hideOnClose = hideOnClose;
if( enableDragAndDrop ) {
WebviewDrag* dragView = [[WebviewDrag alloc] initWithFrame:NSMakeRect(0, 0, width-1, height-1)];
[dragView autorelease];
[view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
[view addSubview:dragView];
dragView.windowId = id;
}
window.webView = webView;
return window;
}
@ -201,7 +211,8 @@ void navigationLoadURL(void* nsWindow, char* url) {
dispatch_async(dispatch_get_main_queue(), ^{
NSURL* nsURL = [NSURL URLWithString:[NSString stringWithUTF8String:url]];
NSURLRequest* request = [NSURLRequest requestWithURL:nsURL];
[[(WebviewWindowDelegate*)[(WebviewWindow*)nsWindow delegate] webView] loadRequest:request];
WebviewWindow* window = (WebviewWindow*)nsWindow;
[window.webView loadRequest:request];
free(url);
});
}
@ -251,10 +262,10 @@ void windowSetMaxSize(void* nsWindow, int width, int height) {
void windowEnableDevTools(void* nsWindow) {
// Enable devtools on main thread
dispatch_async(dispatch_get_main_queue(), ^{
// Get window delegate
WebviewWindowDelegate* delegate = (WebviewWindowDelegate*)[(WebviewWindow*)nsWindow delegate];
// get main window
WebviewWindow* window = (WebviewWindow*)nsWindow;
// Enable devtools in webview
[delegate.webView.configuration.preferences setValue:@YES forKey:@"developerExtrasEnabled"];
[window.webView.configuration.preferences setValue:@YES forKey:@"developerExtrasEnabled"];
});
}
@ -262,10 +273,10 @@ void windowEnableDevTools(void* nsWindow) {
void windowZoomReset(void* nsWindow) {
// Reset zoom on main thread
dispatch_async(dispatch_get_main_queue(), ^{
// Get window delegate
WebviewWindowDelegate* delegate = (WebviewWindowDelegate*)[(WebviewWindow*)nsWindow delegate];
// get main window
WebviewWindow* window = (WebviewWindow*)nsWindow;
// Reset zoom
[delegate.webView setMagnification:1.0];
[window.webView setMagnification:1.0];
});
}
@ -273,28 +284,29 @@ void windowZoomReset(void* nsWindow) {
void windowZoomSet(void* nsWindow, double zoom) {
// Reset zoom on main thread
dispatch_async(dispatch_get_main_queue(), ^{
// Get window delegate
WebviewWindowDelegate* delegate = (WebviewWindowDelegate*)[(WebviewWindow*)nsWindow delegate];
// get main window
WebviewWindow* window = (WebviewWindow*)nsWindow;
// Reset zoom
[delegate.webView setMagnification:zoom];
[window.webView setMagnification:zoom];
});
}
// windowZoomGet
float windowZoomGet(void* nsWindow) {
// get main window
WebviewWindow* window = (WebviewWindow*)nsWindow;
// Get zoom
WebviewWindowDelegate* delegate = (WebviewWindowDelegate*)[(WebviewWindow*)nsWindow delegate];
return [delegate.webView magnification];
return [window.webView magnification];
}
// windowZoomIn
void windowZoomIn(void* nsWindow) {
// Zoom in on main thread
dispatch_async(dispatch_get_main_queue(), ^{
// Get window delegate
WebviewWindowDelegate* delegate = (WebviewWindowDelegate*)[(WebviewWindow*)nsWindow delegate];
// get main window
WebviewWindow* window = (WebviewWindow*)nsWindow;
// Zoom in
[delegate.webView setMagnification:delegate.webView.magnification + 0.05];
[window.webView setMagnification:window.webView.magnification + 0.05];
});
}
@ -302,13 +314,13 @@ void windowZoomIn(void* nsWindow) {
void windowZoomOut(void* nsWindow) {
// Zoom out on main thread
dispatch_async(dispatch_get_main_queue(), ^{
// Get window delegate
WebviewWindowDelegate* delegate = (WebviewWindowDelegate*)[(WebviewWindow*)nsWindow delegate];
// get main window
WebviewWindow* window = (WebviewWindow*)nsWindow;
// Zoom out
if( delegate.webView.magnification > 1.05 ) {
[delegate.webView setMagnification:delegate.webView.magnification - 0.05];
if( window.webView.magnification > 1.05 ) {
[window.webView setMagnification:window.webView.magnification - 0.05];
} else {
[delegate.webView setMagnification:1.0];
[window.webView setMagnification:1.0];
}
});
}
@ -325,8 +337,9 @@ void windowSetPosition(void* nsWindow, int x, int y) {
void windowExecJS(void* nsWindow, const char* js) {
// Execute JS on main thread
dispatch_async(dispatch_get_main_queue(), ^{
WebviewWindowDelegate* delegate = (WebviewWindowDelegate*)[(WebviewWindow*)nsWindow delegate];
[delegate.webView evaluateJavaScript:[NSString stringWithUTF8String:js] completionHandler:nil];
// get main window
WebviewWindow* window = (WebviewWindow*)nsWindow;
[window.webView evaluateJavaScript:[NSString stringWithUTF8String:js] completionHandler:nil];
free((void*)js);
});
}
@ -339,9 +352,6 @@ void windowSetTranslucent(void* nsWindow) {
// Get window
WebviewWindow* window = (WebviewWindow*)nsWindow;
// Get window delegate
WebviewWindowDelegate* delegate = (WebviewWindowDelegate*)[(WebviewWindow*)nsWindow delegate];
id contentView = [window contentView];
NSVisualEffectView *effectView = [NSVisualEffectView alloc];
NSRect bounds = [contentView bounds];
@ -357,10 +367,10 @@ void windowSetTranslucent(void* nsWindow) {
void webviewSetTransparent(void* nsWindow) {
// Set webview transparent on main thread
dispatch_async(dispatch_get_main_queue(), ^{
// Get window delegate
WebviewWindowDelegate* delegate = (WebviewWindowDelegate*)[(WebviewWindow*)nsWindow delegate];
// get main window
WebviewWindow* window = (WebviewWindow*)nsWindow;
// Set webview background transparent
[delegate.webView setValue:@NO forKey:@"drawsBackground"];
[window.webView setValue:@NO forKey:@"drawsBackground"];
});
}
@ -368,10 +378,10 @@ void webviewSetTransparent(void* nsWindow) {
void webviewSetBackgroundColour(void* nsWindow, int r, int g, int b, int alpha) {
// Set webview background color on main thread
dispatch_async(dispatch_get_main_queue(), ^{
// Get window delegate
WebviewWindowDelegate* delegate = (WebviewWindowDelegate*)[(WebviewWindow*)nsWindow delegate];
// get main window
WebviewWindow* window = (WebviewWindow*)nsWindow;
// Set webview background color
[delegate.webView setValue:[NSColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:alpha/255.0] forKey:@"backgroundColor"];
[window.webView setValue:[NSColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:alpha/255.0] forKey:@"backgroundColor"];
});
}
@ -665,7 +675,7 @@ static void windowRenderHTML(void *window, const char *html) {
// get window delegate
WebviewWindowDelegate* windowDelegate = (WebviewWindowDelegate*)[nsWindow delegate];
// render html
[(WKWebView*)windowDelegate.webView loadHTMLString:[NSString stringWithUTF8String:html] baseURL:nil];
[nsWindow.webView loadHTMLString:[NSString stringWithUTF8String:html] baseURL:nil];
});
}
@ -673,10 +683,8 @@ static void windowInjectCSS(void *window, const char *css) {
dispatch_async(dispatch_get_main_queue(), ^{
// get main window
WebviewWindow* nsWindow = (WebviewWindow*)window;
// get window delegate
WebviewWindowDelegate* windowDelegate = (WebviewWindowDelegate*)[nsWindow delegate];
// inject css
[(WKWebView*)windowDelegate.webView evaluateJavaScript:[NSString stringWithFormat:@"(function() { var style = document.createElement('style'); style.appendChild(document.createTextNode('%@')); document.head.appendChild(style); })();", [NSString stringWithUTF8String:css]] completionHandler:nil];
[nsWindow.webView evaluateJavaScript:[NSString stringWithFormat:@"(function() { var style = document.createElement('style'); style.appendChild(document.createTextNode('%@')); document.head.appendChild(style); })();", [NSString stringWithUTF8String:css]] completionHandler:nil];
free((void*)css);
});
}
@ -763,9 +771,7 @@ static void windowShowMenu(void *window, void *menu, int x, int y) {
// get menu
NSMenu* nsMenu = (NSMenu*)menu;
// get webview
WebviewWindowDelegate* windowDelegate = (WebviewWindowDelegate*)[nsWindow delegate];
// get webview
WKWebView* webView = (WKWebView*)windowDelegate.webView;
WKWebView* webView = nsWindow.webView;
NSPoint point = NSMakePoint(x, y);
[nsMenu popUpMenuPositioningItem:nil atLocation:point inView:webView];
});
@ -895,6 +901,9 @@ func (w *macosWebviewWindow) windowZoom() {
func (w *macosWebviewWindow) close() {
C.windowClose(w.nsWindow)
if !w.parent.options.HideOnClose {
globalApplication.deleteWindowByID(w.parent.id)
}
}
func (w *macosWebviewWindow) zoomIn() {
@ -1069,6 +1078,7 @@ func (w *macosWebviewWindow) run() {
C.bool(w.parent.options.EnableFraudulentWebsiteWarnings),
C.bool(w.parent.options.Frameless),
C.bool(w.parent.options.EnableDragAndDrop),
C.bool(w.parent.options.HideOnClose),
)
w.setTitle(w.parent.options.Title)
w.setAlwaysOnTop(w.parent.options.AlwaysOnTop)
@ -1135,6 +1145,11 @@ func (w *macosWebviewWindow) run() {
C.windowInjectCSS(w.nsWindow, C.CString(w.parent.options.CSS))
}
})
w.parent.On(events.Mac.WindowWillClose, func(_ *WindowEventContext) {
globalApplication.deleteWindowByID(w.parent.id)
})
if w.parent.options.HTML != "" {
w.setHTML(w.parent.options.HTML)
}

View File

@ -20,10 +20,10 @@ package application
@end
void showDevTools(void *window) {
// Get the window delegate
WebviewWindowDelegate* delegate = (WebviewWindowDelegate*)[(NSWindow*)window delegate];
// get main window
WebviewWindow* nsWindow = (WebviewWindow*)window;
dispatch_async(dispatch_get_main_queue(), ^{
[delegate.webView._inspector show];
[nsWindow.webView._inspector show];
});
}

View File

@ -51,7 +51,6 @@ type macEvents struct {
WindowDidChangeTitle WindowEventType
WindowDidChangeToolbar WindowEventType
WindowDidChangeVisibility WindowEventType
WindowDidClose WindowEventType
WindowDidDeminiaturize WindowEventType
WindowDidEndSheet WindowEventType
WindowDidEnterFullScreen WindowEventType
@ -178,87 +177,86 @@ func newMacEvents() macEvents {
WindowDidChangeTitle: 1062,
WindowDidChangeToolbar: 1063,
WindowDidChangeVisibility: 1064,
WindowDidClose: 1065,
WindowDidDeminiaturize: 1066,
WindowDidEndSheet: 1067,
WindowDidEnterFullScreen: 1068,
WindowDidEnterVersionBrowser: 1069,
WindowDidExitFullScreen: 1070,
WindowDidExitVersionBrowser: 1071,
WindowDidExpose: 1072,
WindowDidFocus: 1073,
WindowDidMiniaturize: 1074,
WindowDidMove: 1075,
WindowDidOrderOffScreen: 1076,
WindowDidOrderOnScreen: 1077,
WindowDidResignKey: 1078,
WindowDidResignMain: 1079,
WindowDidResize: 1080,
WindowDidUnfocus: 1081,
WindowDidUpdate: 1082,
WindowDidUpdateAlpha: 1083,
WindowDidUpdateCollectionBehavior: 1084,
WindowDidUpdateCollectionProperties: 1085,
WindowDidUpdateShadow: 1086,
WindowDidUpdateTitle: 1087,
WindowDidUpdateToolbar: 1088,
WindowDidUpdateVisibility: 1089,
WindowWillBecomeKey: 1090,
WindowWillBecomeMain: 1091,
WindowWillBeginSheet: 1092,
WindowWillChangeOrderingMode: 1093,
WindowWillClose: 1094,
WindowWillDeminiaturize: 1095,
WindowWillEnterFullScreen: 1096,
WindowWillEnterVersionBrowser: 1097,
WindowWillExitFullScreen: 1098,
WindowWillExitVersionBrowser: 1099,
WindowWillFocus: 1100,
WindowWillMiniaturize: 1101,
WindowWillMove: 1102,
WindowWillOrderOffScreen: 1103,
WindowWillOrderOnScreen: 1104,
WindowWillResignMain: 1105,
WindowWillResize: 1106,
WindowWillUnfocus: 1107,
WindowWillUpdate: 1108,
WindowWillUpdateAlpha: 1109,
WindowWillUpdateCollectionBehavior: 1110,
WindowWillUpdateCollectionProperties: 1111,
WindowWillUpdateShadow: 1112,
WindowWillUpdateTitle: 1113,
WindowWillUpdateToolbar: 1114,
WindowWillUpdateVisibility: 1115,
WindowWillUseStandardFrame: 1116,
MenuWillOpen: 1117,
MenuDidOpen: 1118,
MenuDidClose: 1119,
MenuWillSendAction: 1120,
MenuDidSendAction: 1121,
MenuWillHighlightItem: 1122,
MenuDidHighlightItem: 1123,
MenuWillDisplayItem: 1124,
MenuDidDisplayItem: 1125,
MenuWillAddItem: 1126,
MenuDidAddItem: 1127,
MenuWillRemoveItem: 1128,
MenuDidRemoveItem: 1129,
MenuWillBeginTracking: 1130,
MenuDidBeginTracking: 1131,
MenuWillEndTracking: 1132,
MenuDidEndTracking: 1133,
MenuWillUpdate: 1134,
MenuDidUpdate: 1135,
MenuWillPopUp: 1136,
MenuDidPopUp: 1137,
MenuWillSendActionToItem: 1138,
MenuDidSendActionToItem: 1139,
WebViewDidStartProvisionalNavigation: 1140,
WebViewDidReceiveServerRedirectForProvisionalNavigation: 1141,
WebViewDidFinishNavigation: 1142,
WebViewDidCommitNavigation: 1143,
WindowFileDraggingEntered: 1144,
WindowFileDraggingPerformed: 1145,
WindowFileDraggingExited: 1146,
WindowDidDeminiaturize: 1065,
WindowDidEndSheet: 1066,
WindowDidEnterFullScreen: 1067,
WindowDidEnterVersionBrowser: 1068,
WindowDidExitFullScreen: 1069,
WindowDidExitVersionBrowser: 1070,
WindowDidExpose: 1071,
WindowDidFocus: 1072,
WindowDidMiniaturize: 1073,
WindowDidMove: 1074,
WindowDidOrderOffScreen: 1075,
WindowDidOrderOnScreen: 1076,
WindowDidResignKey: 1077,
WindowDidResignMain: 1078,
WindowDidResize: 1079,
WindowDidUnfocus: 1080,
WindowDidUpdate: 1081,
WindowDidUpdateAlpha: 1082,
WindowDidUpdateCollectionBehavior: 1083,
WindowDidUpdateCollectionProperties: 1084,
WindowDidUpdateShadow: 1085,
WindowDidUpdateTitle: 1086,
WindowDidUpdateToolbar: 1087,
WindowDidUpdateVisibility: 1088,
WindowWillBecomeKey: 1089,
WindowWillBecomeMain: 1090,
WindowWillBeginSheet: 1091,
WindowWillChangeOrderingMode: 1092,
WindowWillClose: 1093,
WindowWillDeminiaturize: 1094,
WindowWillEnterFullScreen: 1095,
WindowWillEnterVersionBrowser: 1096,
WindowWillExitFullScreen: 1097,
WindowWillExitVersionBrowser: 1098,
WindowWillFocus: 1099,
WindowWillMiniaturize: 1100,
WindowWillMove: 1101,
WindowWillOrderOffScreen: 1102,
WindowWillOrderOnScreen: 1103,
WindowWillResignMain: 1104,
WindowWillResize: 1105,
WindowWillUnfocus: 1106,
WindowWillUpdate: 1107,
WindowWillUpdateAlpha: 1108,
WindowWillUpdateCollectionBehavior: 1109,
WindowWillUpdateCollectionProperties: 1110,
WindowWillUpdateShadow: 1111,
WindowWillUpdateTitle: 1112,
WindowWillUpdateToolbar: 1113,
WindowWillUpdateVisibility: 1114,
WindowWillUseStandardFrame: 1115,
MenuWillOpen: 1116,
MenuDidOpen: 1117,
MenuDidClose: 1118,
MenuWillSendAction: 1119,
MenuDidSendAction: 1120,
MenuWillHighlightItem: 1121,
MenuDidHighlightItem: 1122,
MenuWillDisplayItem: 1123,
MenuDidDisplayItem: 1124,
MenuWillAddItem: 1125,
MenuDidAddItem: 1126,
MenuWillRemoveItem: 1127,
MenuDidRemoveItem: 1128,
MenuWillBeginTracking: 1129,
MenuDidBeginTracking: 1130,
MenuWillEndTracking: 1131,
MenuDidEndTracking: 1132,
MenuWillUpdate: 1133,
MenuDidUpdate: 1134,
MenuWillPopUp: 1135,
MenuDidPopUp: 1136,
MenuWillSendActionToItem: 1137,
MenuDidSendActionToItem: 1138,
WebViewDidStartProvisionalNavigation: 1139,
WebViewDidReceiveServerRedirectForProvisionalNavigation: 1140,
WebViewDidFinishNavigation: 1141,
WebViewDidCommitNavigation: 1142,
WindowFileDraggingEntered: 1143,
WindowFileDraggingPerformed: 1144,
WindowFileDraggingExited: 1145,
}
}

View File

@ -47,90 +47,89 @@ extern void processWindowEvent(unsigned int, unsigned int);
#define EventWindowDidChangeTitle 1062
#define EventWindowDidChangeToolbar 1063
#define EventWindowDidChangeVisibility 1064
#define EventWindowDidClose 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 EventWindowDidUnfocus 1081
#define EventWindowDidUpdate 1082
#define EventWindowDidUpdateAlpha 1083
#define EventWindowDidUpdateCollectionBehavior 1084
#define EventWindowDidUpdateCollectionProperties 1085
#define EventWindowDidUpdateShadow 1086
#define EventWindowDidUpdateTitle 1087
#define EventWindowDidUpdateToolbar 1088
#define EventWindowDidUpdateVisibility 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 EventWindowDidDeminiaturize 1065
#define EventWindowDidEndSheet 1066
#define EventWindowDidEnterFullScreen 1067
#define EventWindowDidEnterVersionBrowser 1068
#define EventWindowDidExitFullScreen 1069
#define EventWindowDidExitVersionBrowser 1070
#define EventWindowDidExpose 1071
#define EventWindowDidFocus 1072
#define EventWindowDidMiniaturize 1073
#define EventWindowDidMove 1074
#define EventWindowDidOrderOffScreen 1075
#define EventWindowDidOrderOnScreen 1076
#define EventWindowDidResignKey 1077
#define EventWindowDidResignMain 1078
#define EventWindowDidResize 1079
#define EventWindowDidUnfocus 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 EventWindowWillBecomeKey 1089
#define EventWindowWillBecomeMain 1090
#define EventWindowWillBeginSheet 1091
#define EventWindowWillChangeOrderingMode 1092
#define EventWindowWillClose 1093
#define EventWindowWillDeminiaturize 1094
#define EventWindowWillEnterFullScreen 1095
#define EventWindowWillEnterVersionBrowser 1096
#define EventWindowWillExitFullScreen 1097
#define EventWindowWillExitVersionBrowser 1098
#define EventWindowWillFocus 1099
#define EventWindowWillMiniaturize 1100
#define EventWindowWillMove 1101
#define EventWindowWillOrderOffScreen 1102
#define EventWindowWillOrderOnScreen 1103
#define EventWindowWillResignMain 1104
#define EventWindowWillResize 1105
#define EventWindowWillUnfocus 1106
#define EventWindowWillUpdate 1107
#define EventWindowWillUpdateAlpha 1108
#define EventWindowWillUpdateCollectionBehavior 1109
#define EventWindowWillUpdateCollectionProperties 1110
#define EventWindowWillUpdateShadow 1111
#define EventWindowWillUpdateTitle 1112
#define EventWindowWillUpdateToolbar 1113
#define EventWindowWillUpdateVisibility 1114
#define EventWindowWillUseStandardFrame 1115
#define EventMenuWillOpen 1116
#define EventMenuDidOpen 1117
#define EventMenuDidClose 1118
#define EventMenuWillSendAction 1119
#define EventMenuDidSendAction 1120
#define EventMenuWillHighlightItem 1121
#define EventMenuDidHighlightItem 1122
#define EventMenuWillDisplayItem 1123
#define EventMenuDidDisplayItem 1124
#define EventMenuWillAddItem 1125
#define EventMenuDidAddItem 1126
#define EventMenuWillRemoveItem 1127
#define EventMenuDidRemoveItem 1128
#define EventMenuWillBeginTracking 1129
#define EventMenuDidBeginTracking 1130
#define EventMenuWillEndTracking 1131
#define EventMenuDidEndTracking 1132
#define EventMenuWillUpdate 1133
#define EventMenuDidUpdate 1134
#define EventMenuWillPopUp 1135
#define EventMenuDidPopUp 1136
#define EventMenuWillSendActionToItem 1137
#define EventMenuDidSendActionToItem 1138
#define EventWebViewDidStartProvisionalNavigation 1139
#define EventWebViewDidReceiveServerRedirectForProvisionalNavigation 1140
#define EventWebViewDidFinishNavigation 1141
#define EventWebViewDidCommitNavigation 1142
#define EventWindowFileDraggingEntered 1143
#define EventWindowFileDraggingPerformed 1144
#define EventWindowFileDraggingExited 1145
#define MAX_EVENTS 1147
#define MAX_EVENTS 1146
#endif

View File

@ -39,7 +39,6 @@ mac:WindowDidChangeSpaceOrderingMode
mac:WindowDidChangeTitle
mac:WindowDidChangeToolbar
mac:WindowDidChangeVisibility
mac:WindowDidClose
mac:WindowDidDeminiaturize
mac:WindowDidEndSheet
mac:WindowDidEnterFullScreen