diff options
Diffstat (limited to 'dw/textblock.cc')
-rw-r--r-- | dw/textblock.cc | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/dw/textblock.cc b/dw/textblock.cc index 9b4d5380..e3873b11 100644 --- a/dw/textblock.cc +++ b/dw/textblock.cc @@ -465,7 +465,8 @@ void Textblock::getWordExtremes (Word *word, core::Extremes *extremes) word->content.widget->getExtremes (extremes); else extremes->minWidth = extremes->minWidthIntrinsic = extremes->maxWidth = - extremes->maxWidthIntrinsic = word->size.width; + extremes->maxWidthIntrinsic = extremes->adjustmentWidth = + word->size.width; } void Textblock::getExtremesImpl (core::Extremes *extremes) @@ -493,12 +494,14 @@ void Textblock::getExtremesImpl (core::Extremes *extremes) extremes->minWidthIntrinsic = 0; extremes->maxWidth = 0; extremes->maxWidthIntrinsic = 0; + extremes->adjustmentWidth = 0; } else { Paragraph *lastPar = paragraphs->getLastRef (); extremes->minWidth = lastPar->maxParMin; extremes->minWidthIntrinsic = lastPar->maxParMinIntrinsic; extremes->maxWidth = lastPar->maxParMax; extremes->maxWidthIntrinsic = lastPar->maxParMaxIntrinsic; + extremes->adjustmentWidth = lastPar->maxParAdjustmentWidth; DBG_OBJ_MSGF ("resize", 1, "paragraphs[%d]->maxParMin = %d (%d)", paragraphs->size () - 1, lastPar->maxParMin, @@ -517,6 +520,7 @@ void Textblock::getExtremesImpl (core::Extremes *extremes) extremes->minWidthIntrinsic += diff; extremes->maxWidth += diff; extremes->maxWidthIntrinsic += diff; + extremes->adjustmentWidth += diff; DBG_OBJ_MSGF ("resize", 0, "after adding diff: %d (%d) / %d (%d)", extremes->minWidth, extremes->minWidthIntrinsic, @@ -543,6 +547,8 @@ void Textblock::getExtremesImpl (core::Extremes *extremes) extremes->maxWidth = misc::max (extremes->maxWidth, oofMaxWidth); extremes->maxWidthIntrinsic = misc::max (extremes->maxWidthIntrinsic, oofMinWidth); + extremes->adjustmentWidth = + misc::max (extremes->adjustmentWidth, oofMinWidth); } DBG_OBJ_MSGF ("resize", 0, @@ -2938,6 +2944,21 @@ void Textblock::setVerticalOffset (int verticalOffset) DBG_OBJ_LEAVE (); } +bool Textblock::mustBeWidenedToAvailWidth () +{ + DBG_OBJ_ENTER0 ("resize", 0, "mustBeWidenedToAvailWidth"); + bool toplevel = getParent () == NULL, + block = getStyle()->display == core::style::DISPLAY_BLOCK, + vloat = getStyle()->vloat != core::style::FLOAT_NONE, + result = toplevel || (block && !vloat); + DBG_OBJ_MSGF ("resize", 0, + "=> %s (toplevel: %s, block: %s, float: %s)", + result ? "true" : "false", toplevel ? "true" : "false", + block ? "true" : "false", vloat ? "true" : "false"); + DBG_OBJ_LEAVE (); + return result; +} + /** * Called by dw::OutOfFlowMgr when the border has changed due to a * float (or some floats). |