summaryrefslogtreecommitdiffstats
path: root/layout
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2020-10-03 14:52:47 +0000
committerMoonchild <moonchild@palemoon.org>2020-10-03 14:52:47 +0000
commitdadef50bdc3c6b546aad9e3231943e41ad3ccb97 (patch)
tree80c79b8882e002803573c8a74a66f275d0601477 /layout
parent8e18743ab871bed1e1858ed2714a81f017433a2d (diff)
downloadUXP-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.cpp5
-rw-r--r--layout/style/nsCSSKeywordList.h1
-rw-r--r--layout/style/nsCSSProps.cpp1
-rw-r--r--layout/style/nsStyleConsts.h1
-rw-r--r--layout/style/nsStyleStruct.h7
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 {