Check element visibility before drawing
This commit is contained in:
parent
a2deba68dc
commit
6434dac680
@ -66,20 +66,12 @@ class HintManager:
|
|||||||
frame: The QWebFrame to use for finding elements and drawing.
|
frame: The QWebFrame to use for finding elements and drawing.
|
||||||
"""
|
"""
|
||||||
self._frame = frame
|
self._frame = frame
|
||||||
self._elems = None
|
self._elems = []
|
||||||
self._labels = []
|
self._labels = []
|
||||||
|
|
||||||
def _draw_label(self, elem):
|
def _draw_label(self, elem):
|
||||||
"""Draw a hint label over an element."""
|
"""Draw a hint label over an element."""
|
||||||
rect = elem.geometry()
|
rect = elem.geometry()
|
||||||
if (not rect.isValid()) and rect.x() == 0:
|
|
||||||
# Most likely an invisible link
|
|
||||||
return
|
|
||||||
framegeom = self._frame.geometry()
|
|
||||||
framegeom.translate(self._frame.scrollPosition())
|
|
||||||
if not framegeom.contains(rect):
|
|
||||||
# out of screen
|
|
||||||
return
|
|
||||||
css = HintManager.HINT_CSS.format(left=rect.x(), top=rect.y(),
|
css = HintManager.HINT_CSS.format(left=rect.x(), top=rect.y(),
|
||||||
config=config.instance)
|
config=config.instance)
|
||||||
doc = self._frame.documentElement()
|
doc = self._frame.documentElement()
|
||||||
@ -94,8 +86,18 @@ class HintManager:
|
|||||||
mode: The mode to be used.
|
mode: The mode to be used.
|
||||||
"""
|
"""
|
||||||
selector = HintManager.SELECTORS[mode]
|
selector = HintManager.SELECTORS[mode]
|
||||||
self._elems = self._frame.findAllElements(selector)
|
elems = self._frame.findAllElements(selector)
|
||||||
for e in self._elems:
|
for e in elems:
|
||||||
|
rect = e.geometry()
|
||||||
|
if (not rect.isValid()) and rect.x() == 0:
|
||||||
|
# Most likely an invisible link
|
||||||
|
continue
|
||||||
|
framegeom = self._frame.geometry()
|
||||||
|
framegeom.translate(self._frame.scrollPosition())
|
||||||
|
if not framegeom.contains(rect):
|
||||||
|
# out of screen
|
||||||
|
continue
|
||||||
|
self._elems.append(e)
|
||||||
self._draw_label(e)
|
self._draw_label(e)
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user