Closed Bug 153785 Opened 23 years ago Closed 23 years ago

Table align left renders correctly on screen, suppresses pages after pg1 from previewing/printing

Categories

(Core :: Printing: Output, defect, P2)

x86
Windows 98
defect

Tracking

()

RESOLVED FIXED
mozilla1.1alpha

People

(Reporter: Joern.Becker, Assigned: karnaze)

References

()

Details

(Keywords: testcase)

Attachments

(6 files, 2 obsolete files)

From Bugzilla Helper: User-Agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.1a) Gecko/20020611 BuildID: 2002061104 In some cases and circumstands Mozilla does not print (even in the preview of a page) the pages after page 1 of a html-document. In some cases it helps to vary the size (in %) of the document being printed, but in the above example nothing helps ?! In the Browser itself all looks fine, but printing is not possible (only page 1 is printed. Reproducible: Always Steps to Reproduce: 1.Just load the given website 2.and choose Print Preview 3. Actual Results: Only the first page is printed, the second page is just empty and no other pages are printed at all. Expected Results: Print all the pages
Attached file Minimum testcase (deleted) —
Pared-down code that highlights the problem. The page content (the right side) is within a overall table that is aligned left. The main text is in a subtable, separated by a br clear=all from another table that holds the footer links. There is some kind of interaction between the overall table left align and the br all clear going on. If you remove either of those from the code, the page prints correctly (though removing the br clear all screws up the intended layout).
Confirming in 2002062308 PC Win98, adding keyword TESTCASE.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Keywords: testcase
Updated summary. Old summary: do not print page 2 till n of a longer html site
Summary: do not print page 2 till n of a longer html site → Table align left renders correctly on screen, suppresses pages after pg1 from previewing/printing
looks like a table printing layout issue
Assignee: rods → karnaze
Severity: major → critical
Status: NEW → ASSIGNED
Priority: -- → P2
Target Milestone: --- → mozilla1.0.1
I will be attaching a patch. I filed bug 157147 to deal with the problem where the left image (the one containing HOME, POLITIK, etc) is not showing up in print/print preview.
Attached file additional test case1 (deleted) —
Attached file additional test case2 (deleted) —
Blocks: 138349
With the changes from attachment 91137 [details] [diff] [review] in my tree, I hit this assertion: ###!!! ASSERTION: hello: 'firstFrame != lastPlaceholder', file X:\mozilla\layout \html\base\src\nsBlockFrame.cpp, line 4593 Break: at file X:\mozilla\layout\html\base\src\nsBlockFrame.cpp, line 4593 when print previewing this test case, then the browser hangs. It seems to be an infinite loop in nsBlockFrame::DrainOverflowLines() because the placeholder's mNextSibling is pointing to itself. Here's the stack: nsIFrame::GetNextSibling(nsIFrame * * 0x0012bd20) line 690 nsBlockFrame::DrainOverflowLines(nsIPresContext * 0x03b63860) line 4666 nsBlockFrame::Reflow(nsBlockFrame * const 0x03b87124, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 863 nsBlockReflowContext::DoReflowBlock(nsHTMLReflowState & {...}, nsReflowReason eReflowReason_Initial, nsIFrame * 0x03b87124, const nsRect & {...}, int 0, nsCollapsingMargin & {...}, int 1, nsMargin & {...}, unsigned int & 0) line 569 + 36 bytes nsBlockReflowContext::ReflowBlock(nsIFrame * 0x03b87124, const nsRect & {...}, int 0, nsCollapsingMargin & {...}, int 1, nsMargin & {...}, unsigned int & 0) line 345 + 50 bytes nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x0012c9ec) line 3288 + 59 bytes nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x0012c9ec, int 0) line 2471 + 27 bytes nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2253 + 31 bytes nsBlockFrame::Reflow(nsBlockFrame * const 0x03b87254, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 950 + 15 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x03b87254, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 807 + 31 bytes nsPageContentFrame::Reflow(nsPageContentFrame * const 0x03b8720c, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 97 nsContainerFrame::ReflowChild(nsIFrame * 0x03b8720c, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 1170, int 1170, unsigned int 0, unsigned int & 0) line 807 + 31 bytes nsPageFrame::Reflow(nsPageFrame * const 0x03b871a0, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 222 nsContainerFrame::ReflowChild(nsIFrame * 0x03b871a0, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 360, int 17520, unsigned int 0, unsigned int & 0) line 807 + 31 bytes nsSimplePageSequenceFrame::Reflow(nsSimplePageSequenceFrame * const 0x03b48ab8, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 437 nsBoxToBlockAdaptor::Reflow(nsBoxLayoutState & {...}, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0, int 0, int 0, int 12240, int 15840, int 1) line 882 nsBoxToBlockAdaptor::DoLayout(nsBoxToBlockAdaptor * const 0x03b7c9cc, nsBoxLayoutState & {...}) line 625 + 46 bytes nsBox::Layout(nsBox * const 0x03b7c9cc, nsBoxLayoutState & {...}) line 1062 nsScrollBoxFrame::DoLayout(nsScrollBoxFrame * const 0x03b49038, nsBoxLayoutState & {...}) line 394 nsBox::Layout(nsBox * const 0x03b49038, nsBoxLayoutState & {...}) line 1062 nsContainerBox::LayoutChildAt(nsBoxLayoutState & {...}, nsIBox * 0x03b49038, const nsRect & {...}) line 645 + 16 bytes nsGfxScrollFrameInner::LayoutBox(nsBoxLayoutState & {...}, nsIBox * 0x03b49038, const nsRect & {...}) line 1085 + 17 bytes nsGfxScrollFrameInner::Layout(nsBoxLayoutState & {...}) line 1240 nsGfxScrollFrame::DoLayout(nsGfxScrollFrame * const 0x03b48e90, nsBoxLayoutState & {...}) line 1093 + 15 bytes nsBox::Layout(nsBox * const 0x03b48e90, nsBoxLayoutState & {...}) line 1062 nsBoxFrame::Reflow(nsBoxFrame * const 0x03b48e58, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1004 nsGfxScrollFrame::Reflow(nsGfxScrollFrame * const 0x03b48e58, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 780 + 25 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x03b48e58, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 807 + 31 bytes ViewportFrame::Reflow(ViewportFrame * const 0x03b48a7c, nsIPresContext * 0x03b63860, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 577 PresShell::InitialReflow(PresShell * const 0x03b46068, int 12240, int 15840) line 2864 DocumentViewerImpl::ReflowPrintObject(PrintObject * 0x03b62758, int 1) line 3936 + 43 bytes DocumentViewerImpl::ReflowDocList(PrintObject * 0x03b62758, int 0, int 1) line 3691 + 16 bytes DocumentViewerImpl::SetupToPrintContent(nsIWebShell * 0x038db860, nsIDeviceContext * 0x038a1638, nsIDOMWindowInternal * 0x00000000) line 4475 + 41 bytes DocumentViewerImpl::DocumentReadyForPrinting() line 5334 + 47 bytes DocumentViewerImpl::FinishPrintPreview() line 6649 + 8 bytes DocumentViewerImpl::PrintPreview(DocumentViewerImpl * const 0x03b139f0, nsIPrintSettings * 0x03af9590, nsIDOMWindow * 0x00000000, nsIWebProgressListener * 0x03b25ecc) line 6632 + 11 bytes XPTC_InvokeByIndex(nsISupports * 0x03b139f0, unsigned int 14, unsigned int 3, nsXPTCVariant * 0x0012e838) line 106 XPCWrappedNative::CallMethod(XPCCallContext & {...}, XPCWrappedNative::CallMode CALL_METHOD) line 1994 + 42 bytes XPC_WN_CallMethod(JSContext * 0x01a4bd08, JSObject * 0x038d9080, unsigned int 3, long * 0x03adefa8, long * 0x0012eb14) line 1266 + 14 bytes js_Invoke(JSContext * 0x01a4bd08, unsigned int 3, unsigned int 0) line 788 + 23 bytes js_Interpret(JSContext * 0x01a4bd08, long * 0x0012f954) line 2743 + 15 bytes js_Invoke(JSContext * 0x01a4bd08, unsigned int 1, unsigned int 2) line 805 + 13 bytes js_InternalInvoke(JSContext * 0x01a4bd08, JSObject * 0x013def88, long 51937328, unsigned int 0, unsigned int 1, long * 0x0388e578, long * 0x0012fa7c) line 880 + 20 bytes JS_CallFunctionValue(JSContext * 0x01a4bd08, JSObject * 0x013def88, long 51937328, unsigned int 1, long * 0x0388e578, long * 0x0012fa7c) line 3428 + 31 bytes nsJSContext::CallEventHandler(nsJSContext * const 0x0302c8c8, void * 0x013def88, void * 0x03188030, unsigned int 1, void * 0x0388e578, int * 0x0012fb14, int 0) line 1042 + 33 bytes GlobalWindowImpl::RunTimeout(nsTimeoutImpl * 0x0388e4f0) line 4571 + 84 bytes GlobalWindowImpl::TimerCallback(nsITimer * 0x03ad1520, void * 0x0388e4f0) line 4922 nsTimerImpl::Fire() line 339 + 17 bytes handleTimerEvent(TimerEventType * 0x036eb0c0) line 405 PL_HandleEvent(PLEvent * 0x036eb0c0) line 596 + 10 bytes PL_ProcessPendingEvents(PLEventQueue * 0x01393fa0) line 526 + 9 bytes _md_EventReceiverProc(HWND__ * 0x001902d8, unsigned int 49539, unsigned int 0, long 20529056) line 1077 + 9 bytes USER32! 77e11b60() USER32! 77e11cca() USER32! 77e183f1() nsAppShellService::Run(nsAppShellService * const 0x018dbe60) line 452 main1(int 1, char * * 0x003074d8, nsISupports * 0x00000000) line 1456 + 32 bytes main(int 1, char * * 0x003074d8) line 1805 + 37 bytes mainCRTStartup() line 338 + 17 bytes
Attachment #91137 - Attachment is obsolete: true
Isn't this a duplicate of bug 85768?
Comment on attachment 91389 [details] [diff] [review] revised patch to reset overflow floaters after they have been used r= alexsavulov sorry i could not get earlyer to this, i started to review it last friday, but then i got cought with other stuff
Attachment #91389 - Flags: review+
Comment on attachment 91389 [details] [diff] [review] revised patch to reset overflow floaters after they have been used karnaze and I went over this by phone. I'm giving him a conditional sr=kin with the following provisions we discussed: 1. Put back the code he added in PushLines() back into Reflow(). 2. Modify PlaceLine() so that it returns a bool of whether or not it did a push, instead of passing in an aLastOverflowPlaceholder arg, since this will keep the knowledge of the last overflow placeholder entirely in the caller. 3. Remove this change: @@ -3303,6 +3366,7 @@ // Advance to next line since some of the block fit. That way // only the following lines will be pushed. + ::UndoPlaceholders(aState, lastPlaceholder); PushLines(aState, aLine); aState.mReflowStatus = NS_FRAME_NOT_COMPLETE; *aKeepReflowGoing = PR_FALSE;
Attachment #91389 - Flags: superreview+
Keywords: approval
Comment on attachment 91389 [details] [diff] [review] revised patch to reset overflow floaters after they have been used a=asa (on behalf of drivers) for checkin to 1.1
Attachment #91389 - Flags: approval+
Attachment #91389 - Attachment is obsolete: true
The patch is in the trunk. I should have reversed the meaning of the return value of PlaceLine in the patch; I'll change it later.
Status: ASSIGNED → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Target Milestone: mozilla1.0.1 → mozilla1.1alpha
Blocks: 85768
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: