akhodakivskiy/VimFx — pull request #330 by lydell (2014-05-30 21:34:03+00:00)
Title: Better hintmarkers

- Elements covered by other elements do no longer get hints. This makes
it easier to use drop-down menus when there are lots of links behind
it.

- Elements partly outside the screen now get hints, too.

- Partly covered elements get hints, too. The hint is placed in the
first non-covered point of the element.

- Line-wrapped links now get their hint in a better place. This is
easiest to explain with a picture. # = old hint location, * = new hint
location (approximately)

#---------+
| *Line-|
|wrapped |
+---------+

Such links also used to count the whole of that box as its area. Now
only the actual text is counted, giving the marker a more fair weight.

- We used to take care of the case where markable elements have no area
since all of the children are floated and/or absolutely positioned.
For performance I’ve removed that. Let’s re-add it if we find some
website that needs it. The old implementation used the computed style
for this, which has turned out to be really slow.

- We used to check if elements were hidden with CSS (if `opacity: 0;` or
`visibility: hidden;`), but we don’t anymore, since it noticeably
slows down the marker creation (checking computed styles is slow). It
does not appear to be necessary anymore. It was added to fix #164, but
the problems there now seem fixed even without this check.

- The code should be more documented now than before.

- The performance is better than before. It does not seem like the new
algorithms are slower. And since I’ve removed two slow areas, it might
be a little faster.