Images bearing links are unclickable and cause extraneous reflows when align attribute is used

VERIFIED FIXED

Status

()

Core
Layout
--
critical
VERIFIED FIXED
17 years ago
16 years ago

People

(Reporter: Adam D. Moss, Assigned: Marc Attinasi)

Tracking

({regression, testcase})

Trunk
regression, testcase
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(URL)

Attachments

(2 attachments)

(Reporter)

Description

17 years ago
This is a recent critical regression.  <img>s wrapped
by <a> links cannot be clicked if the <img> has an 'align'
attribute.

Furthermore, such <img>s vanish and reappear (with complete
reflows) at each mouse-over or click.

Minimal testcase at:
http://www.foxbox.org/adam/moz3/index.html

Evident in solaris/SPARC build ID 2001103122.
(Reporter)

Updated

17 years ago
Keywords: regression, testcase

Comment 1

17 years ago
confirming on Win2k and Linux with build 2001103103.
OS -> All.
OS: SunOS → All
Hardware: Sun → All
ccing alexsavulov and pav
(Reporter)

Comment 5

16 years ago
cc:ing dbaron
(Reporter)

Comment 6

16 years ago
Build 2001110122 on Solaris no longer exhibits
this problem.  Anyone?
(Assignee)

Comment 7

16 years ago
I'm seeing this on my Win build. After hovering over the image the frame is
being destroyed so we can reframe the content. Here is the stack:

nsImageFrame::Destroy(nsImageFrame * const 0x0298c12c, nsIPresContext *
0x02c71630) line 245
nsBlockFrame::RemoveFrame(nsBlockFrame * const 0x029d0edc, nsIPresContext *
0x02c71630, nsIPresShell & {...}, nsIAtom * 0x016b73a0, nsIFrame * 0x0298c12c)
line 4814
FrameManager::RemoveFrame(FrameManager * const 0x02bf3810, nsIPresContext *
0x02c71630, nsIPresShell & {...}, nsIFrame * 0x029d0edc, nsIAtom * 0x016b73a0,
nsIFrame * 0x0298c12c) line 857
nsCSSFrameConstructor::ContentRemoved(nsCSSFrameConstructor * const 0x02c77ce0,
nsIPresContext * 0x02c71630, nsIContent * 0x02c81720, nsIContent * 0x02c81540,
int 0) line 9287 + 63 bytes
nsCSSFrameConstructor::RecreateFramesForContent(nsIPresContext * 0x02c71630,
nsIContent * 0x02c81540, int 0, nsIStyleRule * 0x00000000, nsIStyleContext *
0x00000000) line 11375 + 33 bytes
nsCSSFrameConstructor::ProcessRestyledFrames(nsCSSFrameConstructor * const
0x02c77ce0, nsStyleChangeList & {...}, nsIPresContext * 0x02c71630) line 9727
nsCSSFrameConstructor::ContentStatesChanged(nsCSSFrameConstructor * const
0x02c77ce0, nsIPresContext * 0x02c71630, nsIContent * 0x02c81720, nsIContent *
0x00000000) line 9851
StyleSetImpl::ContentStatesChanged(StyleSetImpl * const 0x02c77db0,
nsIPresContext * 0x02c71630, nsIContent * 0x02c81720, nsIContent * 0x00000000)
line 1296
PresShell::ContentStatesChanged(PresShell * const 0x02c77918, nsIDocument *
0x02c4a9e0, nsIContent * 0x02c81720, nsIContent * 0x00000000) line 5066 + 49 bytes
nsDocument::ContentStatesChanged(nsDocument * const 0x02c4a9e0, nsIContent *
0x02c81720, nsIContent * 0x00000000) line 1661
nsEventStateManager::SetContentState(nsEventStateManager * const 0x02c29ae8,
nsIContent * 0x02c81720, int 4) line 3458
nsGenericHTMLElement::HandleDOMEventForAnchors(nsIContent * 0x02c81720,
nsIPresContext * 0x02c71630, nsEvent * 0x0012f170, nsIDOMEvent * * 0x0012f098,
unsigned int 2, nsEventStatus * 0x0012f1b8) line 1803
nsHTMLAnchorElement::HandleDOMEvent(nsHTMLAnchorElement * const 0x02c81720,
nsIPresContext * 0x02c71630, nsEvent * 0x0012f170, nsIDOMEvent * * 0x0012f098,
unsigned int 2, nsEventStatus * 0x0012f1b8) line 419
nsGenericElement::HandleDOMEvent(nsGenericElement * const 0x02c81540,
nsIPresContext * 0x02c71630, nsEvent * 0x0012f170, nsIDOMEvent * * 0x0012f098,
unsigned int 1, nsEventStatus * 0x0012f1b8) line 1884 + 50 bytes
nsHTMLImageElement::HandleDOMEvent(nsHTMLImageElement * const 0x02c81540,
nsIPresContext * 0x02c71630, nsEvent * 0x0012f170, nsIDOMEvent * * 0x00000000,
unsigned int 1, nsEventStatus * 0x0012f1b8) line 582
nsEventStateManager::GenerateMouseEnterExit(nsIPresContext * 0x02c71630,
nsGUIEvent * 0x0012fa10) line 2153
nsEventStateManager::PreHandleEvent(nsEventStateManager * const 0x02c29ae8,
nsIPresContext * 0x02c71630, nsEvent * 0x0012fa10, nsIFrame * 0x0298c12c,
nsEventStatus * 0x0012f904, nsIView * 0x02c7b370) line 361
PresShell::HandleEventInternal(nsEvent * 0x0012fa10, nsIView * 0x02c7b370,
unsigned int 1, nsEventStatus * 0x0012f904) line 5803 + 43 bytes
PresShell::HandleEvent(PresShell * const 0x02c77914, nsIView * 0x02c7b370,
nsGUIEvent * 0x0012fa10, nsEventStatus * 0x0012f904, int 0, int & 1) line 5734 +
25 bytes
nsView::HandleEvent(nsView * const 0x02c7b370, nsGUIEvent * 0x0012fa10, unsigned
int 8, nsEventStatus * 0x0012f904, int 0, int & 1) line 392
nsView::HandleEvent(nsView * const 0x02c7b6d0, nsGUIEvent * 0x0012fa10, unsigned
int 8, nsEventStatus * 0x0012f904, int 0, int & 1) line 365
nsView::HandleEvent(nsView * const 0x02c76050, nsGUIEvent * 0x0012fa10, unsigned
int 28, nsEventStatus * 0x0012f904, int 1, int & 1) line 365
nsViewManager::DispatchEvent(nsViewManager * const 0x02c761f0, nsGUIEvent *
0x0012fa10, nsEventStatus * 0x0012f904) line 2070
HandleEvent(nsGUIEvent * 0x0012fa10) line 83
nsWindow::DispatchEvent(nsWindow * const 0x02c7b594, nsGUIEvent * 0x0012fa10,
nsEventStatus & nsEventStatus_eIgnore) line 744 + 10 bytes
nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012fa10) line 765
nsWindow::DispatchMouseEvent(unsigned int 300, nsPoint * 0x00000000) line 4317 +
21 bytes
ChildWindow::DispatchMouseEvent(unsigned int 300, nsPoint * 0x00000000) line 4569
nsWindow::ProcessMessage(unsigned int 512, unsigned int 0, long 19005980, long *
0x0012fe2c) line 3229 + 24 bytes
nsWindow::WindowProc(HWND__ * 0x002d0924, unsigned int 512, unsigned int 0, long
19005980) line 1012 + 27 bytes
USER32! 77e12e98()
USER32! 77e130e0()
USER32! 77e15824()
main(int 2, char * * 0x00641890) line 172 + 11 bytes
mainCRTStartup() line 338 + 17 bytes

For some reason, the Image is showing a difference in the Display style struct:

nsStyleDisplay::CalcDifference
aOther.mDisplay
    2 ''
aOther.mFloats
    0 ''
aOther.mOverflow    0 ''
mDisplay
    1 ''
mFloats
            2 ''
mOverflow
    0 ''
This causes a FRAMECHANGE hint, and thus a reframe of the image.

Looks like a style resolution issue.
Was this fixed by my patch to bug 107744?  If not, I'll back out the placeholder
stuff...
(Assignee)

Comment 9

16 years ago
This happens with dbaron's patch for frameManager. I'm checking without that
patch now...
(Assignee)

Comment 10

16 years ago
This is fixed with the latest nsFrameManager.cpp file. My previous comment was
deceiving - the bug appeared with 1.89, *not* dbaron's patch (1.90) - sorry David.
Status: NEW → RESOLVED
Last Resolved: 16 years ago
Resolution: --- → FIXED
(Reporter)

Comment 11

16 years ago
Verified.
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.