diff options
-rw-r--r-- | dw/outofflowmgr.cc | 22 | ||||
-rw-r--r-- | dw/outofflowmgr.hh | 2 | ||||
-rw-r--r-- | dw/textblock.cc | 10 | ||||
-rw-r--r-- | dw/textblock.hh | 7 |
4 files changed, 17 insertions, 24 deletions
diff --git a/dw/outofflowmgr.cc b/dw/outofflowmgr.cc index b1979abf..38cbc491 100644 --- a/dw/outofflowmgr.cc +++ b/dw/outofflowmgr.cc @@ -219,25 +219,27 @@ void OutOfFlowMgr::getSize (int cbWidth, int cbHeight, *oofWidth = cbWidth; /* This (or "<=" instead of "=") should be the case for floats. */ - int oofHeightLeft = containingBlock->getCBStyle()->boxDiffWidth(); - int oofHeightRight = containingBlock->getCBStyle()->boxDiffWidth(); + int oofHeightLeft = containingBlock->asWidget()->getStyle()->boxDiffWidth(); + int oofHeightRight = containingBlock->asWidget()->getStyle()->boxDiffWidth(); for (int i = 0; i < leftFloats->size(); i++) { Float *vloat = leftFloats->get(i); assert (vloat->y != -1); ensureFloatSize (vloat); - oofHeightLeft = max (oofHeightLeft, - vloat->y + vloat->size.ascent + vloat->size.descent - + containingBlock->getCBStyle()->boxRestHeight()); + oofHeightLeft = + max (oofHeightLeft, + vloat->y + vloat->size.ascent + vloat->size.descent + + containingBlock->asWidget()->getStyle()->boxRestHeight()); } for (int i = 0; i < rightFloats->size(); i++) { Float *vloat = rightFloats->get(i); assert (vloat->y != -1); ensureFloatSize (vloat); - oofHeightRight = max (oofHeightRight, - vloat->y + vloat->size.ascent + vloat->size.descent - + containingBlock->getCBStyle()->boxRestHeight()); + oofHeightRight = + max (oofHeightRight, + vloat->y + vloat->size.ascent + vloat->size.descent + + containingBlock->asWidget()->getStyle()->boxRestHeight()); } *oofHeight = max (oofHeightLeft, oofHeightRight); @@ -392,7 +394,7 @@ int OutOfFlowMgr::calcBorderDiff (Float *vloat) switch (vloat->widget->getStyle()->vloat) { case FLOAT_LEFT: { - int d = containingBlock->getCBStyle()->boxOffsetX(); + int d = containingBlock->asWidget()->getStyle()->boxOffsetX(); for (Widget *w = vloat->generatingBlock; w != containingBlock->asWidget(); w = w->getParent()) d += w->getStyle()->boxOffsetX(); @@ -401,7 +403,7 @@ int OutOfFlowMgr::calcBorderDiff (Float *vloat) case FLOAT_RIGHT: { - int d = containingBlock->getCBStyle()->boxRestWidth(); + int d = containingBlock->asWidget()->getStyle()->boxRestWidth(); for (Widget *w = vloat->generatingBlock; w != containingBlock->asWidget(); w = w->getParent()) d += w->getStyle()->boxRestWidth(); diff --git a/dw/outofflowmgr.hh b/dw/outofflowmgr.hh index 46e0f8d1..da04c71d 100644 --- a/dw/outofflowmgr.hh +++ b/dw/outofflowmgr.hh @@ -16,8 +16,6 @@ public: public: virtual void borderChanged (int y) = 0; virtual core::Widget *asWidget () = 0; - virtual core::style::Style *getCBStyle () = 0; - virtual core::Allocation *getCBAllocation () = 0; }; private: diff --git a/dw/textblock.cc b/dw/textblock.cc index 999b7b97..1fbf0032 100644 --- a/dw/textblock.cc +++ b/dw/textblock.cc @@ -2230,14 +2230,4 @@ core::Widget *Textblock::asWidget () return this; } -core::style::Style *Textblock::getCBStyle () -{ - return getStyle(); -} - -core::Allocation *Textblock::getCBAllocation () -{ - return &allocation; -} - } // namespace dw diff --git a/dw/textblock.hh b/dw/textblock.hh index 9da377a9..3d1f676c 100644 --- a/dw/textblock.hh +++ b/dw/textblock.hh @@ -458,6 +458,11 @@ protected: */ inline int lineXOffsetWidget (Line *line) { + // TODO This method is called very often, every time a line is + // *drawn*. To reduce calls to OutOfFlowMgr::getLeftBorder + // (which searches through all floats each time), the value + // should (in the layouting phase) be stored in the line. + assert (diffXToContainingBlock != -1); assert (diffYToContainingBlock != -1); @@ -648,8 +653,6 @@ public: // From OutOfFlowMgr::ContainingBlock: void borderChanged (int y); core::Widget *asWidget (); - core::style::Style *getCBStyle (); - core::Allocation *getCBAllocation (); }; } // namespace dw |