Add addon: webviewCrusher
This commit is contained in:
parent
d47a43eca2
commit
91ea1023f8
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue