summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2022-12-05 18:36:34 +0100
committerFlorian Bruhin <me@the-compiler.org>2022-12-05 18:36:34 +0100
commitc207c8db104062c1110817d76f8400e35447f275 (patch)
tree7a27d8f0d6230fa0aa2525a048f4bc3a2fc45ed0
parentc76e1004a321d3aeec4244ee42315bbee7438408 (diff)
downloadqutebrowser-c207c8db104062c1110817d76f8400e35447f275.tar.gz
qutebrowser-c207c8db104062c1110817d76f8400e35447f275.zip
Delay browser.commands .show() calls until after tabs are added
With Qt 6.4, QtWebEngine closes/reopens the main window to switch the RHI rendering mode when a QWebEngineView gets added: https://github.com/qt/qtbase/blob/v6.4.1/src/widgets/kernel/qwidget.cpp#L10706-L10709 To avoid this, we need to make sure we only call .show() *after* adding a tab, similarly to what Qt did too: https://code.qt.io/cgit/qt/qtwebengine.git/commit/?id=d7e0fd5304ebdb12c6f809cdbcf8193b49b9ecd2 See #7504 ---- This commit handles browser.commands, in particular the "_new_tabbed_browser" convenience method (which is now, sadly, likely less convenient).
-rw-r--r--qutebrowser/browser/commands.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py
index 525344ea7..aa6f0f995 100644
--- a/qutebrowser/browser/commands.py
+++ b/qutebrowser/browser/commands.py
@@ -70,9 +70,7 @@ class CommandDispatcher:
raise cmdutils.CommandError("Private windows are unavailable with "
"the single-process process model.")
- new_window = mainwindow.MainWindow(private=private)
- new_window.show()
- return new_window.tabbed_browser
+ return mainwindow.MainWindow(private=private).tabbed_browser
def _count(self) -> int:
"""Convenience method to get the widget count."""
@@ -138,6 +136,7 @@ class CommandDispatcher:
assert isinstance(private, bool)
tabbed_browser = self._new_tabbed_browser(private)
tabbed_browser.tabopen(url)
+ tabbed_browser.window().show()
elif tab:
tabbed_browser.tabopen(url, background=False, related=related)
elif background:
@@ -416,7 +415,10 @@ class CommandDispatcher:
private=self._tabbed_browser.is_private or private)
else:
new_tabbed_browser = self._tabbed_browser
+
newtab = new_tabbed_browser.tabopen(background=bg)
+ new_tabbed_browser.window().show()
+
# The new tab could be in a new tabbed_browser (e.g. because of
# tabs.tabs_are_windows being set)
new_tabbed_browser = objreg.get('tabbed-browser', scope='window',
@@ -506,6 +508,8 @@ class CommandDispatcher:
"The window with id {} is not private".format(win_id))
tabbed_browser.tabopen(self._current_url())
+ tabbed_browser.window().show()
+
if not keep:
self._tabbed_browser.close_tab(self._current_widget(),
add_undo=False,