Skip to content

Commit

Permalink
Fix remaining implicit int issues with QtWebKit
Browse files Browse the repository at this point in the history
See #4928
  • Loading branch information
The-Compiler committed Nov 18, 2019
1 parent 9a95fe7 commit 4dba318
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 4 deletions.
6 changes: 3 additions & 3 deletions qutebrowser/browser/webkit/webkittab.py
Expand Up @@ -434,12 +434,12 @@ def to_point(self, point):
def to_anchor(self, name):
self._widget.page().mainFrame().scrollToAnchor(name)

def delta(self, x=0, y=0):
def delta(self, x: int = 0, y: int = 0) -> None:
qtutils.check_overflow(x, 'int')
qtutils.check_overflow(y, 'int')
self._widget.page().mainFrame().scroll(x, y)

def delta_page(self, x=0.0, y=0.0):
def delta_page(self, x: float = 0.0, y: float = 0.0) -> None:
if y.is_integer():
y = int(y)
if y == 0:
Expand All @@ -452,7 +452,7 @@ def delta_page(self, x=0.0, y=0.0):
if x == 0 and y == 0:
return
size = self._widget.page().mainFrame().geometry()
self.delta(x * size.width(), y * size.height())
self.delta(int(x * size.width()), int(y * size.height()))

def to_perc(self, x=None, y=None):
if x is None and y == 0:
Expand Down
3 changes: 2 additions & 1 deletion qutebrowser/utils/debug.py
Expand Up @@ -120,7 +120,8 @@ def qenum_key(base: typing.Type,

try:
idx = base.staticMetaObject.indexOfEnumerator(klass.__name__)
ret = base.staticMetaObject.enumerator(idx).valueToKey(value)
meta_enum = base.staticMetaObject.enumerator(idx)
ret = meta_enum.valueToKey(int(value))
except AttributeError:
ret = None

Expand Down
20 changes: 20 additions & 0 deletions tests/unit/utils/test_debug.py
Expand Up @@ -176,6 +176,26 @@ def test_qflags_key(self, base, value, klass, expected):
flags = debug.qflags_key(base, value, klass=klass)
assert flags == expected

def test_find_flags(self):
"""Test a weird TypeError we get from PyQt.
In exactly this constellation (happening via the "Searching with
--reverse" BDD test), calling QMetaEnum::valueToKey without wrapping
the flags in int() causes a TypeError.
No idea what's happening here exactly...
"""
QWebPage = pytest.importorskip("PyQt5.QtWebKitWidgets").QWebPage

flags = QWebPage.FindWrapsAroundDocument
flags |= QWebPage.FindBackward
flags &= ~QWebPage.FindBackward
flags &= ~QWebPage.FindWrapsAroundDocument

debug.qflags_key(QWebPage,
flags,
klass=QWebPage.FindFlag)

def test_add_base(self):
"""Test with add_base=True."""
flags = debug.qflags_key(Qt, Qt.AlignTop, add_base=True)
Expand Down

0 comments on commit 4dba318

Please sign in to comment.