Closed Bug 167775 Opened 22 years ago Closed 22 years ago

IFrames do not print in the correct location


(Core :: Printing: Output, defect)

Windows 2000
Not set





(Reporter: rods, Assigned: rods)




(2 files, 2 obsolete files)

When an iframe is on the second page it doesn't print.
Target Milestone: --- → mozilla1.2beta
Attached patch patch (obsolete) — Splinter Review
Fixes how IFrame locations are calculated
Depends on: 129034
Comment on attachment 98609 [details] [diff] [review]

-- Should aX and aY be initialized just in case some null
   pointer forces this method to exit before the while loop
   is executed? If you are assuming aX and aY are initialized
   prior to the call, please add a comment that states that.

+static void GetIFramePosition(nsPrintObject * aPO, nscoord& aX, nscoord& aY)
+  if (aPO->mParent != nsnull) {

-- That's a long pointer chain to follow. :-) Does the caller ensure
   that none of those pointers can ever be null? Also, we are asserting
   if we have a null frameMan, but we'll use it anyways, do we want
   to add a null check that causes an early return before a null pointer
   is used?

+    aPO->mParent->mPresShell->GetFrameManager(getter_AddRefs(frameMan));
+    NS_ASSERTION(frameMan, "No Frame manager!");

-- "we we out wat"? :-)

+	 // For IFrames, we locate the "inner" frame in the Parent document
+	 // then start calculating the location as we we our wat out to the 
+	 // the pageContentFrame

-- Won't this be an infinite loop if |isParent && doAddInParentsOffset| is
   That is, |po = po->mParent| will yield the same pointer right? Also, is it
   possible to run into that situation in the iframe loop above this code?

+	   nsPrintObject * po = aPO;
+	   while (po != nsnull) {
+	     PRBool isParent = po == aPO->mParent;
+	     if (!isParent || (isParent && doAddInParentsOffset)) {
+	       x += po->mRect.x;
+	       y += po->mRect.y;
+	     }
+	     po = po->mParent;
I meant to say that the infinite loop will occur if |isParent| is true.
Ok duh, for some reason when I looked at:

+            PRBool isParent = po == aPO->mParent;

I was thinking

+            PRBool isParent = po == pO->mParent;

which would've been a problem ... so I guess it's not. :-) Thanks for setting me
straight rod. :-)
Attached patch patch v2 (obsolete) — Splinter Review
Reworked the patch a little, doAddInParentsOffset is only needed when printnig
an IFrame PO.
Attachment #98609 - Attachment is obsolete: true
Attachment #98746 - Attachment is obsolete: true
Comment on attachment 98747 [details] [diff] [review]
patch v3 (v2 is wrong diff)

Attachment #98747 - Flags: review+
Comment on attachment 98747 [details] [diff] [review]
patch v3 (v2 is wrong diff)

Just add the comment regarding aX and aY.
Attachment #98747 - Flags: review+ → superreview+
fixed - you should see the contents of iframes when they print on the second,
3rd page etc.
Closed: 22 years ago
Resolution: --- → FIXED
Keywords: nsbeta1+
Keywords: adt1.0.2
Can you please verify this on the trunk. It will help us determine whether it
should be included in the Blackbird or not. 
Thanks, Gayatri
Please get a branch patch and get this verified on the trunk before renominating
Keywords: adt1.0.2adt1.0.2-
verified in 9/26 trunk build.

I printed out and it seemed like it printed
out correctly..Verified with layout QA engineer also.
patch ported over (works great)
Comment on attachment 104898 [details] [diff] [review]
patch for 1.0.2 branch
Attachment #104898 - Flags: superreview+
Comment on attachment 104898 [details] [diff] [review]
patch for 1.0.2 branch

Attachment #104898 - Flags: review+
Keywords: adt1.0.2-adt1.0.2
Comment on attachment 104898 [details] [diff] [review]
patch for 1.0.2 branch for 1.0 branch; change mozilla1.0.2+ to fixed1.0.2 when
checked in
Attachment #104898 - Flags: approval+
Keywords: fixed1.0.2
Just talked to Rod.  This has landed on the branch.  Updating keywords and
linking  to our meta.
Depends on: blackbird
Keywords: adt1.0.2adt1.0.2+
verified on 11/6 branch build.
You need to log in before you can comment on or make changes to this bug.