зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset d4d3c40a747d (bug 1715291) for causing Linting failures. CLOSED TREE
This commit is contained in:
Родитель
d192833f8d
Коммит
ddbd16c8f6
|
@ -787,22 +787,24 @@ void nsHTMLScrollFrame::ReflowScrolledFrame(ScrollReflowInput* aState,
|
|||
auto* disp = StyleDisplay();
|
||||
if (MOZ_UNLIKELY(disp->mOverflowClipBoxInline ==
|
||||
StyleOverflowClipBox::ContentBox)) {
|
||||
// The scrolled frame is scrollable in the inline axis with
|
||||
// `overflow-clip-box:content-box`. To prevent its content from being
|
||||
// clipped at the scroll container's padding edges, we inflate its
|
||||
// children's scrollable overflow area with its inline padding, and union
|
||||
// its scrollable overflow area with its children's inflated scrollable
|
||||
// overflow area.
|
||||
OverflowAreas childOverflow;
|
||||
mHelper.mScrolledFrame->UnionChildOverflow(childOverflow);
|
||||
nsRect childScrollableOverflow = childOverflow.ScrollableOverflow();
|
||||
|
||||
const LogicalMargin inlinePadding =
|
||||
padding.ApplySkipSides(LogicalSides(wm, eLogicalSideBitsBBoth));
|
||||
childScrollableOverflow.Inflate(inlinePadding.GetPhysicalMargin(wm));
|
||||
|
||||
// If the scrolled frame can be scrolled in the inline axis, inflate its
|
||||
// scrollable overflow areas with its inline-end padding to prevent its
|
||||
// content from being clipped at scroll container's inline-end padding
|
||||
// edge.
|
||||
//
|
||||
// Note: Inflating scrolled frame's overflow areas is generally wrong if the
|
||||
// scrolled frame's children themselves has any scrollable overflow areas.
|
||||
// However, we can only be here in production for <textarea> and <input>.
|
||||
// Both elements can only have text children, which shouldn't have
|
||||
// scrollable overflow areas themselves, so its fine.
|
||||
nsRect& so = aMetrics->ScrollableOverflow();
|
||||
so = so.UnionEdges(childScrollableOverflow);
|
||||
const nscoord soInlineSize = wm.IsVertical() ? so.Height() : so.Width();
|
||||
if (soInlineSize > availISize) {
|
||||
const LogicalMargin inlinePaddingEnd =
|
||||
padding.ApplySkipSides(LogicalSides(wm, eLogicalSideBitsBBoth) |
|
||||
LogicalSides(wm, eLogicalSideBitsIStart));
|
||||
so.Inflate(inlinePaddingEnd.GetPhysicalMargin(wm));
|
||||
}
|
||||
}
|
||||
|
||||
aState->mContentsOverflowAreas = aMetrics->mOverflowAreas;
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Overflow Reference: Test the text in an input is not clipped and reachable</title>
|
||||
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
|
||||
|
||||
<style>
|
||||
input {
|
||||
box-sizing: border-box;
|
||||
width: 160px;
|
||||
padding-inline: 40px 60px;
|
||||
background: yellow;
|
||||
font: 20px/1 Ahem;
|
||||
border: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<input value="XpX">
|
|
@ -1,28 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Overflow Test: Test the text in an input is not clipped and reachable</title>
|
||||
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#scrollable">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1715291">
|
||||
<link rel="match" href="scrollable-overflow-input-001-ref.html">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
|
||||
<style>
|
||||
input {
|
||||
box-sizing: border-box;
|
||||
width: 160px;
|
||||
padding-inline: 20px 60px;
|
||||
background: yellow;
|
||||
font: 20px/1 Ahem;
|
||||
border: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- The total width of the text (120px) must be less than the <input>'s
|
||||
width (160px) to reproduce this bug. -->
|
||||
<input id="input" value="X XpX">
|
||||
|
||||
<script>
|
||||
document.getElementById('input').scrollLeft = 1000;
|
||||
</script>
|
|
@ -1,19 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Overflow Reference: Test the text in an input is not clipped and reachable</title>
|
||||
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
|
||||
|
||||
<style>
|
||||
input {
|
||||
box-sizing: border-box;
|
||||
width: 160px;
|
||||
padding-inline: 40px 60px;
|
||||
background: yellow;
|
||||
font: 20px/1 Ahem;
|
||||
border: 0;
|
||||
direction: rtl;
|
||||
}
|
||||
</style>
|
||||
|
||||
<input value="XpX">
|
|
@ -1,29 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Overflow Test: Test the text in an input is not clipped and reachable</title>
|
||||
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#scrollable">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1715291">
|
||||
<link rel="match" href="scrollable-overflow-input-002-ref.html">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
|
||||
<style>
|
||||
input {
|
||||
box-sizing: border-box;
|
||||
width: 160px;
|
||||
padding-inline: 20px 60px;
|
||||
background: yellow;
|
||||
font: 20px/1 Ahem;
|
||||
border: 0;
|
||||
direction: rtl;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- The total width of the text (120px) must be less than the <input>'s
|
||||
width (160px) to reproduce this bug. -->
|
||||
<input id="input2" value="XpX X">
|
||||
|
||||
<script>
|
||||
document.getElementById('input2').scrollLeft = -1000;
|
||||
</script>
|
Загрузка…
Ссылка в новой задаче