aboutsummaryrefslogtreecommitdiff
path: root/dw/widget.cc
diff options
context:
space:
mode:
authorSebastian Geerken <devnull@localhost>2015-01-08 14:51:23 +0100
committerSebastian Geerken <devnull@localhost>2015-01-08 14:51:23 +0100
commit3fa61740d50d8a8fd6c61eb86e1f7a45a3762570 (patch)
treeb6d857642d861fc594292ec69260bfc3cc617be0 /dw/widget.cc
parente05ebd46d570cd64c116ed4bdde669ea0962e99b (diff)
parent428094b178eb03d8e500c81837caac402e4b138c (diff)
Merge with main repo.
Diffstat (limited to 'dw/widget.cc')
-rw-r--r--dw/widget.cc57
1 files changed, 29 insertions, 28 deletions
diff --git a/dw/widget.cc b/dw/widget.cc
index d5c856d2..8f93701d 100644
--- a/dw/widget.cc
+++ b/dw/widget.cc
@@ -734,18 +734,18 @@ void Widget::sizeRequest (Requisition *requisition)
* context of correctExtemes etc., to avoid cyclic dependencies.
*
*/
-int Widget::getMinWidth (Extremes *extremes, bool useCorrected, bool forceValue)
-{
- if (extremes)
- DBG_OBJ_ENTER ("resize", 0, "getMinWidth", "[%d (%d) / %d (%d), %s, %s",
- extremes->minWidth, extremes->minWidthIntrinsic,
- extremes->maxWidth, extremes->maxWidthIntrinsic,
- useCorrected ? "true" : "false",
- forceValue ? "true" : "false");
- else
- DBG_OBJ_ENTER ("resize", 0, "getMinWidth", "(nil), %s, %s",
- useCorrected ? "true" : "false",
- forceValue ? "true" : "false");
+int Widget::getMinWidth (Extremes *extremes, bool forceValue)
+{
+ DBG_IF_RTFL {
+ if (extremes)
+ DBG_OBJ_ENTER ("resize", 0, "getMinWidth", "[%d (%d) / %d (%d), %s",
+ extremes->minWidth, extremes->minWidthIntrinsic,
+ extremes->maxWidth, extremes->maxWidthIntrinsic,
+ forceValue ? "true" : "false");
+ else
+ DBG_OBJ_ENTER ("resize", 0, "getMinWidth", "(nil), %s",
+ forceValue ? "true" : "false");
+ }
int minWidth;
@@ -761,13 +761,9 @@ int Widget::getMinWidth (Extremes *extremes, bool useCorrected, bool forceValue)
// TODO Not completely clear whether this is feasable: Within
// the context of getAvailWidth(false) etc., getExtremes may not
// be called. We ignore the minimal width then.
- if (extremes) {
- if (useCorrected)
- minWidth =
- misc::max (extremes->minWidth, extremes->minWidthIntrinsic);
- else
- minWidth = extremes->minWidthIntrinsic;
- } else
+ if (extremes)
+ minWidth = extremes->adjustmentWidth;
+ else
minWidth = 0;
} else
minWidth = 0;
@@ -894,7 +890,7 @@ void Widget::correctRequisition (Requisition *requisition,
DBG_OBJ_MSG ("resize", 1, "no parent, regarding viewport");
DBG_OBJ_MSG_START ();
- int limitMinWidth = getMinWidth (NULL, true, true);
+ int limitMinWidth = getMinWidth (NULL, true);
int viewportWidth =
layout->viewportWidth - (layout->canvasHeightGreater ?
layout->vScrollbarThickness : 0);
@@ -941,7 +937,7 @@ void Widget::correctRequisition (Requisition *requisition,
DBG_OBJ_LEAVE ();
}
-void Widget::correctExtremes (Extremes *extremes)
+void Widget::correctExtremes (Extremes *extremes, bool useAdjustmentWidth)
{
DBG_OBJ_ENTER ("resize", 0, "correctExtremes", "%d (%d) / %d (%d)",
extremes->minWidth, extremes->minWidthIntrinsic,
@@ -951,7 +947,8 @@ void Widget::correctExtremes (Extremes *extremes)
DBG_OBJ_MSG ("resize", 1, "no parent, regarding viewport");
DBG_OBJ_MSG_START ();
- int limitMinWidth = getMinWidth (extremes, false, false);
+ int limitMinWidth =
+ useAdjustmentWidth ? getMinWidth (extremes, false) : 0;
int viewportWidth =
layout->viewportWidth - (layout->canvasHeightGreater ?
layout->vScrollbarThickness : 0);
@@ -977,12 +974,12 @@ void Widget::correctExtremes (Extremes *extremes)
} else if (parent) {
DBG_OBJ_MSG ("resize", 1, "delegated to parent");
DBG_OBJ_MSG_START ();
- parent->correctExtremesOfChild (this, extremes);
+ parent->correctExtremesOfChild (this, extremes, useAdjustmentWidth);
DBG_OBJ_MSG_END ();
} else /* if (quasiParent) */ {
DBG_OBJ_MSG ("resize", 1, "delegated to quasiParent");
DBG_OBJ_MSG_START ();
- quasiParent->correctExtremesOfChild (this, extremes);
+ quasiParent->correctExtremesOfChild (this, extremes, useAdjustmentWidth);
DBG_OBJ_MSG_END ();
}
@@ -1153,6 +1150,7 @@ void Widget::getExtremes (Extremes *extremes)
DBG_OBJ_SET_NUM ("extremes.maxWidth", extremes->maxWidth);
DBG_OBJ_SET_NUM ("extremes.maxWidthIntrinsic",
extremes->maxWidthIntrinsic);
+ DBG_OBJ_SET_NUM ("extremes.adjustmentWidth", extremes->adjustmentWidth);
} else
*extremes = this->extremes;
@@ -1835,7 +1833,7 @@ void Widget::correctReqWidthOfChild (Widget *child, Requisition *requisition)
assert (this == child->quasiParent || this == child->container);
- int limitMinWidth = child->getMinWidth (NULL, true, true);
+ int limitMinWidth = child->getMinWidth (NULL, true);
child->calcFinalWidth (child->getStyle(), -1, this, limitMinWidth, false,
&requisition->width);
@@ -1881,7 +1879,8 @@ void Widget::correctReqHeightOfChild (Widget *child, Requisition *requisition,
DBG_OBJ_LEAVE ();
}
-void Widget::correctExtremesOfChild (Widget *child, Extremes *extremes)
+void Widget::correctExtremesOfChild (Widget *child, Extremes *extremes,
+ bool useAdjustmentWidth)
{
// See comment in correctRequisitionOfChild.
@@ -1895,7 +1894,8 @@ void Widget::correctExtremesOfChild (Widget *child, Extremes *extremes)
(child->container ? child->container : child->parent);
if (effContainer == this) {
- int limitMinWidth = child->getMinWidth (extremes, false, false);
+ int limitMinWidth =
+ useAdjustmentWidth ? child->getMinWidth (extremes, false) : 0;
int width = child->calcWidth (child->getStyle()->width, -1, this,
limitMinWidth, false);
int minWidth = child->calcWidth (child->getStyle()->minWidth, -1, this,
@@ -1915,7 +1915,8 @@ void Widget::correctExtremesOfChild (Widget *child, Extremes *extremes)
} else {
DBG_OBJ_MSG ("resize", 1, "delegated to (effective) container");
DBG_OBJ_MSG_START ();
- effContainer->correctExtremesOfChild (child, extremes);
+ effContainer->correctExtremesOfChild (child, extremes,
+ useAdjustmentWidth);
DBG_OBJ_MSG_END ();
}