style: Only no-op visited <-> unvisited changes.

Other changes should really be (and are) indistinguishable.

Differential Revision: https://phabricator.services.mozilla.com/D4847
This commit is contained in:
Emilio Cobos Álvarez 2018-09-05 12:52:16 +00:00
parent cf6215c85f
commit 3e0250ae61
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C

View file

@ -155,22 +155,11 @@ where
return false;
}
// If we are sensitive to visitedness and the visited state changed, we
// force a restyle here. Matching doesn't depend on the actual visited
// state at all, so we can't look at matching results to decide what to
// do for this case.
if state_changes.intersects(ElementState::IN_VISITED_OR_UNVISITED_STATE) &&
self.shared_context.visited_styles_enabled
{
// If we the visited state changed, we force a restyle here. Matching
// doesn't depend on the actual visited state at all, so we can't look
// at matching results to decide what to do for this case.
if state_changes.intersects(ElementState::IN_VISITED_OR_UNVISITED_STATE) {
trace!(" > visitedness change, force subtree restyle");
// We shouldn't get here with visited links disabled, but it's hard
// to assert in cases where you record a visitedness change and
// afterwards you change some of the stuff (like the pref) that
// changes whether visited styles are enabled.
//
// So just avoid the restyle here, because it kind of would kill the
// point of disabling visited links.
//
// We can't just return here because there may also be attribute
// changes as well that imply additional hints for siblings.
self.data.hint.insert(RestyleHint::restyle_subtree());