Commit Graph

934 Commits

Author SHA1 Message Date
Robert O'Callahan
fb6a78d67b Bug 733607. Restructure logic to compute snapped bounds of display items in layer coordinates. Moves responsibility for computing snapped bounds from within the display items to callers of GetBounds/GetOpaqueRegion. r=tnikkel
Previously we snapped the results of nsDisplayItem::GetBounds and
nsDisplayItem::GetOpaqueRegion internally. By tracking which display items were
inside transforms, we disabled snapping quite conservatively whenever an ancestor
had a transform, which is undesirable.

With this patch, we don't snap inside GetBounds or GetOpaqueRegion, but just return
a boolean flag indicating whether the item will draw with snapping or not. This flag
is conservative so that "true" means we will snap (if the graphics context has a transform
that allows snapping), but "false" means we might or might not snap (so it's always safe
to return false).

FrameLayerBuilder takes over responsibility for snapping item bounds. When it converts
display item bounds to layer pixel coordinates, it checks the snap flag returned from
the display item and checks whether the transform when we draw into the layer will be
a known scale (the ContainerParameters scale factors) plus integer translation. If both
are true, we snap the item bounds when converting to layer pixel coordinates. With
this approach, we can snap item bounds even when the items have ancestors with active
transforms.
2012-04-10 23:24:18 +12:00
Mats Palmgren
a3cd816ea1 Bug 736915 - Print Selection prints a blank page when the selection is inside a table. r=bz
When rendering just the current Selection (Print - Selection) then don't create display items
for table-related frames unless the frame itself is part of the selection, and always ask
descendant frames to build display lists [in case they are selected].
2012-04-03 02:30:45 +02:00
Daniel Holbert
3dbcc8aba7 Bug 732610 - Make nsIFrame::ComputeSize take a bitfield 'aFlags' instead of a bool 'aShrinkWrap'. r=dbaron 2012-03-16 11:01:05 -07:00
Mats Palmgren
1ceaa4894a Bug 728906 - Make nsIFrame::GetChildList return const nsFrameList&. r=bz 2012-03-08 02:57:37 +01:00
Nathan Froyd
20f5ce545a Bug 731615 - Eliminate duplicate headers in layout. rs=smontagu 2012-02-29 10:57:47 -05:00
Matt Woodrow
439a12dca2 Bug 721082 - Constify nsIFrame::GetParentStyleContextFrame. r=roc 2012-02-15 22:28:21 +13:00
Aryeh Gregor
46356c7953 Bug 722777 - Tables with 'transform' property set don't act as abs-pos/fixed-pos containers; r=roc 2012-02-10 21:05:00 +00:00
L. David Baron
1d98076bbe Set inflation container to null during parts of intrinsic sizing that should not have inflation applied. (Bug 706609, patch 4) r=roc
This is the first of two patches to honor inflation during intrinsic
width calculation (which we need to do to make some form controls
inflate correctly).
2012-01-24 17:21:29 -08:00
Mats Palmgren
8c2341696d Bug 720142 - Avoid calling GetFirstInFlow() on the row group twice. r=bernd 2012-01-22 23:48:34 +01:00
Mats Palmgren
ef530e8633 Bug 720142 - Only calculate the border half we actally use. r=bernd 2012-01-22 23:48:34 +01:00
Mats Palmgren
aedc830d14 Bug 720142 - Use nsIntRect for table damage. r=bernd 2012-01-22 23:48:34 +01:00
Mats Palmgren
a58fa4d0e1 Bug 524925 - Consolidate overflow clipping checks to nsFrame::ApplyOverflowClipping(); and fix some code style nits. part=5/6 r=roc 2012-01-18 21:04:51 +01:00
Benjamin Stover
a38eb5067f Bug 524925 - Recompute overflow without reflowing for transforms. part=1/6 r=dbaron
Add an extra change hint, UpdateOverflow, that can be used to specify that
a frame's overflow areas may have changed and that they need to be recalculated.
When a transform on a frame changes, instead of marking it for reflow, set this
hint instead.

There is an added virtual function on nsIFrame, UpdateOverflow, which is called
recursively on a frame when the corresponding hint is set, to allow it to
update its overflow areas.
2011-06-15 14:03:49 -07:00
Mats Palmgren
dc6e69db71 Bug 716408 - Fix nsTableFrame::DidSetStyleContext indentation. r=bernd 2012-01-17 00:38:10 +01:00
Mats Palmgren
19f0d33495 Bug 716408 - Assert that a prev-in-flow is null or of the same frame type. No need to null out mCellMap, the ctor does that and re-Init of frames isn't allowed. r=bernd 2012-01-17 00:38:10 +01:00
Mats Palmgren
da4686bef0 Bug 716408 - No need to null-check for delete, no need to null out members in dtor. r=bernd 2012-01-17 00:38:10 +01:00
Mats Palmgren
ec399fc7e2 Bug 716408 - Initialize all bits of mBits to zero. r=bernd 2012-01-17 00:38:10 +01:00
Mats Palmgren
e0018d2b82 Bug 716408 - Make nsTableFrame::GetTableFrame abort if the given frame isn't a table frame descendant, thus guaranteeing a non-null result. r=bernd 2012-01-17 00:38:10 +01:00
Mats Palmgren
5b5536da83 Bug 716408 - Remove null-checks of GetFirstInFlow() result. r=bernd 2012-01-17 00:38:10 +01:00
Bernd
e43b60de59 bug 711864 - dEndY is already in the rowgroup r=mats 2012-01-09 07:37:16 +01:00
Mats Palmgren
8fe75b1c1b Bug 515530 - Remove nsHTMLContainerFrame. r=roc 2011-12-27 21:18:48 +01:00
Nicholas Nethercote
c8d93dc02b Bug 711908 - Fix a bunch of GCC warnings in layout. r=dbaron. 2011-12-19 19:46:39 -08:00
Mats Palmgren
8f89cccd9c Bug 619273 - Move the selection state bit from frames to content nodes. r=smaug 2011-12-20 10:15:41 +01:00
Bernd
05da1a27c4 bug 460637 - the group cellmaps need to set the damageArea relative to the entire table, patch by Mats Palmgren, Randell Jesup and Bernd, r=mats, bernd 2011-10-27 09:58:44 -04:00
Jonathan Watt
276bdfa251 Bug 695303 - Add a mozilla::clamped function to replace NS_CLAMP (so side affects of args are evaluated no more than once) and NS_MIN(max, NS_MAX(val, min)) (to make code clearer). r=bsmedberg. 2011-10-28 19:33:28 +01:00
Ehsan Akhgari
478ad1a412 Bug 690892 - Replace PR_TRUE/PR_FALSE with true/false on mozilla-central; rs=dbaron
Landing on a CLOSED TREE
2011-10-17 10:59:28 -04:00
Matt Woodrow
6983ff0ad4 Bug 692968 - Make nsDisplayTableItem::GetBounds return the untransformed overflow area. r=tn 2011-10-13 14:01:27 +13:00
Ehsan Akhgari
d42f0f9e4e Bug 659828 - Part 1: Apply table margins to the outer table frame instead of the inner table frame (also fixes bug 87277); r=dbaron
Outer table frames act as CSS2.1 table wrapper boxes.  We used to lay them out
without taking their margins into the account, which meant that their width was
always equal to the available width.  This breaks horizontal positioning of
absolutely positioned kids of a table frame.

The main purpose of this patch is to apply the margins of tables to their outer
frame, instead of the inner frame.  This means that the inner table frame will
always have a zero margin, which means that a lot of the stuff which used to
rely on the fact that table margins are applied to the inner frame need to
change.

In particular, in order to get the computed margins of a table, we used to query
the inner table frame, and this patch corrects that.  Also, when shrink wrapping
tables, we used to not take the margins of the inner table frame into account,
which is fixed by this patch too.  nsBlockReflowState::
ComputeReplacedBlockOffsetsForFloats also needed to be changed to read the
margin values from the outer frame too.

Also, as part of this patch, we start to respect the CSS2.1 margin model for
captions on all sides.  This means that in particular, the top/bottom margins on
the top-outside and bottom-outside captions will not be collapsed with the
top/bottom margins of the table, and that the margins of the caption element
contribute to the width and height of the outer table frame.  The
427129-table-caption reftest has been modified to match this new behavior.

Another side effect of this bug is fixing bug 87277, and the reftests for that
bug are marked as passing in this patch.
2011-05-31 19:02:56 -04:00
Ehsan Akhgari
de3e3fd8ee Bug 10209 - Part 6: Implement the CSS "containing block" concept correctly as a binary relation, as opposed to a unary relation; r=bzbarsky 2011-05-12 00:04:30 -04:00
Michael Wu
0fe7772ece Bug 675553 - Switch from PRBool to bool on a CLOSED TREE , r=bsmedberg,khuey,bz,cjones 2011-09-28 23:19:26 -07:00
Mats Palmgren
886a8f934d Bug 685154 - Cleanup nsIFrame::GetParentStyleContextFrame and related code. r=roc
Make nsIFrame::GetParentStyleContextFrame return the frame directly
instead of indirectly through an out parameter.  Remove the unused
nsPresContext parameter.
2011-09-12 09:08:07 -07:00
Mats Palmgren
4e2a044a66 Bug 653649 - New way of getting child lists from frames. (part 4/5) r=roc
Remove the nsIAtom* child list names and use child list ID enum instead.
2011-08-24 22:54:30 +02:00
Mats Palmgren
1bfd788e19 Bug 653649 - New way of getting child lists from frames. (part 3/5) r=roc
Update GetAdditionalChildListName consumers to use the new
child list iterator instead.
2011-08-24 22:54:29 +02:00
Mats Palmgren
8c07e2e92b Bug 653649 - New way of getting child lists from frames. (part 2/5) r=roc sr=dbaron
Implement GetChildList(ChildListID) and GetChildLists(nsTArray<ChildList>*)
for various frame classes.  Remove GetAdditionalChildListName(PRInt32)
methods and associated macros and list index constants.
2011-08-24 22:54:29 +02:00
Bernd
c934e454e7 bug 675490 - push nonplaced tfoots and mark them as nonrepeating r=bz 2011-08-13 18:37:43 +02:00
Bernd
7ca9abb02a bug 678447 - prevent splitting of tables inside columnsets during printing r=roc 2011-08-13 18:37:43 +02:00
Bernd
c89cbf6c89 Bug 642088 - Subtract the caption height and vertical margins from the available height before reflowing the inner table frame. r=bzbarsky 2011-07-26 19:22:46 +02:00
Ehsan Akhgari
b8774f8312 Back out bug 10209 and bug 656875 (its regression fix) from Aurora because the work on this bug has not been finished yet 2011-06-01 16:18:15 -04:00
Dominic Fandrey
532ec73933 Bug 645398 - Substitute PR_(MAX|MIN|ABS|ROUNDUP) macro calls; r=roc 2011-06-02 14:56:50 +02:00
Ehsan Akhgari
8c373030bb Bug 10209 - Part 2: Implement the absolute positioning support for all frames; r=roc 2011-04-29 19:02:33 -04:00
Robert O'Callahan
6844dfc18d Bug 641426. Part 3.5: Remove usage of nsMargin::TopLeft and nsMargin::IsZero. r=dbaron 2011-04-19 15:07:22 +12:00
Jan Küchler
8774547613 Bug 266236 part 3: Mechanical rename of nsIRenderingContext and nsThebesRenderingContext to nsRenderingContext. Mechanical substitution of nsRefPtr<nsRenderingContext> for nsCOMPtr<nsRenderingContext>. 2011-04-07 18:04:40 -07:00
Jan Küchler
ed48629385 Bug 266236 part 1: Preliminary API cleanup on nsIRenderingContext. 2011-04-07 18:04:39 -07:00
8de1b4032d Bug 618830 initial assignment to kidNextInFlow is useless in nsTableFrame::ReflowChildren
r=bz
2011-03-28 16:50:13 -04:00
Boris Zbarsky
6474b590ed Bug 644576. Make sure that when we set up our iterator we don't decide we're done if the first row in our damage range contains no cells in our damage range. r=roc 2011-03-28 10:49:48 -04:00
5b6ae1c5ce Bug 620311 crash [@ nsTableFrame::MatchCellMapToColCache | nsTableFrame::RemoveFrame] because cellMap guard did not cover MatchCellMapToColCache
r=bernd
2011-03-26 00:37:35 -04:00
5485111bba Bug 620259 - add fall through comments to nsTableCellMap::SetNotTopStart and rename to nsTableCellMap::ResetTopStart
r=bernd a=dbaron
2011-02-16 14:14:18 +01:00
d72d5fbee6 Bug 620312 crash [@ nsTableFrame::InsertCol] because lastColGroup guard did not cover lastColGroup->GetColCount() r=bernd a=dbaron 2011-02-15 19:35:52 -05:00
76170dc28e Bug 617637 nsTableFrame::PushChildren imagines it can pass null to [@ nsFrameList::RemoveFrame] violating its preconditions
r=bz
2010-12-09 11:57:03 +01:00
Mats Palmgren
0e30d2f701 Bug 595758 - Crash [@ nsTableFrame::MarkIntrinsicWidthsDirty] on print preview. r=dbaron a=blocking2.0:betaN 2010-11-14 19:26:36 +01:00