comparison mac/dw.m @ 2023:3f265cd5b069

Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 09 Nov 2019 07:43:04 +0000
parents 59dfb86fb3b1
children c4fc33d70a8e
comparison
equal deleted inserted replaced
2022:28809bf17957 2023:3f265cd5b069
1340 /* Apparently the WKWebKit API is only enabled on intel 64bit... 1340 /* Apparently the WKWebKit API is only enabled on intel 64bit...
1341 * Causing build failures on 32bit builds, so this should allow 1341 * Causing build failures on 32bit builds, so this should allow
1342 * WKWebKit on intel 64 and the old WebKit on intel 32 bit and earlier. 1342 * WKWebKit on intel 64 and the old WebKit on intel 32 bit and earlier.
1343 */ 1343 */
1344 #if WK_API_ENABLED 1344 #if WK_API_ENABLED
1345 @interface DWWebView : WKWebView <WKNavigationDelegate> { } 1345 @interface DWWebView : WKWebView <WKNavigationDelegate>
1346 {
1347 void *userdata;
1348 }
1349 -(void *)userdata;
1350 -(void)setUserdata:(void *)input;
1346 -(void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation; 1351 -(void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;
1347 -(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation; 1352 -(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation;
1348 -(void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation; 1353 -(void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation;
1349 -(void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation; 1354 -(void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation;
1350 @end 1355 @end
1351 1356
1352 @implementation DWWebView : WKWebView { } 1357 @implementation DWWebView : WKWebView
1358 -(void *)userdata { return userdata; }
1359 -(void)setUserdata:(void *)input { userdata = input; }
1353 -(void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation 1360 -(void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation
1354 { 1361 {
1355 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_STARTED), [[self URL] absoluteString] }; 1362 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_STARTED), [[self URL] absoluteString] };
1356 _event_handler(self, (NSEvent *)params, 19); 1363 _event_handler(self, (NSEvent *)params, 19);
1357 } 1364 }
1368 -(void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation 1375 -(void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation
1369 { 1376 {
1370 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_REDIRECT), [[self URL] absoluteString] }; 1377 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_REDIRECT), [[self URL] absoluteString] };
1371 _event_handler(self, (NSEvent *)params, 19); 1378 _event_handler(self, (NSEvent *)params, 19);
1372 } 1379 }
1380 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
1373 @end 1381 @end
1374 #else 1382 #else
1375 @interface DWWebView : WebView 1383 @interface DWWebView : WebView
1376 { } 1384 {
1385 void *userdata;
1386 }
1387 -(void *)userdata;
1388 -(void)setUserdata:(void *)input;
1377 -(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame; 1389 -(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame;
1378 -(void)webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame; 1390 -(void)webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame;
1379 -(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame; 1391 -(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame;
1380 @end 1392 @end
1381 1393
1382 @implementation DWWebView : WebView { } 1394 @implementation DWWebView : WebView
1395 -(void *)userdata { return userdata; }
1396 -(void)setUserdata:(void *)input { userdata = input; }
1383 -(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame 1397 -(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
1384 { 1398 {
1385 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_COMPLETE), [self mainFrameURL] }; 1399 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_COMPLETE), [self mainFrameURL] };
1386 _event_handler(self, (NSEvent *)params, 19); 1400 _event_handler(self, (NSEvent *)params, 19);
1387 } 1401 }
1393 -(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame 1407 -(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
1394 { 1408 {
1395 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_LOADING), [self mainFrameURL] }; 1409 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_LOADING), [self mainFrameURL] };
1396 _event_handler(self, (NSEvent *)params, 19); 1410 _event_handler(self, (NSEvent *)params, 19);
1397 } 1411 }
1412 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
1398 @end 1413 @end
1399 #endif 1414 #endif
1400 1415
1401 1416
1402 @implementation DWAppDel 1417 @implementation DWAppDel