diff options
author | Sebastian Geerken <devnull@localhost> | 2014-10-06 17:30:48 +0200 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2014-10-06 17:30:48 +0200 |
commit | d81d40e6849263a18281a5d64b95c2479ee9f120 (patch) | |
tree | b33e8296d3b012c10a29b81270b1ad6b33a6db56 | |
parent | b2619e5c7cce1dcc7e1bd70a9fae0095118da6da (diff) |
Too large floats (but not absolutely positioned elements) now affect padding area, not margin area, of container.
-rw-r--r-- | dw/oofawarewidget.cc | 12 | ||||
-rw-r--r-- | dw/ooffloatsmgr.cc | 5 | ||||
-rw-r--r-- | dw/ooffloatsmgr.hh | 1 | ||||
-rw-r--r-- | dw/oofpositionedmgr.cc | 5 | ||||
-rw-r--r-- | dw/oofpositionedmgr.hh | 1 | ||||
-rw-r--r-- | dw/outofflowmgr.hh | 1 |
6 files changed, 23 insertions, 2 deletions
diff --git a/dw/oofawarewidget.cc b/dw/oofawarewidget.cc index 9994c0cc..3ffdef5d 100644 --- a/dw/oofawarewidget.cc +++ b/dw/oofawarewidget.cc @@ -183,17 +183,25 @@ void OOFAwareWidget::correctRequisitionByOOF (Requisition *requisition, outOfFlowMgr[i]->getSize (requisition, &oofWidth, &oofHeight); if (oofWidth > requisition->width) { - if (adjustExtraSpaceWhenCorrectingRequisitionByOOF ()) + if (outOfFlowMgr[i]->containerMustAdjustExtraSpace () && + adjustExtraSpaceWhenCorrectingRequisitionByOOF ()) { extraSpace.right = max (extraSpace.right, oofWidth - requisition->width); + DBG_OBJ_SET_NUM ("extraSpace.right", extraSpace.right); + } + requisition->width = oofWidth; } if (oofHeight > requisition->ascent + requisition->descent) { - if (adjustExtraSpaceWhenCorrectingRequisitionByOOF ()) + if (outOfFlowMgr[i]->containerMustAdjustExtraSpace () && + adjustExtraSpaceWhenCorrectingRequisitionByOOF ()) { extraSpace.bottom = max (extraSpace.bottom, oofHeight - (requisition->ascent + requisition->descent)); + DBG_OBJ_SET_NUM ("extraSpace.bottom", extraSpace.bottom); + } + splitHeightFun (oofHeight, &requisition->ascent, &requisition->descent); } diff --git a/dw/ooffloatsmgr.cc b/dw/ooffloatsmgr.cc index fdfd986b..d5cc1671 100644 --- a/dw/ooffloatsmgr.cc +++ b/dw/ooffloatsmgr.cc @@ -1803,6 +1803,11 @@ void OOFFloatsMgr::getFloatsSize (Requisition *cbReq, Side side, int *width, DBG_OBJ_LEAVE (); } +bool OOFFloatsMgr::containerMustAdjustExtraSpace () +{ + return false; +} + void OOFFloatsMgr::getExtremes (Extremes *cbExtr, int *oofMinWidth, int *oofMaxWidth) { diff --git a/dw/ooffloatsmgr.hh b/dw/ooffloatsmgr.hh index b23ba072..e4b61772 100644 --- a/dw/ooffloatsmgr.hh +++ b/dw/ooffloatsmgr.hh @@ -358,6 +358,7 @@ public: void tellPosition (core::Widget *widget, int x, int y); void getSize (core::Requisition *cbReq, int *oofWidth, int *oofHeight); + bool containerMustAdjustExtraSpace (); void getExtremes (core::Extremes *cbExtr, int *oofMinWidth, int *oofMaxWidth); diff --git a/dw/oofpositionedmgr.cc b/dw/oofpositionedmgr.cc index e5c31a98..2fa32342 100644 --- a/dw/oofpositionedmgr.cc +++ b/dw/oofpositionedmgr.cc @@ -285,6 +285,11 @@ void OOFPositionedMgr::getSize (Requisition *containerReq, int *oofWidth, DBG_OBJ_LEAVE (); } +bool OOFPositionedMgr::containerMustAdjustExtraSpace () +{ + return true; +} + void OOFPositionedMgr::getExtremes (Extremes *containerExtr, int *oofMinWidth, int *oofMaxWidth) { diff --git a/dw/oofpositionedmgr.hh b/dw/oofpositionedmgr.hh index 8ddecd92..40f3af43 100644 --- a/dw/oofpositionedmgr.hh +++ b/dw/oofpositionedmgr.hh @@ -81,6 +81,7 @@ public: void getSize (core::Requisition *containerReq, int *oofWidth, int *oofHeight); + bool containerMustAdjustExtraSpace (); void getExtremes (core::Extremes *containerExtr, int *oofMinWidth, int *oofMaxWidth); diff --git a/dw/outofflowmgr.hh b/dw/outofflowmgr.hh index 96091ded..b5f50c56 100644 --- a/dw/outofflowmgr.hh +++ b/dw/outofflowmgr.hh @@ -42,6 +42,7 @@ public: virtual void getSize (core::Requisition *containerReq, int *oofWidth, int *oofHeight) = 0; + virtual bool containerMustAdjustExtraSpace ()= 0; virtual void getExtremes (core::Extremes *containerExtr, int *oofMinWidth, int *oofMaxWidth) = 0; |