diff options
author | Moonchild <moonchild@palemoon.org> | 2020-10-03 14:52:47 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-10-03 14:52:47 +0000 |
commit | dadef50bdc3c6b546aad9e3231943e41ad3ccb97 (patch) | |
tree | 80c79b8882e002803573c8a74a66f275d0601477 /layout | |
parent | 8e18743ab871bed1e1858ed2714a81f017433a2d (diff) | |
download | UXP-dadef50bdc3c6b546aad9e3231943e41ad3ccb97.tar UXP-dadef50bdc3c6b546aad9e3231943e41ad3ccb97.tar.gz UXP-dadef50bdc3c6b546aad9e3231943e41ad3ccb97.tar.lz UXP-dadef50bdc3c6b546aad9e3231943e41ad3ccb97.tar.xz UXP-dadef50bdc3c6b546aad9e3231943e41ad3ccb97.zip |
Issue #1666 - Implement overflow-wrap: anywhere
This aligns with the current spec regarding overflow-wrap: break-word and
overflow-wrap: anywhere in if it affects intrinsic sized due to considering
soft-wrap opportunities or not.
See CSS Text Module Level 3, Editor’s Draft, 1 October 2020, Section 5.5
Diffstat (limited to 'layout')
-rw-r--r-- | layout/generic/nsTextFrame.cpp | 5 | ||||
-rw-r--r-- | layout/style/nsCSSKeywordList.h | 1 | ||||
-rw-r--r-- | layout/style/nsCSSProps.cpp | 1 | ||||
-rw-r--r-- | layout/style/nsStyleConsts.h | 1 | ||||
-rw-r--r-- | layout/style/nsStyleStruct.h | 7 |
5 files changed, 11 insertions, 4 deletions
diff --git a/layout/generic/nsTextFrame.cpp b/layout/generic/nsTextFrame.cpp index 9cf152873..fcce7f3f6 100644 --- a/layout/generic/nsTextFrame.cpp +++ b/layout/generic/nsTextFrame.cpp @@ -8243,8 +8243,9 @@ nsTextFrame::AddInlineMinISizeForFlow(nsRenderingContext *aRenderingContext, return; } - // If overflow-wrap is break-word, we can wrap everywhere. - if (textStyle->WordCanWrap(this)) { + // If overflow-wrap is 'anywhere', we can wrap everywhere. + if (textStyle->mOverflowWrap == NS_STYLE_OVERFLOWWRAP_ANYWHERE && + textStyle->WordCanWrap(this)) { aData->OptionallyBreak(); aData->mCurrentLine += textRun->GetMinAdvanceWidth(Range(start, flowEndInTextRun)); diff --git a/layout/style/nsCSSKeywordList.h b/layout/style/nsCSSKeywordList.h index 9045da9ff..86ba59142 100644 --- a/layout/style/nsCSSKeywordList.h +++ b/layout/style/nsCSSKeywordList.h @@ -144,6 +144,7 @@ CSS_KEY(alternate, alternate) CSS_KEY(alternate-reverse, alternate_reverse) CSS_KEY(always, always) CSS_KEY(annotation, annotation) +CSS_KEY(anywhere, anywhere) CSS_KEY(appworkspace, appworkspace) CSS_KEY(auto, auto) CSS_KEY(auto-fill, auto_fill) diff --git a/layout/style/nsCSSProps.cpp b/layout/style/nsCSSProps.cpp index 24c97cf33..e0cda2488 100644 --- a/layout/style/nsCSSProps.cpp +++ b/layout/style/nsCSSProps.cpp @@ -2284,6 +2284,7 @@ const KTableEntry nsCSSProps::kWordBreakKTable[] = { const KTableEntry nsCSSProps::kOverflowWrapKTable[] = { { eCSSKeyword_normal, NS_STYLE_OVERFLOWWRAP_NORMAL }, { eCSSKeyword_break_word, NS_STYLE_OVERFLOWWRAP_BREAK_WORD }, + { eCSSKeyword_anywhere, NS_STYLE_OVERFLOWWRAP_ANYWHERE }, { eCSSKeyword_UNKNOWN, -1 } }; diff --git a/layout/style/nsStyleConsts.h b/layout/style/nsStyleConsts.h index f54387aa8..e6a0cc65a 100644 --- a/layout/style/nsStyleConsts.h +++ b/layout/style/nsStyleConsts.h @@ -997,6 +997,7 @@ enum class StyleDisplay : uint8_t { // See nsStyleText #define NS_STYLE_OVERFLOWWRAP_NORMAL 0 #define NS_STYLE_OVERFLOWWRAP_BREAK_WORD 1 +#define NS_STYLE_OVERFLOWWRAP_ANYWHERE 2 // See nsStyleText #define NS_STYLE_HYPHENS_NONE 0 diff --git a/layout/style/nsStyleStruct.h b/layout/style/nsStyleStruct.h index 0fec27d21..e4d02a24a 100644 --- a/layout/style/nsStyleStruct.h +++ b/layout/style/nsStyleStruct.h @@ -2133,8 +2133,11 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleText } bool WordCanWrapStyle() const { - return WhiteSpaceCanWrapStyle() && - mOverflowWrap == NS_STYLE_OVERFLOWWRAP_BREAK_WORD; + if (!WhiteSpaceCanWrapStyle()) { + return false; + } + return (mOverflowWrap == NS_STYLE_OVERFLOWWRAP_BREAK_WORD || + mOverflowWrap == NS_STYLE_OVERFLOWWRAP_ANYWHERE); } bool HasTextEmphasis() const { |