| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2012 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 830 // If an in-flow descendant goes out-of-flow, we may have to remove column s
ets and spanner placeholders. | 830 // If an in-flow descendant goes out-of-flow, we may have to remove column s
ets and spanner placeholders. |
| 831 return (newStyle.hasOutOfFlowPosition() && !oldStyle.hasOutOfFlowPosition())
|| needsToReinsertIntoFlowThread(oldStyle, newStyle); | 831 return (newStyle.hasOutOfFlowPosition() && !oldStyle.hasOutOfFlowPosition())
|| needsToReinsertIntoFlowThread(oldStyle, newStyle); |
| 832 } | 832 } |
| 833 | 833 |
| 834 static inline bool needsToInsertIntoFlowThread(const ComputedStyle& oldStyle, co
nst ComputedStyle& newStyle) | 834 static inline bool needsToInsertIntoFlowThread(const ComputedStyle& oldStyle, co
nst ComputedStyle& newStyle) |
| 835 { | 835 { |
| 836 // If an out-of-flow descendant goes in-flow, we may have to insert column s
ets and spanner placeholders. | 836 // If an out-of-flow descendant goes in-flow, we may have to insert column s
ets and spanner placeholders. |
| 837 return (!newStyle.hasOutOfFlowPosition() && oldStyle.hasOutOfFlowPosition())
|| needsToReinsertIntoFlowThread(oldStyle, newStyle); | 837 return (!newStyle.hasOutOfFlowPosition() && oldStyle.hasOutOfFlowPosition())
|| needsToReinsertIntoFlowThread(oldStyle, newStyle); |
| 838 } | 838 } |
| 839 | 839 |
| 840 void LayoutMultiColumnFlowThread::flowThreadDescendantStyleWillChange(LayoutObje
ct* descendant, StyleDifference diff, const ComputedStyle& newStyle) | 840 void LayoutMultiColumnFlowThread::flowThreadDescendantStyleWillChange(LayoutBox*
descendant, StyleDifference diff, const ComputedStyle& newStyle) |
| 841 { | 841 { |
| 842 if (descendant->isText()) { | |
| 843 // Text nodes inherit all properties from the parent node (including non
-inheritable | |
| 844 // ones). We don't care what its 'position' is. In fact, we _must_ ignor
e it, since the | |
| 845 // parent may be the multicol container, and having that accidentally le
aked into children | |
| 846 // of the multicol is bad. | |
| 847 return; | |
| 848 } | |
| 849 if (needsToRemoveFromFlowThread(descendant->styleRef(), newStyle)) | 842 if (needsToRemoveFromFlowThread(descendant->styleRef(), newStyle)) |
| 850 flowThreadDescendantWillBeRemoved(descendant); | 843 flowThreadDescendantWillBeRemoved(descendant); |
| 851 } | 844 } |
| 852 | 845 |
| 853 void LayoutMultiColumnFlowThread::flowThreadDescendantStyleDidChange(LayoutObjec
t* descendant, StyleDifference diff, const ComputedStyle& oldStyle) | 846 void LayoutMultiColumnFlowThread::flowThreadDescendantStyleDidChange(LayoutBox*
descendant, StyleDifference diff, const ComputedStyle& oldStyle) |
| 854 { | 847 { |
| 855 if (descendant->isText()) { | |
| 856 // Text nodes inherit all properties from the parent node (including non
-inheritable | |
| 857 // ones). We don't care what its 'position' is. In fact, we _must_ ignor
e it, since the | |
| 858 // parent may be the multicol container, and having that accidentally le
aked into children | |
| 859 // of the multicol is bad. | |
| 860 return; | |
| 861 } | |
| 862 if (needsToInsertIntoFlowThread(oldStyle, descendant->styleRef())) { | 848 if (needsToInsertIntoFlowThread(oldStyle, descendant->styleRef())) { |
| 863 flowThreadDescendantWasInserted(descendant); | 849 flowThreadDescendantWasInserted(descendant); |
| 864 return; | 850 return; |
| 865 } | 851 } |
| 866 if (descendantIsValidColumnSpanner(descendant)) { | 852 if (descendantIsValidColumnSpanner(descendant)) { |
| 867 // We went from being regular column content to becoming a spanner. | 853 // We went from being regular column content to becoming a spanner. |
| 868 ASSERT(!toLayoutBox(descendant)->spannerPlaceholder()); | 854 ASSERT(!descendant->spannerPlaceholder()); |
| 869 | 855 |
| 870 // First remove this as regular column content. Note that this will walk
the entire subtree | 856 // First remove this as regular column content. Note that this will walk
the entire subtree |
| 871 // of |descendant|. There might be spanners there (which won't be spanne
rs anymore, since | 857 // of |descendant|. There might be spanners there (which won't be spanne
rs anymore, since |
| 872 // we're not allowed to nest spanners), whose placeholders must die. | 858 // we're not allowed to nest spanners), whose placeholders must die. |
| 873 flowThreadDescendantWillBeRemoved(descendant); | 859 flowThreadDescendantWillBeRemoved(descendant); |
| 874 | 860 |
| 875 createAndInsertSpannerPlaceholder(toLayoutBox(descendant), nextInPreOrde
rAfterChildrenSkippingOutOfFlow(this, descendant)); | 861 createAndInsertSpannerPlaceholder(descendant, nextInPreOrderAfterChildre
nSkippingOutOfFlow(this, descendant)); |
| 876 } | 862 } |
| 877 } | 863 } |
| 878 | 864 |
| 879 void LayoutMultiColumnFlowThread::computePreferredLogicalWidths() | 865 void LayoutMultiColumnFlowThread::computePreferredLogicalWidths() |
| 880 { | 866 { |
| 881 LayoutFlowThread::computePreferredLogicalWidths(); | 867 LayoutFlowThread::computePreferredLogicalWidths(); |
| 882 | 868 |
| 883 // The min/max intrinsic widths calculated really tell how much space elemen
ts need when | 869 // The min/max intrinsic widths calculated really tell how much space elemen
ts need when |
| 884 // laid out inside the columns. In order to eventually end up with the desir
ed column width, | 870 // laid out inside the columns. In order to eventually end up with the desir
ed column width, |
| 885 // we need to convert them to values pertaining to the multicol container. | 871 // we need to convert them to values pertaining to the multicol container. |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 965 if (LayoutMultiColumnSet* multicolSet = columnSetAtBlockOffset(offset)) { | 951 if (LayoutMultiColumnSet* multicolSet = columnSetAtBlockOffset(offset)) { |
| 966 multicolSet->addContentRun(offset); | 952 multicolSet->addContentRun(offset); |
| 967 if (offsetBreakAdjustment) | 953 if (offsetBreakAdjustment) |
| 968 *offsetBreakAdjustment = pageLogicalHeightForOffset(offset) ? pageRe
mainingLogicalHeightForOffset(offset, AssociateWithFormerPage) : LayoutUnit(); | 954 *offsetBreakAdjustment = pageLogicalHeightForOffset(offset) ? pageRe
mainingLogicalHeightForOffset(offset, AssociateWithFormerPage) : LayoutUnit(); |
| 969 return true; | 955 return true; |
| 970 } | 956 } |
| 971 return false; | 957 return false; |
| 972 } | 958 } |
| 973 | 959 |
| 974 } | 960 } |
| OLD | NEW |