This commit is contained in:
thuck 2016-11-13 08:56:19 +01:00
commit 785c03c15c
6 changed files with 40 additions and 12 deletions

View File

@ -16,7 +16,7 @@ Mako==1.0.6
parse==1.6.6
parse-type==0.3.4
py==1.4.31
pytest==3.0.3
pytest==3.0.4
pytest-bdd==2.18.1
pytest-catchlog==1.2.2
pytest-cov==2.4.0

View File

@ -566,6 +566,10 @@ class HintManager(QObject):
def _start_cb(self, elems):
"""Initialize the elements and labels based on the context set."""
if elems is None:
message.error("There was an error while getting hint elements")
return
filterfunc = webelem.FILTERS.get(self._context.group, lambda e: True)
elems = [e for e in elems if filterfunc(e)]
if not elems:

View File

@ -112,6 +112,10 @@ def prevnext(*, browsertab, win_id, baseurl, prev=False,
window: True to open in a new window, False for the current one.
"""
def _prevnext_cb(elems):
if elems is None:
message.error("There was an error while getting hint elements")
return
elem = _find_prevnext(prev, elems)
word = 'prev' if prev else 'forward'

View File

@ -392,8 +392,13 @@ class WebEngineElements(browsertab.AbstractElements):
Args:
callback: The callback to call with the found elements.
Called with None if there was an error.
js_elems: The elements serialized from javascript.
"""
if js_elems is None:
callback(None)
return
elems = []
for js_elem in js_elems:
elem = webengineelem.WebEngineElement(js_elem, tab=self._tab)
@ -467,6 +472,7 @@ class WebEngineTab(browsertab.AbstractTab):
# init js stuff
self._init_js()
self._child_event_filter = None
self.needs_qtbug54419_workaround = False
def _init_js(self):
js_code = '\n'.join([

View File

@ -67,15 +67,6 @@ class WebEngineView(QWebEngineView):
debug_type = debug.qenum_key(QWebEnginePage, wintype)
log.webview.debug("createWindow with type {}".format(debug_type))
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-54419
vercheck = qtutils.version_check
qtbug_54419_fixed = ((vercheck('5.6.2') and not vercheck('5.7.0')) or
qtutils.version_check('5.7.1') or
os.environ.get('QUTE_QTBUG54419_PATCHED', ''))
if not qtbug_54419_fixed:
log.webview.debug("Ignoring createWindow because of QTBUG-54419")
return None
background = False
if wintype in [QWebEnginePage.WebBrowserWindow,
QWebEnginePage.WebDialog]:
@ -91,8 +82,17 @@ class WebEngineView(QWebEngineView):
tabbed_browser = objreg.get('tabbed-browser', scope='window',
window=self._win_id)
# pylint: disable=protected-access
return tabbed_browser.tabopen(background=background)._widget
tab = tabbed_browser.tabopen(background=background)
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-54419
vercheck = qtutils.version_check
qtbug54419_fixed = ((vercheck('5.6.2') and not vercheck('5.7.0')) or
qtutils.version_check('5.7.1') or
os.environ.get('QUTE_QTBUG54419_PATCHED', ''))
if not qtbug54419_fixed:
tab.needs_qtbug54419_workaround = True
return tab._widget # pylint: disable=protected-access
class WebEnginePage(QWebEnginePage):

View File

@ -516,9 +516,23 @@ class TabbedBrowser(tabwidget.TabWidget):
except TabDeletedError:
# We can get signals for tabs we already deleted...
return
if not self.page_title(idx):
self.set_page_title(idx, url.toDisplayString())
# If needed, re-open the tab as a workaround for QTBUG-54419.
# See https://bugreports.qt.io/browse/QTBUG-54419
if tab.needs_qtbug54419_workaround:
log.misc.debug("Doing QTBUG-54419 workaround for {}, "
"url {}".format(tab, url))
self.setUpdatesEnabled(False)
try:
self.tabopen(url)
self.close_tab(tab, add_undo=False)
finally:
self.setUpdatesEnabled(True)
tab.needs_qtbug54419_workaround = False
@pyqtSlot(browsertab.AbstractTab, QIcon)
def on_icon_changed(self, tab, icon):
"""Set the icon of a tab.