66__author__ = 'Simon Robinson'
77__copyright__ = 'Copyright (c) 2024 Simon Robinson'
88__license__ = 'Apache 2.0'
9- __version__ = '2024-10-21 ' # ISO 8601 (YYYY-MM-DD)
9+ __version__ = '2024-11-06 ' # ISO 8601 (YYYY-MM-DD)
1010__package_version__ = '.' .join ([str (int (i )) for i in __version__ .split ('-' )]) # for pyproject.toml usage only
1111
1212import abc
@@ -2424,13 +2424,15 @@ class ProvisionalNavigationBrowserDelegate:
24242424 # callbacks, but using that means that window.get_current_url() returns None when the loaded handler is called
24252425 def webView_didStartProvisionalNavigation_ (self , web_view , _nav ):
24262426 # called when a user action (i.e., clicking our external authorisation mode submit button) redirects locally
2427- browser_view_instance = webview .platforms .cocoa .BrowserView .get_instance ('webkit' , web_view )
2427+ browser_view_instance = webview .platforms .cocoa .BrowserView .get_instance (
2428+ ProvisionalNavigationBrowserDelegate .pywebview_attr , web_view )
24282429 if browser_view_instance :
24292430 browser_view_instance .loaded .set ()
24302431
24312432 def webView_didReceiveServerRedirectForProvisionalNavigation_ (self , web_view , _nav ):
24322433 # called when the server initiates a local redirect
2433- browser_view_instance = webview .platforms .cocoa .BrowserView .get_instance ('webkit' , web_view )
2434+ browser_view_instance = webview .platforms .cocoa .BrowserView .get_instance (
2435+ ProvisionalNavigationBrowserDelegate .pywebview_attr , web_view )
24342436 if browser_view_instance :
24352437 browser_view_instance .loaded .set ()
24362438
@@ -2440,7 +2442,7 @@ def performKeyEquivalent_(self, event):
24402442 event .keyCode () == 12 and self .window ().firstResponder ():
24412443 self .window ().performClose_ (event )
24422444 return True
2443- return webview . platforms . cocoa . BrowserView . WebKitHost . performKeyEquivalentBase_ ( self , event )
2445+ return False
24442446
24452447if sys .platform == 'darwin' :
24462448 # noinspection PyUnresolvedReferences
@@ -2942,18 +2944,16 @@ def handle_authorisation_windows(self):
29422944 # pywebview window can get into a state in which http://localhost navigation, rather than failing, just hangs
29432945 # noinspection PyPackageRequirements
29442946 import webview .platforms .cocoa
2947+ pywebview_version = packaging .version .Version (importlib_metadata .version ('pywebview' ))
2948+ ProvisionalNavigationBrowserDelegate .pywebview_attr = 'webkit' if pywebview_version < packaging .version .Version (
2949+ '5.3' ) else 'webview'
29452950 setattr (webview .platforms .cocoa .BrowserView .BrowserDelegate , 'webView_didStartProvisionalNavigation_' ,
29462951 ProvisionalNavigationBrowserDelegate .webView_didStartProvisionalNavigation_ )
29472952 setattr (webview .platforms .cocoa .BrowserView .BrowserDelegate , 'webView_didReceiveServerRedirectForProvisional'
29482953 'Navigation_' ,
29492954 ProvisionalNavigationBrowserDelegate .webView_didReceiveServerRedirectForProvisionalNavigation_ )
2950- try :
2951- setattr (webview .platforms .cocoa .BrowserView .WebKitHost , 'performKeyEquivalentBase_' ,
2952- webview .platforms .cocoa .BrowserView .WebKitHost .performKeyEquivalent_ )
2953- setattr (webview .platforms .cocoa .BrowserView .WebKitHost , 'performKeyEquivalent_' ,
2954- ProvisionalNavigationBrowserDelegate .performKeyEquivalent_ )
2955- except TypeError :
2956- pass
2955+ setattr (webview .platforms .cocoa .BrowserView .WebKitHost , 'performKeyEquivalent_' ,
2956+ ProvisionalNavigationBrowserDelegate .performKeyEquivalent_ )
29572957
29582958 # also needed only on macOS because otherwise closing the last remaining webview window exits the application
29592959 dummy_window = webview .create_window ('%s hidden (dummy) window' % APP_NAME , html = '<html></html>' , hidden = True )
0 commit comments