diff options
author | Sebastian Geerken <devnull@localhost> | 2015-01-08 14:51:23 +0100 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2015-01-08 14:51:23 +0100 |
commit | 3fa61740d50d8a8fd6c61eb86e1f7a45a3762570 (patch) | |
tree | b6d857642d861fc594292ec69260bfc3cc617be0 /dw/widget.cc | |
parent | e05ebd46d570cd64c116ed4bdde669ea0962e99b (diff) | |
parent | 428094b178eb03d8e500c81837caac402e4b138c (diff) |
Merge with main repo.
Diffstat (limited to 'dw/widget.cc')
-rw-r--r-- | dw/widget.cc | 57 |
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 (); } |