Closed
Bug 202917
Opened 23 years ago
Closed 23 years ago
[FIX]CSS anchors move when mouse overing them
Categories
(Core :: Layout: Block and Inline, defect, P1)
Tracking
()
RESOLVED
FIXED
mozilla1.4beta
People
(Reporter: wolruf, Unassigned)
References
()
Details
(Keywords: regression)
Attachments
(2 files)
|
125.57 KB,
image/jpeg
|
Details | |
|
2.22 KB,
patch
|
dbaron
:
review+
dbaron
:
superreview+
|
Details | Diff | Splinter Review |
build ID: 2003042208 on Linux.
I don't think this is bug as I've never seen before on this page and I usually
look at it everyday. 20030421 build doesn't exhibit this problem.
Steps to reproduce:
1. Load http://www.nitot.com/standards/blog/
2. Mouse over a blog link, say 'nous indique" in April 22nd post at 3:12,
3. See the 'nous indique' being duplicated and moving at the beginning of the
sentence.
| Reporter | ||
Comment 1•23 years ago
|
||
I meant "I don't think this is bug 177539" (unless the blog code also changed
between yesterday and today).
| Reporter | ||
Comment 2•23 years ago
|
||
Regression between 2003-04-21-12-trunk and 2003-04-21-22-trunk.
bz touched nsCSSFrameConstructor multiple times yesterday, so I blame him. :-)
Comment 5•23 years ago
|
||
Looking.
Comment 6•23 years ago
|
||
Backing out the bug 145425 checkin fixes the problem... Looking into what's up
with it now.
Comment 7•23 years ago
|
||
Oh, fun. ;) So I switched the GetAfterFrame/GetBeforeFrame impls from doing
"get the last/first child and return it if it's a pseudo-frame" to "get the
last/first child and return it if it matches the before/after pseudo". All
well and good... but on this page we have the following CSS:
a:after { content: something, color: gray }
a:hover { color: white }
So hovering the a will reresolve style. When it does so, it walks the child
frames and reresolves them. Now when reresolving the child :after frame, we
check whether the content node is an element (it is -- it's the <a>). Then we
check whether there is :after style for that content node -- there is. Then we
check whether there is an :after frame as a child of the :after frame(!). This
used to return true, since it would find one of the pseudo text frames. So
nothing would happen. With my change from yesterday, there is no :after frame
returned, so we enque a reframe hint targeted at the :after frame and the <a>
content. When this reframe happens, we try to insert the new frame for the <a>
as a sibling of the prevSibling of the :after frame, which asserts about not
finding prevSibling in the block's child list, etc.
Anyway, the proposed fix is to skip the check for :before/:after frames when
reresolving a pseudo style context.... I _think_ that pseudos cannot have
:before and :after content.
If that is incorrect, I'll look for a different way to do this...
Updated•23 years ago
|
Attachment #121319 -
Flags: superreview?(dbaron)
Attachment #121319 -
Flags: review?(dbaron)
Comment 8•23 years ago
|
||
Taking.
Priority: -- → P1
Summary: CSS anchors move when mouse overing them → [FIX]CSS anchors move when mouse overing them
Target Milestone: --- → mozilla1.4beta
Attachment #121319 -
Flags: superreview?(dbaron)
Attachment #121319 -
Flags: superreview+
Attachment #121319 -
Flags: review?(dbaron)
Attachment #121319 -
Flags: review+
Comment 9•23 years ago
|
||
Fixed. Olivier, thanks for catching this!
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
| Reporter | ||
Comment 10•23 years ago
|
||
Boris, thanks for fixing this so quickly, you didn't even leave enough time to
produce a reduced testcase ! :)
You need to log in
before you can comment on or make changes to this bug.
Description
•