summaryrefslogtreecommitdiff
path: root/dw/textblock.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dw/textblock.cc')
-rw-r--r--dw/textblock.cc27
1 files changed, 18 insertions, 9 deletions
diff --git a/dw/textblock.cc b/dw/textblock.cc
index 40eb4014..ab5c44e8 100644
--- a/dw/textblock.cc
+++ b/dw/textblock.cc
@@ -735,7 +735,7 @@ void Textblock::calcExtraSpaceImpl ()
int clearPosition = 0;
for (int i = 0; i < NUM_OOFM; i++)
- if (searchOutOfFlowMgr(i))
+ if (searchOutOfFlowMgr (i))
clearPosition =
misc::max (clearPosition,
searchOutOfFlowMgr(i)->getClearPosition (this));
@@ -2309,20 +2309,22 @@ void Textblock::addWidget (core::Widget *widget, core::style::Style *style)
if (testWidgetOutOfFlow (widget)) {
int oofmIndex = getOOFMIndex (widget);
+ DBG_OBJ_MSGF ("construct.word", 1, "ouf of flow: oofmIndex = %d (%s)",
+ oofmIndex, OOFM_NAME[oofmIndex]);
+
widget->setParent (oofContainer[oofmIndex]);
widget->setGenerator (this);
- int oofmSubRef =
- searchOutOfFlowMgr(oofmIndex)->addWidgetOOF (widget, this,
- words->size ());
+ oof::OutOfFlowMgr *oofm = searchOutOfFlowMgr (oofmIndex);
+ int oofmSubRef = oofm->addWidgetOOF (widget, this, words->size ());
widget->parentRef = makeParentRefOOF (oofmIndex, oofmSubRef);
- DBG_OBJ_MSGF ("construct.word", 1,
- "ouf of flow: oofmIndex = %d, oofmSubRef = %d => "
- "parentRef = %d",
- oofmIndex, oofmSubRef, widget->parentRef);
+ DBG_OBJ_MSGF ("construct.word", 1, "oofmSubRef = %d => parentRef = %d",
+ oofmSubRef, widget->parentRef);
- Word *word = addWord (0, 0, 0, 0, style);
+ core::Requisition size;
+ oofm->calcWidgetRefSize (widget, &size);
+ Word *word = addWord (size.width, size.ascent, size.descent, 0, style);
word->content.type = core::Content::WIDGET_OOF_REF;
word->content.widget = widget;
@@ -3055,6 +3057,13 @@ void Textblock::borderChanged (int y, Widget *vloat)
DBG_OBJ_LEAVE ();
}
+void Textblock::widgetRefSizeChanged (int externalIndex)
+{
+ int lineNo = findLineOfWord (externalIndex);
+ if (lineNo >= 0 && lineNo < lines->size ())
+ queueResize (makeParentRefInFlow (lineNo), true);
+}
+
void Textblock::clearPositionChanged ()
{
DBG_OBJ_ENTER0 ("resize", 0, "clearPositionChanged");