Implement overflow-wrap: anywhere.

This commit is contained in:
Fedor 2020-10-14 01:52:48 +03:00 committed by Fedor
parent 54c5407dc7
commit 7db19361b4
6 changed files with 13 additions and 4 deletions

View File

@ -7857,6 +7857,7 @@ exports.CSS_PROPERTIES = {
],
"supports": [],
"values": [
"anywhere",
"break-word",
"inherit",
"initial",
@ -9317,6 +9318,7 @@ exports.CSS_PROPERTIES = {
],
"supports": [],
"values": [
"anywhere",
"break-word",
"inherit",
"initial",

View File

@ -8244,8 +8244,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));

View File

@ -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)

View File

@ -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 }
};

View File

@ -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

View File

@ -2134,8 +2134,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 {