Commit Graph

349 Commits

Author SHA1 Message Date
Robert O'Callahan
7c34e38876 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
Daniel Holbert
98b0d12882 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
39a7d31397 Bug 728906 - Make nsIFrame::GetChildList return const nsFrameList&. r=bz 2012-03-08 02:57:37 +01:00
Matt Woodrow
bf3a5c2649 Bug 721082 - Constify nsIFrame::GetParentStyleContextFrame. r=roc 2012-02-15 22:28:21 +13:00
Mats Palmgren
86699a57d7 Bug 720142 - Use nsIntRect for table damage. r=bernd 2012-01-22 23:48:34 +01:00
Benjamin Stover
dc9cd57308 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
78d0f2c7ca Bug 515530 - Remove nsHTMLContainerFrame. r=roc 2011-12-27 21:18:48 +01:00
Bernd
844db3e17f 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
Ehsan Akhgari
92064e6d3f 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
Ehsan Akhgari
4b84fe41d5 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
2b29cd6201 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
d2b70213ac Bug 675553 - Switch from PRBool to bool on a CLOSED TREE , r=bsmedberg,khuey,bz,cjones
--HG--
rename : tools/trace-malloc/bloatblame.c => tools/trace-malloc/bloatblame.cpp
2011-09-28 23:19:26 -07:00
Mats Palmgren
37e14b15b9 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
Felix Fung
0bc71ca85d Bug 577266 - Correct misspellings in source code 2011-09-06 17:20:35 -07:00
Mats Palmgren
f1c56f2e22 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
Ehsan Akhgari
523ebb7851 Bug 677661 - Remove nsTPtrArray and add a SafeElementAt(index_type) API to nsTArray when it's instantiated with a pointer type; r=sicking 2011-08-10 01:36:00 -04:00
Jan Küchler
c510bc3046 Bug 266236 part 3: Mechanical rename of nsIRenderingContext and nsThebesRenderingContext to nsRenderingContext. Mechanical substitution of nsRefPtr<nsRenderingContext> for nsCOMPtr<nsRenderingContext>.
--HG--
rename : gfx/src/nsThebesRenderingContext.cpp => gfx/src/nsRenderingContext.cpp
extra : rebase_source : 34884bfcafd885feaf73300bc7246cd192062a48
2011-04-07 18:04:40 -07:00
L. David Baron
0bf111ce59 Fix all ReflowChildren methods in table code to avoid unnecessary NS_METHOD and NS_IMETHOD, and one that takes an overflow area to handle it correctly. (Bug 542595, patch 18) r=roc a2.0=blocking2.0:beta8 2010-10-06 21:25:46 -07:00
L. David Baron
48071dc6a3 Make parameters to nsTableFrame::InvalidateFrame, nsTableFrame::PlaceChild, and nsTableRowGroupFrame::PlaceChild be the visual overflow rect. (Bug 542595, patch 17) r=roc a2.0=blocking2.0:beta8 2010-10-06 21:25:46 -07:00
Robert O'Callahan
33a0aec926 Bug 584282. Add nsDisplayItem::mToReferenceFrame and initialize it in the constructor. r=tnikkel,a=dbaron
--HG--
extra : rebase_source : 496cbde7c495eb8872c3d0ffc0ca4c57c2a6a777
2010-08-13 22:01:13 +12:00
Robert O'Callahan
002b421174 Bug 579258. Change IsVaryingRelativeToMovingFrame to take the 'moving frame' as a direct parameter instead of getting it from the builder. r=tnikkel,a=joe 2010-08-13 21:54:37 +12:00
Bernd
5b3485bfc6 bug 558574 - fix issues with table footer placement and missed page breaks inside of row groups r=roc 2010-05-13 16:15:49 +02:00
Ehren Metcalfe
a791e19cc4 Bug 556446: Remove dead code in layout. r=roc,bz 2010-04-03 07:36:19 -04:00
Robert O'Callahan
0fd1837981 Bug 551660. Switch layout code from using nsPropertyTable to FramePropertyTable. r=mats,sr=dbaron 2010-03-29 14:46:55 +13:00
Bernd
2f77193c78 bug 28800 remove support for scrollable rowgroups moa=roc r=bzbarsky 2010-01-16 17:05:46 +01:00
fantasai
3027a2127b Bug 508473 part III: Pass destruction root to frame destruction methods r=bz sr=roc 2009-12-24 00:21:15 -05:00
Bobby Holley
0b8080d9b5 Bug 435296 - Sync decode handling for decode-on-draw. r=roc 2009-09-12 16:44:18 -06:00
Zack Weinberg
d47e0f433b Bug 497495 part 3: Add methods to every nsFrame subclass that expose the as-allocated identity of every frame object. Also some cleanups to the QueryFrame implementation. r=dbaron sr=roc 2009-09-12 17:49:24 +01:00
Boris Zbarsky
811394b5da Bug 281387. Make nsIFrame::Append/InsertFrames use nsFrameList. r=bernd,roc, sr=dbaron 2009-07-30 13:23:32 -04:00
Boris Zbarsky
1ef12b64a7 Bug 504221 part 12. Switch SetInitialChildList to nsFrameList. r=fantasai, r+sr=roc 2009-07-28 08:53:20 -04:00
Boris Zbarsky
05d3ed5b06 Bug 504221 part 8. Make CreateAnonymousColFrames saner. r=bernd, sr=roc 2009-07-28 08:53:18 -04:00
Boris Zbarsky
cf7d0b6141 Bug 504221 part 5. Switch from GetFirstChild to GetChildList (returning an nsFrameList). For now, keep a GetFirstChild shim so callers don't have to be updated. r=fantasai, r+sr=roc 2009-07-28 08:51:09 -04:00
Boris Zbarsky
6f3f5929ed Bug 504221 part 3. Switch overflowFrames storage to nsFrameList. r=fantasai, r+sr=roc 2009-07-28 08:51:09 -04:00
Michael Kohler
4b7c87c984 Bug 106386 - Correct misspellings in source code (old); Part 2; r=timeless 2009-07-27 10:47:02 +02:00
Robert O'Callahan
0489e01337 Bug 371839. Remove ParentDisablesSelection, which is effectively unused. r=bzbarsky
--HG--
extra : rebase_source : 920c501f033e026709ec15792cadbb2f24462a0a
2009-07-27 10:06:30 +12:00
Robert O'Callahan
36956c156b Bug 371839. Remove useless SetSelected implementations. r=bzbarsky
--HG--
extra : rebase_source : 57629a43328f3dbc97a5d0595186a32150722db4
2009-07-27 10:03:16 +12:00
Robert O'Callahan
bec635e65d Bug 505184. When 'deflation' of the background area is not required, paint table backgrounds using a dedicated nsDisplayBackground instead of the multipurpose nsDisplayTableBorderBackground. r=fantasai 2009-07-22 12:44:52 +12:00
Bernd
b62121d34d bug 240245 remove some bizarre col frame construction code that is never called. r=bzbarsky 2009-07-12 19:47:10 +02:00
Bernd
faf99f05b9 bug 325292 - place the needtocollapse flag on the first inflow so that works in pagination mode r/sr=roc 2009-06-21 18:34:03 +02:00
Bernd
17845292a3 refactor the setting of continous borders in the border collapse computation bug 452319 r=fantasia sr=roc
* * *
* * *
* * *
* * *
2009-06-21 18:31:40 +02:00
Bernd
d8dd943257 bug 492661 - track the visibility of cols and colgroups independently of the presence of cells r/sr=roc 2009-05-16 16:22:56 +02:00
Boris Zbarsky
0b5e6a2535 Bug 484448. Fix handling of whitespace kids of table-related frames. r=bernd, sr=roc
--HG--
rename : layout/reftests/table-anonymous-boxes/white-space-1.html => layout/reftests/table-anonymous-boxes/white-space-7.html
2009-04-08 12:56:16 -04:00
Boris Zbarsky
330653be70 Backed out changeset 0ea22856b5d9 (bug 484448). 2009-04-08 15:56:43 -04:00
Boris Zbarsky
9fffe6f817 Bug 484448. Fix handling of whitespace kids of table-related frames. r=bernd, sr=roc
--HG--
rename : layout/reftests/table-anonymous-boxes/white-space-1.html => layout/reftests/table-anonymous-boxes/white-space-7.html
rename : layout/reftests/table-anonymous-boxes/white-space-1-ref.html => layout/reftests/table-anonymous-boxes/white-space-ref.html
2009-04-08 12:56:16 -04:00
Bernd
ffe2929d6a include the border width for border collapsed tables as required by CSS 2.1. We implemented before what CSS 2.0 required and it was ugly, so the spec changed. r=fantasai sr=roc, bug 155955 2009-02-08 17:46:42 +01:00
Bernd
f94f0994d9 remove dead debugging code r/sr=bzbarsky bug 475075 2009-02-08 17:45:28 +01:00
Arpad Borsos
91118b918d Bug 474369 - get rid of nsVoidArray, layout/tables part. r+sr=roc 2009-02-05 10:09:50 +01:00
Benjamin Smedberg
3498a5f86e Bug 396185 - Make nsIFrame derivatives and helper abstract classes use a different dynamic-cast system than nsISupports:
* we know all types frames may be cast to at compile time, so instead of extensible GUID IIDs, use a big enum (see nsQueryFrame::FrameIID)
* eliminate all vestiges of refcounting, since frames aren't refcounted

Some frames (SVG frames in particular) still implement nsISupports-derived interfaces, for example nsISVGValue. There is a FrameIID for nsISVGValue that lets you go from a frame to the XPCOM interface, but you can't query back.

r+sr=roc

nsITextControlFrame didn't have an IID the first time around, but this wasn't a compile error because nsITextControlFrame::kFrameIID inherited from nsIFormControlFrame::kFrameIID. I've added a static analysis pass to verify the correct behavior, since I can't figure out a way to make the compiler do it.

--HG--
extra : rebase_source : 4894a2ca0278e2ab92f27459db77165f8348cf41
2009-01-12 14:20:59 -05:00
Benjamin Smedberg
73a6fab34b Backed out changeset 4c4df6ed1b41 - Bug 396185 - Make nsIFrame not inherit from nsISupports due to mochitest failures... these appear to be crashes in nsGenericHTMLElement::GetEditorInternal. 2009-01-09 11:35:24 -05:00
Benjamin Smedberg
802d1a10c7 Bug 396185 - Make nsIFrame derivatives and helper abstract classes use a different dynamic-cast system than nsISupports:
* we know all types frames may be cast to at compile time, so instead of extensible GUID IIDs, use a big enum (see nsQueryFrame::FrameIID)
* eliminate all vestiges of refcounting, since frames aren't refcounted

Some frames (SVG frames in particular) still implement nsISupports-derived interfaces, for example nsISVGValue. There is a FrameIID for nsISVGValue that lets you go from a frame to the XPCOM interface, but you can't query back.

r+sr=roc

This patch locally causes two REFTEST-UNEXPECTED-PASS for Bidi stuff. It's possible that I accidentally fixed a bug, but I'm not sure, so I'm going to wait for the tinderboxes to confirm my local results.
2008-11-05 14:25:30 -05:00