Add ability for multi process mode

This commit is contained in:
Fierelier 2022-06-08 21:14:37 +02:00
parent 8b05d168f7
commit 3ec5892102
1 changed files with 28 additions and 6 deletions

View File

@ -70,9 +70,11 @@ birdyWebSettings.set_enable_developer_extras(False)
birdyWebSettings.set_enable_page_cache(False)
birdyWebSettings.set_hardware_acceleration_policy(WebKit2.HardwareAccelerationPolicy.NEVER)
defaultUserAgent = birdyWebSettings.get_user_agent()
singleProcessMode = False
remakeViewOnNavigation = False # Always entirely remake view on navigation, could break some websites - use for super low memory situations
def birdyWebViewConstructor(webView):
if webView:
if webView and singleProcessMode:
return WebKit2.WebView.new_with_related_view(webView)
self = WebKit2.WebView.new_with_context(birdyWebContext)
@ -113,16 +115,13 @@ class birdyBrowserWindow(Gtk.Window):
self.cMenuBar.add(self.cMenuLoadingIndication)
homepage = "about:blank"
self.cLastUrl = "about:blank"
self.cUrlEntry = Gtk.Entry()
self.cUrlEntry.set_text(homepage)
#self.cUrlEntry.props.enable_emoji_completion = True # lol
self.cUrlEntry.connect("activate",self.cUrlEntryNavigate)
self.cMainBox.add(self.cUrlEntry)
self.cWebView = birdyWebViewConstructor(webView)
self.cWebView.connect("load-changed",self.cWebViewLoadChanged)
self.cWebView.connect("notify::uri",self.cUrlChanged)
self.cWebView.connect("notify::title",self.cTitleChanged)
self.cMainBox.add(self.cWebView)
self.cCreateWebView(webView)
self.cWebView.load_uri(homepage)
self.cResizeElements()
self.set_focus(self.cUrlEntry)
@ -130,6 +129,13 @@ class birdyBrowserWindow(Gtk.Window):
self.show_all()
self.cMenuLoadingIndication.hide()
def cCreateWebView(self,webView):
self.cWebView = birdyWebViewConstructor(webView)
self.cWebView.connect("load-changed",self.cWebViewLoadChanged)
self.cWebView.connect("notify::uri",self.cUrlChanged)
self.cWebView.connect("notify::title",self.cTitleChanged)
self.cMainBox.add(self.cWebView)
def cResizeElements(self):
# cMenuBar
self.cMainBox.move(self.cMenuBar,0,0)
@ -158,6 +164,15 @@ class birdyBrowserWindow(Gtk.Window):
def cUrlChanged(self,widget,prop):
url = widget.get_uri()
if url != self.cLastUrl and remakeViewOnNavigation and not singleProcessMode:
self.cWebView.destroy()
self.cCreateWebView(False)
self.cResizeElements()
self.show_all()
self.cWebView.load_uri(url)
self.cLastUrl = url
if url == "about:blank": return
if self.cUrlEntry.get_text() != url: self.cUrlEntry.set_text(url)
@ -180,6 +195,13 @@ class birdyBrowserWindow(Gtk.Window):
url = defaultProtocol + "://" + url
self.set_focus(self.cWebView)
if not singleProcessMode:
self.cWebView.destroy()
self.cCreateWebView(False)
self.cResizeElements()
self.show_all()
self.cWebView.load_uri(url)
browserWindows.append(birdyBrowserWindow(False))