summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dw/oofawarewidget.cc12
-rw-r--r--dw/ooffloatsmgr.cc5
-rw-r--r--dw/ooffloatsmgr.hh1
-rw-r--r--dw/oofpositionedmgr.cc5
-rw-r--r--dw/oofpositionedmgr.hh1
-rw-r--r--dw/outofflowmgr.hh1
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;