mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-24 08:07:30 +09:00
Issue #2124 - Adjust overflow parser to handle two values
This commit is contained in:
parent
9f7430f8b9
commit
f4ffb1ec16
1 changed files with 31 additions and 15 deletions
|
|
@ -15847,25 +15847,41 @@ CSSParserImpl::ParseOutline()
|
||||||
bool
|
bool
|
||||||
CSSParserImpl::ParseOverflow()
|
CSSParserImpl::ParseOverflow()
|
||||||
{
|
{
|
||||||
nsCSSValue overflow;
|
nsCSSValue overflowX, overflowY;
|
||||||
if (!ParseSingleTokenVariant(overflow, VARIANT_HK,
|
// Parse the first value
|
||||||
nsCSSProps::kOverflowKTable)) {
|
if (!ParseSingleTokenVariant(overflowX, VARIANT_HK, nsCSSProps::kOverflowKTable)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCSSValue overflowX(overflow);
|
// Try to parse a second value (optional)
|
||||||
nsCSSValue overflowY(overflow);
|
bool haveSecond = ParseSingleTokenVariant(overflowY, VARIANT_HK, nsCSSProps::kOverflowKTable);
|
||||||
if (eCSSUnit_Enumerated == overflow.GetUnit())
|
if (!haveSecond) {
|
||||||
switch(overflow.GetIntValue()) {
|
overflowY = overflowX;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle legacy scrollbars keywords for each axis
|
||||||
|
auto fix_legacy = [](nsCSSValue& v, bool isX) {
|
||||||
|
if (v.GetUnit() == eCSSUnit_Enumerated) {
|
||||||
|
switch (v.GetIntValue()) {
|
||||||
case NS_STYLE_OVERFLOW_SCROLLBARS_HORIZONTAL:
|
case NS_STYLE_OVERFLOW_SCROLLBARS_HORIZONTAL:
|
||||||
overflowX.SetIntValue(NS_STYLE_OVERFLOW_SCROLL, eCSSUnit_Enumerated);
|
if (isX) {
|
||||||
overflowY.SetIntValue(NS_STYLE_OVERFLOW_HIDDEN, eCSSUnit_Enumerated);
|
v.SetIntValue(NS_STYLE_OVERFLOW_SCROLL, eCSSUnit_Enumerated);
|
||||||
|
} else {
|
||||||
|
v.SetIntValue(NS_STYLE_OVERFLOW_HIDDEN, eCSSUnit_Enumerated);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case NS_STYLE_OVERFLOW_SCROLLBARS_VERTICAL:
|
case NS_STYLE_OVERFLOW_SCROLLBARS_VERTICAL:
|
||||||
overflowX.SetIntValue(NS_STYLE_OVERFLOW_HIDDEN, eCSSUnit_Enumerated);
|
if (isX) {
|
||||||
overflowY.SetIntValue(NS_STYLE_OVERFLOW_SCROLL, eCSSUnit_Enumerated);
|
v.SetIntValue(NS_STYLE_OVERFLOW_HIDDEN, eCSSUnit_Enumerated);
|
||||||
|
} else {
|
||||||
|
v.SetIntValue(NS_STYLE_OVERFLOW_SCROLL, eCSSUnit_Enumerated);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
fix_legacy(overflowX, true);
|
||||||
|
fix_legacy(overflowY, false);
|
||||||
AppendValue(eCSSProperty_overflow_x, overflowX);
|
AppendValue(eCSSProperty_overflow_x, overflowX);
|
||||||
AppendValue(eCSSProperty_overflow_y, overflowY);
|
AppendValue(eCSSProperty_overflow_y, overflowY);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue