Closed
Bug 12122
Opened 26 years ago
Closed 26 years ago
[BLOCKER][DOGFOOD]overflow property within XUL == disappearing content
Categories
(Core :: XUL, defect, P1)
Tracking
()
VERIFIED
FIXED
M13
People
(Reporter: dbaron, Assigned: karnaze)
Details
(Whiteboard: [PDT+] 12/10/1999)
Attachments
(3 files)
DESCRIPTION:
When the overflow property is set to scroll or auto within XUL, it causes the
content within the element with the overflow property to disappear (and draws a
few scrollbars if overflow is scroll).
STEPS TO REPRODUCE:
* download the four files stock-ticker.* in
http://www.fas.harvard.edu/~dbaron/nstmp/stock-ticker/M9-3/
* Add to the beginning of stock-ticker.css either the rule:
tbody#stockTB { overflow: auto; }
or the rule
tbody#stockTB { overflow: scroll; }
* load stock-ticker.xul in viewer or apprunner or in the sidebar (currently
does not work from an HTTP URL - see bug 11112.)
ACTUAL RESULTS: The content within the table body (listing of five stocks with
data) disappears. If you picked "overflow: scroll" above, then there are
scrollbars on the *top* and right of the area where they should be, except the
one on the right is very short.
EXPECTED RESULTS: If the panel is displayed in a large window (such as viewer
or apprunner's content window), the stocks should all fit, and if overflow is
scroll (rather than auto) there should be scrollbars.
If the panel is displayed in a small window, such as the sidebar (you need to
edit chrome://sidebar/content/sidebar-browser.rdf to do this), the scrollbars
should allow you to scroll in either case, and the stock data should take up as
much room as it can so that nothing overflows off the edge of the page (kind of
like an IFRAME, but no horizontal scrolling should be needed since the widths
get sized to fit).
BUILDS TESTED:
* Linux, apprunner, 1999-08-16-08-M9
* Linux, viewer, 1999-08-16-08-M9
ADDITIONAL INFORMATION:
Being able to use overflow is important for sidebar panels, since they will
often want to have concepts of "navigation" and "data", where the navigation
should always fit even if the sidebar panel is tiny and the data must overflow.
If you want to allow scrolling some other way than the overflow property, that
would be reasonable (but it would make sidebar panel developers learn yet
something else). However, the overflow property shouldn't cause the disastrous
results it currently causes.
Reporter | ||
Comment 1•26 years ago
|
||
I think this bug may be similar to some other bugs I've filed (or at least
things that have bothered me). The way things seem to work now is that an XUL
box reflows its contents to be "as small as possible". What I think should
happen is that, after this happens, if the box's size is increased by a "flex"
attribute, the contents should be reflowed again with the new size for the box.
I think I've seen elsewhere (auto margins - bug 9442 ??) that this should
happen.
Updated•26 years ago
|
Assignee: trudelle → evaughan
Comment 2•26 years ago
|
||
reassigning to evaughan for triage
Updated•26 years ago
|
Status: NEW → ASSIGNED
Comment 3•26 years ago
|
||
This is fixed with when I turn on gfx scrollbars. I mark fixed once I turn them
on.
Updated•26 years ago
|
Priority: P3 → P1
Whiteboard: [BLOCKER][DOGFOOD]
Target Milestone: M10
Comment 4•26 years ago
|
||
When is GFX scheduled to be turned on? Sounds like this bug will be fixed when
that happens, which is great news, but to make sure this bug is prioritized
appropriately, I made the following changes as this is blocking David Baron's
panel development:
1) changed from P3 to P1
2) set target milestone to M10
3) marked [BLOCKER][DOGFOOD] in status whiteboard because it is blocking the
development of panels and preventing us from reaching dogfood for panel
developability
4) added relevant PMs to cc: list
Also note that David's internship ends in late September; if we don't get this
fixed by the end of August at the latest, I doubt we'll be able to have David
finish as much panel demo, sample code, and doc development work as we had
hoped.
Totally understand the pressure everyone's under; just want to make sure this
bug gets the attention it needs so we can move forward and make the panels a
success.
Comment 6•26 years ago
|
||
Overflow on boxes and tabs work now. But tables are html. Are you able to get
this to work in a regular html table in a html file?
Reporter | ||
Comment 7•26 years ago
|
||
Yes, it works fine within HTML. Example to be attached.
Reporter | ||
Comment 8•26 years ago
|
||
Comment 9•26 years ago
|
||
Updated•26 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 26 years ago
Resolution: --- → INVALID
Comment 10•26 years ago
|
||
Your scrollbars don't show up because the second table forces the first table
not to get smaller. If you make the first tables width bigger scrollbars will
appear. See the example enclosed.
Reporter | ||
Updated•26 years ago
|
Status: RESOLVED → REOPENED
Reporter | ||
Comment 11•26 years ago
|
||
The problem was the interaction of XUL boxes with flex with overflow auto on an
element inside them. Your example doesn't have any boxes.
Reopening.
The original URL was wrong. It should be
http://www.fas.harvard.edu/~dbaron/nstmp/M9-3/ . That example only has one
table.
Reporter | ||
Updated•26 years ago
|
Resolution: INVALID → ---
Reporter | ||
Comment 12•26 years ago
|
||
I put the test cases for this bug (revised as described in the original report),
in http://www.fas.harvard.edu/~dbaron/nstmp/M9-3-bug12122/ . They are now
crashing viewer and apprunner even when viewed locally (1999-09-14-09-M11).
Updated•26 years ago
|
Target Milestone: M10 → M12
Updated•26 years ago
|
Summary: overflow property within XUL == disappearing content → [BLOCKER][DOGFOOD]overflow property within XUL == disappearing content
Whiteboard: [BLOCKER][DOGFOOD]
Comment 13•26 years ago
|
||
Moving [BLOCKER][DOGFOOD]from status whiteboard to summary to get on radar. Is
this still a problem with GFX scrollbars?
Comment 14•26 years ago
|
||
From our reading GFX scroll bars take care of this. Please send bug to
pdt@netscape.com if you feel this should be put back on dogfood radar. Putting
on [PDT-] radar.
Updated•26 years ago
|
Assignee: evaughan → karnaze
Status: REOPENED → NEW
Comment 15•26 years ago
|
||
This example crashes in tables:
nsTableFrame::ComputeDesiredHeight(nsIPresContext & {...}, const
nsHTMLReflowState & {...}, int 285) line 4201 + 14 bytes
nsTableFrame::ResizeReflowPass2(nsTableFrame * const 0x027aa8a0, nsIPresContext
& {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned
int & 0) line 2618 + 20 bytes
nsTableFrame::Reflow(nsTableFrame * const 0x027aa8a4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 2318 + 38 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x027aa8a0, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 372 + 28 bytes
nsTableOuterFrame::Reflow(nsTableOuterFrame * const 0x027aa944, nsIPresContext &
{...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned
int & 0) line 902 + 37 bytes
nsBoxFrame::FlowChildAt(nsIFrame * 0x027aa940, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0,
nsCalculatedBoxInfo & {...}, int & 0, nsString & {...}) line 1100
nsBoxFrame::FlowChildren(nsIPresContext & {...}, nsHTMLReflowMetrics & {...},
const nsHTMLReflowState & {...}, unsigned int & 0, nsRect & {...}) line 699
nsBoxFrame::Reflow(nsBoxFrame * const 0x0127fd04, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 534
nsBoxFrame::FlowChildAt(nsIFrame * 0x0127fd00, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0,
nsCalculatedBoxInfo & {...}, int & 0, nsString & {...}) line 1100
nsBoxFrame::FlowChildren(nsIPresContext & {...}, nsHTMLReflowMetrics & {...},
const nsHTMLReflowState & {...}, unsigned int & 0, nsRect & {...}) line 699
nsBoxFrame::Reflow(nsBoxFrame * const 0x012f0434, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 534
nsBoxFrame::FlowChildAt(nsIFrame * 0x012f0430, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0,
nsCalculatedBoxInfo & {...}, int & 0, nsString & {...}) line 1100
nsBoxFrame::FlowChildren(nsIPresContext & {...}, nsHTMLReflowMetrics & {...},
const nsHTMLReflowState & {...}, unsigned int & 0, nsRect & {...}) line 699
nsBoxFrame::Reflow(nsBoxFrame * const 0x023f7294, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 534
nsContainerFrame::ReflowChild(nsIFrame * 0x023f7290, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 372 + 28 bytes
RootFrame::Reflow(RootFrame * const 0x027a8b14, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 330
nsContainerFrame::ReflowChild(nsIFrame * 0x027a8b10, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 372 + 28 bytes
ViewportFrame::Reflow(ViewportFrame * const 0x027a8b84, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 516
PresShell::InitialReflow(PresShell * const 0x027543e0, int 10875, int 8475) line
949
Assignee | ||
Comment 16•26 years ago
|
||
Eric, the fix I just checked in for bug 12012 must have fixed this also, since
I'm not seeing the crash.
Assignee: karnaze → evaughan
Updated•26 years ago
|
Assignee: evaughan → karnaze
Comment 17•26 years ago
|
||
Now this crashes in tables. Its particularly spectacular when gfx scrollbars are
turned on. The problem seems to be because the table casts
the rowGroupFrame to at nsTableRowGroupFrame*. The only problem is the
rowGroupFrame is a GfxScrollFrame. If I turn off
gfx scrollbars it crashes in ComputeDesiredHeight just like it did before.
nsGfxScrollFrameInner::QueryInterface(nsGfxScrollFrameInner * const 0x02759adc,
const nsID & {...}, void * * 0x00000007) line 228 + 206 bytes
nsTableFrame::ComputeDesiredHeight(nsIPresContext & {...}, const
nsHTMLReflowState & {...}, int 300) line 4163 + 36 bytes
nsTableFrame::ResizeReflowPass2(nsTableFrame * const 0x02759ae0, nsIPresContext
& {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned
int & 0) line 2588 + 20 bytes
nsTableFrame::Reflow(nsTableFrame * const 0x02759ae4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 2285 + 38 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x02759ae0, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 378 + 28 bytes
nsTableOuterFrame::Reflow(nsTableOuterFrame * const 0x02759b74, nsIPresContext &
{...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned
int & 0) line 907 + 37 bytes
nsBoxFrame::FlowChildAt(nsIFrame * 0x02759b70, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0,
nsCalculatedBoxInfo & {...}, int & 0, nsString & {...}) line 1130
nsBoxFrame::FlowChildren(nsIPresContext & {...}, nsHTMLReflowMetrics & {...},
const nsHTMLReflowState & {...}, unsigned int & 0, nsRect & {...}) line 699
nsBoxFrame::Reflow(nsBoxFrame * const 0x0242395c, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 534
nsBoxFrame::FlowChildAt(nsIFrame * 0x02423958, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0,
nsCalculatedBoxInfo & {...}, int & 0, nsString & {...}) line 1130
nsBoxFrame::FlowChildren(nsIPresContext & {...}, nsHTMLReflowMetrics & {...},
const nsHTMLReflowState & {...}, unsigned int & 0, nsRect & {...}) line 699
nsBoxFrame::Reflow(nsBoxFrame * const 0x02421e44, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 534
nsBoxFrame::FlowChildAt(nsIFrame * 0x02421e40, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0,
nsCalculatedBoxInfo & {...}, int & 0, nsString & {...}) line 1130
nsBoxFrame::FlowChildren(nsIPresContext & {...}, nsHTMLReflowMetrics & {...},
const nsHTMLReflowState & {...}, unsigned int & 0, nsRect & {...}) line 699
nsBoxFrame::Reflow(nsBoxFrame * const 0x0236aeb4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 534
nsContainerFrame::ReflowChild(nsIFrame * 0x0236aeb0, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 378 + 28 bytes
RootFrame::Reflow(RootFrame * const 0x0225d944, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 330
nsContainerFrame::ReflowChild(nsIFrame * 0x0225d940, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 378 + 28 bytes
Viewpo
Assignee | ||
Comment 18•26 years ago
|
||
It might help if someone told me how to turn on gfx scroll bars, preferably in
Viewer. The scroll bars upon setting style/widget-rendering-mode/gfx don't look
any different than native ones.
Assignee | ||
Updated•26 years ago
|
Assignee: karnaze → evaughan
Assignee | ||
Comment 19•26 years ago
|
||
Eric, with native scroll bars in stock-ticker.xul, I'm seeing a scroll frame
(not scrollable frame) with a display type of NS_STYLE_DISPLAY_TABLE_ROW_GROUP
and with gfx scroll bars, the gfx scroll bar has that display. This has to be
changed because the table code makes assumptions about the frame type based on
the display type. I noticed a lot of new code in nsCSSFrameConstructor and
nsScrollFrame that presumably you wrote, so I'm giving this back to you.
Assignee | ||
Comment 20•26 years ago
|
||
Comment 21•26 years ago
|
||
mass-moving all m12 bugs to m13
Updated•26 years ago
|
Status: NEW → ASSIGNED
Comment 22•26 years ago
|
||
The table should not be making assumption about display type. We should have a
interface on the frame that if implemented that can return the scrolled frame
inside. So when a table is looking at one of its rows it should see if it
implements this interface. If it does it should ask the interface for the
scrolled frame. This is very much like nsIScrollableView but at the frame level.
That way the implementation of the the scrolling code can be left as
implementation.
Chris Karnaze wrote:
> I didn't think this discussion necessarily had to do with with scrollable row
> groups, but it might. The table code was crashing because a scroll frame had
the
> display type of row group which is clearly wrong. Recall that the table code
> casts frames based on display type. So, what has changed is that scroll frames
> have the wrong display type and the question is "what display type should they
> have".
There is no special CSS display type for something that is scrolled. Therefore,
the
scroll frame will have a display type of row group. And that's not wrong, that's
the
way it is
A large part of the motivation for GetFrameType() was so that we could check
what
kind of frame we actually have. If you want to know whether it's a scroll frame,
then you should use GetFrameType()
-Troy
Comment 23•26 years ago
|
||
I want to avoid adding extra interfaces to frames unless we absolutely need to.
It costs us 4 bytes overhead per frame instance for each interface the frame
class implements.
The frame class should be sufficient to tell whether we have a scroll frame
That said, I think the equivalent of nsIScrollableView at the frame level makes
sense, and since only the scroll frame (or gfx scroll frame or whatever the
class name is) would implement it (and very few frames are scrolled) there won't
be much overhead. No more than we had before when using views
Comment 24•26 years ago
|
||
Ok I will put the interface together, have you review it and then Chris can use
it to get his scrolled row groups working. Sound like a plan?
Comment 25•26 years ago
|
||
Putting on PDT+ radar.
Updated•26 years ago
|
Whiteboard: [PDT+] → [PDT+] 12/10/1999
Comment 26•26 years ago
|
||
Ok I have a fix for my part that is an interface that is implemented by scroll
frames. Once that is checked in I'll have to pass it off to Chris to make sure
he uses it. So I'm putting a date of next friday for him.
Comment 27•26 years ago
|
||
spam: changing qa contact from ckritzer -> paulmac for xul bugs
Updated•26 years ago
|
Assignee: evaughan → karnaze
Status: ASSIGNED → NEW
Comment 28•26 years ago
|
||
nsIScrollableFrame is now implemented and checed in. Search nsTableFrame for it
too see how it is used.
Comment 29•26 years ago
|
||
Is this still a blocker? Is this still dogfood, or has enough of the problem
been resolved that either a) the whole bug is resolved; or b) the blocking and
dogfood stuff is resolved?
If this is no longer dogfood, please remove the word, and also remove the PDT
annotation.
Thanks,
Jim
Reporter | ||
Comment 30•26 years ago
|
||
I don't know. I haven't really been looking at panels since my internship
ended. Eric (Krock)?
Assignee | ||
Updated•26 years ago
|
Status: NEW → ASSIGNED
Assignee | ||
Comment 31•26 years ago
|
||
I don't know if this is still dogfood or not but I do have changes locally that
work with the attachments and am waiting for an approval to checkin.
Updated•26 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 26 years ago → 26 years ago
Resolution: --- → FIXED
Comment 32•26 years ago
|
||
kaarnaze checked in yesterday.
marking fixed to get on the testing radar.
lets try and get this checked out today.
thanks
Updated•26 years ago
|
Status: RESOLVED → VERIFIED
Comment 33•26 years ago
|
||
marking verified, all the test cases, attachments load without crashing using
12/14 builds
Comment 34•26 years ago
|
||
BULK MOVE: Changing component from XUL to XP Toolkit/Widgets: XUL. XUL
component will be deleted.
Component: XUL → XP Toolkit/Widgets: XUL
Component: XP Toolkit/Widgets: XUL → XUL
QA Contact: paulmac → xptoolkit.widgets
You need to log in
before you can comment on or make changes to this bug.
Description
•