Closed Bug 12012 Opened 25 years ago Closed 25 years ago

XUL doesn't reflow correctly on resize

Categories

(Core :: XUL, defect, P1)

defect

Tracking

()

VERIFIED FIXED

People

(Reporter: dbaron, Assigned: eric)

References

Details

(Whiteboard: This is a table bug. Dep marked on 12287)

The contents of XUL files do not reflow correctly when the containing area is resized. This will be a serious problem for (some) sidebar panels once bug 8000 is fixed (which it should be soon). To see the problems, download: http://www.fas.harvard.edu/~dbaron/nstmp/M9-3/when-com.xul http://www.fas.harvard.edu/~dbaron/nstmp/M9-3/when-com.css http://www.fas.harvard.edu/~dbaron/nstmp/M9-3/when-com.js http://www.fas.harvard.edu/~dbaron/nstmp/M9-3/when-com.rdf to your local hard disk, put them in the same directory, and load when-com.xul in *viewer*. (It doesn't work over HTTP right now. See bug 11112.) Notice that you can resize viewer and *then* reload, and thigs will (usually, although sometimes it's quirky) resize to the size of the window. However, if you resize viewer horizontally, things don't resize the way they do when you reload. They should. (The most serious problem is if you load when the window is large and then shrink it.) Tested in: * Linux viewer 1999-08-15-08-M9 * Linux viewer 1999-08-16-08-M9 * Windows viewer 1999-08-15-09-M9 * Windows viewer 1999-08-16-09-M9 (Note: does not work in builds for about three weeks before 1999-08-15 due to bug 10712 (Win only) and bug 11577 (all).)
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → INVALID
resolving as invalid, Viewer is a test app for Gecko, not a target platform for XUL.
First, I'm not sure this bug is as general as I originally thought. It may be particular to a certain configuration of boxes and springs (that I use). Second, do you have any reason to believe that once the sidebar is resizable, things will behave any differently than they do in viewer now? If not, I think this bug should be reopened. Or should sidebar panels not be written in XUL?
If the problem is limited to Viewer, then it should be reassigned to someone in Gecko if reopened. I don't really have any opinion about Viewer, other than that it should not be the focus of our development, since we are shipping only AppRunner and its components.
Status: RESOLVED → REOPENED
OK, I observed the same thing in the content window of apprunner, Linux 1999-08-16-08-M9 (I didn't try it before in apprunner because my (incorrect) memory of a bug that apprunner couldn't be resized very small, on Linux anyway). I was testing resizability in viewer because the sidebar can't be resized yet. The sidebar will be resizable soon, which is why I was testing it. It's an XUL bug, unless XUL acts differently in the sidebar than it does in the content frame of apprunner or in viewer. Reopening.
Resolution: INVALID → ---
Assignee: trudelle → evaughan
Status: REOPENED → NEW
reassigning to evaughan, since you say it may be specific to your usage of boxes and springs.
Status: NEW → ASSIGNED
Priority: P3 → P1
Whiteboard: [BLOCKER][DOGFOOD]
Target Milestone: M10
Made the following changes as this is blocking David Baron's panel development (or will be as soon as 8000 is fixed): 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. It is urgent that we fix this bug soon so that development of panels by dbaron (for demo development) and external partners (for beta panels) can move forward. 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.
I'm finishing up some other bugs. but I will work on this today.
Severity: major → blocker
Whiteboard: [BLOCKER][DOGFOOD] → Will work on this today
Blocks: 12287
In looking at this almost all of your layout is tables. Not boxes. Tables have a major bug in them that causes them to ignore the computed size given to them by a box. This is filed as bug: 12287. Placing a dependency on bug 12287 Do you really need to use tables this extensively to get your desired layout?
Whiteboard: Will work on this today → This is a table bug. Dep marked on 12287
Target Milestone: M10 → M11
Target Milestone: M11 → M14
Assignee: evaughan → karnaze
Status: ASSIGNED → NEW
This crashes in tables. The reflow state looks good. Both the width and height are calculated. Available height is NS_AUTOHEIGHT. nsCellMap::GetCellInfoAt(int 1, int 0, int * 0x0012b4a0, int * 0x0012b4a4) line 512 nsTableFrame::GetCellInfoAt(int 1, int 0, int * 0x0012b4a0, int * 0x0012b4a4) line 5285 BasicTableLayoutStrategy::AssignPercentageColumnWidths(int 2505, int 0) line 802 + 30 bytes BasicTableLayoutStrategy::BalanceColumnWidths(nsIStyleContext * 0x02d8ed50, const nsHTMLReflowState & {...}, int 2595) line 208 + 37 bytes nsTableFrame::BalanceColumnWidths(nsIPresContext & {...}, const nsHTMLReflowState & {...}, const nsSize & {...}, nsSize * 0x00000000) line 3896 nsTableFrame::Reflow(nsTableFrame * const 0x02d8eac4, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 2302 nsContainerFrame::ReflowChild(nsIFrame * 0x02d8eac0, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 372 + 28 bytes nsTableOuterFrame::Reflow(nsTableOuterFrame * const 0x02d8eb64, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 902 + 37 bytes nsBlockReflowContext::ReflowBlock(nsIFrame * 0x02d8eb60, const nsRect & {...}, int 1, int 0, int 0, nsMargin & {...}, unsigned int & 0) line 229 + 42 bytes nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineBox * 0x02d8be40, int * 0x0012bf40) line 3136 + 59 bytes nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineBox * 0x02d8be40, int * 0x0012bf40, int 0) line 2509 + 20 bytes nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2320 + 27 bytes nsBlockFrame::Reflow(nsBlockFrame * const 0x02d94074, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1415 + 18 bytes nsBoxFrame::FlowChildAt(nsIFrame * 0x02d94070, 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 0x02407574, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 534 nsBoxFrame::FlowChildAt(nsIFrame * 0x02407570, 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 0x02405a4c, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 534 nsBoxFrame::FlowChildAt(nsIFrame * 0x02405a48, 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 0x02403f24, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 534 nsContainerFrame::ReflowChild(nsIFrame * 0x02403f20, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 372 + 28 bytes RootFrame::Reflow(RootFrame * const 0x02d85a44, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 330 nsContainerFrame::ReflowChild(nsIFrame * 0x02d85a40, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 372 + 28 bytes ViewportFrame::Reflow(ViewportFrame * const 0x02d85ab4, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 516 nsHTMLReflowCommand::Dispatch(nsHTMLReflowCommand * const 0x02d89da0, nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsSize & {...}, nsIRenderingContext & {...}) line 141 PresShell::ProcessReflowCommands(PresShell * const 0x02b11d90) line 1391 PresShell::ExitReflowLock(PresShell * const 0x02b11d90) line 667 PresShell::ContentAppended(PresShell * const 0x02b11d98, nsIDocument * 0x027bc140, nsIContent * 0x02d63460, int 0) line 1824 XULDocumentImpl::ContentAppended(XULDocumentImpl * const 0x027bc140, nsIContent * 0x02d63460, int 0) line 1802 nsGenericHTMLContainerElement::AppendChildTo(nsIContent * 0x02d884bc, int 1) line 2951 nsGenericHTMLContainerElement::InsertBefore(nsIDOMNode * 0x02d884b0, nsIDOMNode * 0x00000000, nsIDOMNode * * 0x0012d628) line 2604 + 14 bytes nsGenericHTMLContainerElement::AppendChild(nsIDOMNode * 0x02d884b0, nsIDOMNode * * 0x0012d628) line 2791 nsHTMLTableCellElement::AppendChild(nsHTMLTableCellElement * const 0x02d63454, nsIDOMNode * 0x02d884b0, nsIDOMNode * * 0x0012d628) line 62 + 22 bytes NodeAppendChild(JSContext * 0x027541d0, JSObject * 0x023d97a8, unsigned int 1, long * 0x023d76cc, long * 0x0012d6e4) line 617 + 25 bytes js_Invoke(JSContext * 0x027541d0, unsigned int 1, unsigned int 0) line 672 + 26 bytes js_Interpret(JSContext * 0x027541d0, long * 0x0012df5c) line 2248 + 15 bytes js_Invoke(JSContext * 0x027541d0, unsigned int 0, unsigned int 0) line 688 + 13 bytes js_Interpret(JSContext * 0x027541d0, long * 0x0012e790) line 2248 + 15 bytes js_Invoke(JSContext * 0x027541d0, unsigned int 1, unsigned int 0) line 688 + 13 bytes js_Interpret(JSContext * 0x027541d0, long * 0x0012efc4) line 2248 + 15 bytes js_Invoke(JSContext * 0x027541d0, unsigned int 0, unsigned int 0) line 688 + 13 bytes js_Interpret(JSContext * 0x027541d0, long * 0x0012f7f8) line 2248 + 15 bytes js_Invoke(JSContext * 0x027541d0, unsigned int 1, unsigned int 2) line 688 + 13 bytes js_InternalCall(JSContext * 0x027541d0, JSObject * 0x012f9d00, long 19900488, unsigned int 1, long * 0x0012f978, long * 0x0012f930) line 765 + 15 bytes JS_CallFunction(JSContext * 0x027541d0, JSObject * 0x012f9d00, JSFunction * 0x02c41a90, unsigned int 1, long * 0x0012f978, long * 0x0012f930) line 2653 + 32 bytes nsJSContext::CallFunction(nsJSContext * const 0x02755030, void * 0x012f9d00, void * 0x02c41a90, unsigned int 1, void * 0x0012f978, int * 0x0012f974) line 231 + 39 bytes nsJSEventListener::HandleEvent(nsIDOMEvent * 0x02d998e0) line 103 + 48 bytes nsEventListenerManager::HandleEvent(nsIPresContext & {...}, nsEvent * 0x0012fcd0, nsIDOMEvent * * 0x0012fb78, unsigned int 7, nsEventStatus & nsEventStatus_eIgnore) line 1025 + 21 bytes GlobalWindowImpl::HandleDOMEvent(GlobalWindowImpl * const 0x027544a4, nsIPresContext & {...}, nsEvent * 0x0012fcd0, nsIDOMEvent * * 0x0012fb78, unsigned int 1, nsEventStatus & nsEventStatus_eIgnore) line 2897 nsWebShell::OnEndDocumentLoad(nsWebShell * const 0x027549b4, nsIDocumentLoader * 0x027540e0, nsIChannel * 0x02d362f0, unsigned int 0, nsIDocumentLoaderObserver * 0x027549b4) line 3330 + 34 bytes nsDocLoaderImpl::FireOnEndDocumentLoad(nsDocLoaderImpl * 0x027540e0, nsIChannel * 0x02d362f0, unsigned int 0) line 849 nsDocLoaderImpl::OnStopRequest(nsDocLoaderImpl * const 0x027540e4, nsIChannel * 0x02c3d190, nsISupports * 0x00000000, unsigned int 0, const unsigned short * 0x00000000) line 730 nsOnStopRequestEvent::HandleEvent(nsOnStopRequestEvent * const 0x02d99990) line 322 nsStreamListenerEvent::HandlePLEvent(PLEvent * 0x02d99940) line 169 + 12 bytes PL_HandleEvent(PLEvent * 0x02d99940) line 534 + 10 bytes PL_ProcessPendingEvents(PLEventQueue * 0x0106eaa0) line 493 + 9 bytes _md_EventReceiverProc(HWND__ * 0x001c020a, unsigned int 49432, unsigned int 0, long 17230496) line 963 + 9 bytes USER32! 77e71820() 0106eaa0()
Assignee: karnaze → evaughan
Eric, I checked in a fix to nsTableRowGroupFrame.cpp for the crash.
Status: NEW → RESOLVED
Closed: 25 years ago25 years ago
Resolution: --- → FIXED
yep that fixed it thanks Chris!
Status: RESOLVED → VERIFIED
Marking VERIFIED FIXED on: MacOS9 1999110308 apprunner Linux6 1999110309 apprunner Win98 1999110308 apprunner
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: ckritzer → xptoolkit.widgets
You need to log in before you can comment on or make changes to this bug.