Add addon: webviewCrusher

This commit is contained in:
Fierelier 2023-03-03 12:14:23 +01:00
parent d47a43eca2
commit 91ea1023f8
2 changed files with 35 additions and 1 deletions

View File

@ -26,4 +26,5 @@ contextMenuWindow
contextMenuGo
# Overrides
#singleProcess
#singleProcess
#webviewCrusher# Recreates view on any navigation, to save memory. Breaks back/forward right now. Should not be used with singleProcess

View File

@ -0,0 +1,33 @@
import gi
gi.require_version("WebKit2","4.0")
from gi.repository import WebKit2
browser = mfp.require("browser")
browserWindow = browser.module.require(mfp.p("window","browser.py"))
eventHandler = mfp.Bunch()
def decidePolicy(webView,decision,decisionType):
if decisionType == WebKit2.PolicyDecisionType.NAVIGATION_ACTION:
if decision.props.frame_name != None:
return False
if decision.props.navigation_action.get_navigation_type() == WebKit2.NavigationType.OTHER:
return False
request = decision.props.navigation_action.get_request()
mainWindow = webView.get_toplevel()
webViewIndex = mainWindow.cWebViews.index(webView)
webView.destroy()
webView = browser.createWebView()
browserWindow.addWebView(mainWindow,webView,webViewIndex)
webView.load_request(request)
browserWindow.onResize(mainWindow)
mainWindow.show_all()
return True
return False
def onWebviewCreated(webView):
webView.connect("decide-policy",decidePolicy)
eventHandler["webview:created"] = onWebviewCreated