forked from mirrors/gecko-dev
Bug 1826006 - Fix middle-cropping with explicit inline sizes. r=jfkthame,layout-reviewers
If flexbox algorithm imposes a size on us, we want to look at that too, not only at the available isize. Differential Revision: https://phabricator.services.mozilla.com/D174445
This commit is contained in:
parent
78a197a2d1
commit
f96bb05c6e
4 changed files with 73 additions and 3 deletions
|
|
@ -164,10 +164,11 @@ void MiddleCroppingBlockFrame::Reflow(nsPresContext* aPresContext,
|
||||||
nscoord currentICoord = aReflowInput.mLineLayout
|
nscoord currentICoord = aReflowInput.mLineLayout
|
||||||
? aReflowInput.mLineLayout->GetCurrentICoord()
|
? aReflowInput.mLineLayout->GetCurrentICoord()
|
||||||
: 0;
|
: 0;
|
||||||
nscoord availSize = aReflowInput.AvailableISize() - currentICoord;
|
const nscoord availSize = aReflowInput.AvailableISize() - currentICoord;
|
||||||
if (LinesBegin()->ISize() > availSize) {
|
const nscoord sizeToFit = std::min(aReflowInput.ComputedISize(), availSize);
|
||||||
|
if (LinesBegin()->ISize() > sizeToFit) {
|
||||||
// The value overflows - crop it and reflow again (once).
|
// The value overflows - crop it and reflow again (once).
|
||||||
if (CropTextToWidth(*aReflowInput.mRenderingContext, availSize, value)) {
|
if (CropTextToWidth(*aReflowInput.mRenderingContext, sizeToFit, value)) {
|
||||||
nsBlockFrame::DidReflow(aPresContext, &aReflowInput);
|
nsBlockFrame::DidReflow(aPresContext, &aReflowInput);
|
||||||
aStatus.Reset();
|
aStatus.Reset();
|
||||||
MarkSubtreeDirty();
|
MarkSubtreeDirty();
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ fuzzy-if(xulRuntime.widgetToolkit=="gtk",0-1,0-11) fuzzy-if(winWidget,0-1,0-1) =
|
||||||
skip-if(!cocoaWidget) == chrome://reftest/content/xul/mac-tab-toolbar.xhtml chrome://reftest/content/xul/mac-tab-toolbar-ref.xhtml
|
skip-if(!cocoaWidget) == chrome://reftest/content/xul/mac-tab-toolbar.xhtml chrome://reftest/content/xul/mac-tab-toolbar-ref.xhtml
|
||||||
!= chrome://reftest/content/xul/tree-row-outline-1.xhtml chrome://reftest/content/xul/tree-row-outline-1-notref.xhtml
|
!= chrome://reftest/content/xul/tree-row-outline-1.xhtml chrome://reftest/content/xul/tree-row-outline-1-notref.xhtml
|
||||||
== chrome://reftest/content/xul/text-crop.xhtml chrome://reftest/content/xul/text-crop-ref.xhtml
|
== chrome://reftest/content/xul/text-crop.xhtml chrome://reftest/content/xul/text-crop-ref.xhtml
|
||||||
|
== chrome://reftest/content/xul/text-crop-002.xhtml chrome://reftest/content/xul/text-crop-002-ref.xhtml
|
||||||
== chrome://reftest/content/xul/text-small-caps-1.xhtml chrome://reftest/content/xul/text-small-caps-1-ref.xhtml
|
== chrome://reftest/content/xul/text-small-caps-1.xhtml chrome://reftest/content/xul/text-small-caps-1-ref.xhtml
|
||||||
fuzzy(0-1,0-2500) == chrome://reftest/content/xul/inactive-fixed-bg-bug1205630.xhtml inactive-fixed-bg-bug1205630-ref.html
|
fuzzy(0-1,0-2500) == chrome://reftest/content/xul/inactive-fixed-bg-bug1205630.xhtml inactive-fixed-bg-bug1205630-ref.html
|
||||||
fuzzy(0-1,0-2500) == chrome://reftest/content/xul/inactive-fixed-bg-bug1272525.xhtml inactive-fixed-bg-bug1272525-ref.html
|
fuzzy(0-1,0-2500) == chrome://reftest/content/xul/inactive-fixed-bg-bug1272525.xhtml inactive-fixed-bg-bug1272525-ref.html
|
||||||
|
|
|
||||||
34
layout/reftests/xul/text-crop-002-ref.xhtml
Normal file
34
layout/reftests/xul/text-crop-002-ref.xhtml
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<window
|
||||||
|
xmlns:html="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||||
|
<html:style type="text/css">
|
||||||
|
@font-face {
|
||||||
|
font-family: firasans;
|
||||||
|
src: url(../fonts/fira/FiraSans-Regular.otf);
|
||||||
|
}
|
||||||
|
hbox {
|
||||||
|
font-family: firasans;
|
||||||
|
font-size: 40px;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
background-color: purple;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
width: 230px;
|
||||||
|
color: green;
|
||||||
|
background-color: blue;
|
||||||
|
}
|
||||||
|
.with-padding {
|
||||||
|
padding-inline: 10px 50px;
|
||||||
|
}
|
||||||
|
</html:style>
|
||||||
|
<hbox style="width: 230px">
|
||||||
|
<image style="width: 40px; height: 40px"/>
|
||||||
|
<label value="abcd…xyz"/>
|
||||||
|
</hbox>
|
||||||
|
<hbox style="width: 230px">
|
||||||
|
<image style="width: 40px; height: 40px"/>
|
||||||
|
<label class="with-padding" value="abc…yz"/>
|
||||||
|
</hbox>
|
||||||
|
</window>
|
||||||
34
layout/reftests/xul/text-crop-002.xhtml
Normal file
34
layout/reftests/xul/text-crop-002.xhtml
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<window
|
||||||
|
xmlns:html="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||||
|
<html:style type="text/css">
|
||||||
|
@font-face {
|
||||||
|
font-family: firasans;
|
||||||
|
src: url(../fonts/fira/FiraSans-Regular.otf);
|
||||||
|
}
|
||||||
|
hbox {
|
||||||
|
font-family: firasans;
|
||||||
|
font-size: 40px;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
background-color: purple;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
width: 230px;
|
||||||
|
color: green;
|
||||||
|
background-color: blue;
|
||||||
|
}
|
||||||
|
.with-padding {
|
||||||
|
padding-inline: 10px 50px;
|
||||||
|
}
|
||||||
|
</html:style>
|
||||||
|
<hbox style="width: 230px">
|
||||||
|
<image style="width: 40px; height: 40px"/>
|
||||||
|
<label crop="center" value="abcdefghijklmnopqrstuvwxyz"/>
|
||||||
|
</hbox>
|
||||||
|
<hbox style="width: 230px">
|
||||||
|
<image style="width: 40px; height: 40px"/>
|
||||||
|
<label class="with-padding" crop="center" value="abcdefghijklmnopqrstuvwxyz"/>
|
||||||
|
</hbox>
|
||||||
|
</window>
|
||||||
Loading…
Reference in a new issue