diff options
author | Sebastian Geerken <devnull@localhost> | 2016-01-09 18:00:46 +0100 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2016-01-09 18:00:46 +0100 |
commit | c122d6384e6197aa6fc2a0500dfb3271c44cd07a (patch) | |
tree | 01a88be6bdd928ade214883cfbdf96b3d0598d4b | |
parent | 9e5ef05a592d637f115b8a8b0b61da940d7bbbe4 (diff) |
Widget::calcExtraSpace is only called for size, not for extremes.
-rw-r--r-- | devdoc/dw-miscellaneous.doc | 4 | ||||
-rw-r--r-- | dw/textblock.cc | 22 | ||||
-rw-r--r-- | dw/textblock.hh | 5 | ||||
-rw-r--r-- | dw/widget.cc | 26 | ||||
-rw-r--r-- | dw/widget.hh | 7 |
5 files changed, 27 insertions, 37 deletions
diff --git a/devdoc/dw-miscellaneous.doc b/devdoc/dw-miscellaneous.doc index cb4303c2..97e944d7 100644 --- a/devdoc/dw-miscellaneous.doc +++ b/devdoc/dw-miscellaneous.doc @@ -41,5 +41,9 @@ Interrupted drawing Similar rules apply to handling mouse events (dw::core::Widget::getWidgetAtPoint). +Extra space +----------- +Should dw::core::Widget::calcExtraSpace be called from +dw::core::Widget::getExtremes? */ diff --git a/dw/textblock.cc b/dw/textblock.cc index 3b7479af..5c740b3d 100644 --- a/dw/textblock.cc +++ b/dw/textblock.cc @@ -738,25 +738,23 @@ void Textblock::sizeAllocateImpl (core::Allocation *allocation) DBG_OBJ_LEAVE (); } -void Textblock::calcExtraSpaceImpl (bool vertical, int numPos, - Widget **references, int *x, int *y) +void Textblock::calcExtraSpaceImpl (int numPos, Widget **references, int *x, + int *y) { DBG_OBJ_ENTER0 ("resize", 0, "Textblock::calcExtraSpaceImpl"); sizeRequestParams.fill (numPos, references, x, y); - OOFAwareWidget::calcExtraSpaceImpl (vertical, numPos, references, x, y); + OOFAwareWidget::calcExtraSpaceImpl (numPos, references, x, y); - if (vertical) { - int clearPosition = 0; - for (int i = 0; i < NUM_OOFM; i++) - if (searchOutOfFlowMgr (i) && findSizeRequestReference (i, NULL, NULL)) - clearPosition = - misc::max (clearPosition, - searchOutOfFlowMgr(i)->getClearPosition (this)); + int clearPosition = 0; + for (int i = 0; i < NUM_OOFM; i++) + if (searchOutOfFlowMgr (i) && findSizeRequestReference (i, NULL, NULL)) + clearPosition = + misc::max (clearPosition, + searchOutOfFlowMgr(i)->getClearPosition (this)); - extraSpace.top = misc::max (extraSpace.top, clearPosition); - } + extraSpace.top = misc::max (extraSpace.top, clearPosition); DBG_OBJ_LEAVE (); } diff --git a/dw/textblock.hh b/dw/textblock.hh index 2346f22d..91ecbd7a 100644 --- a/dw/textblock.hh +++ b/dw/textblock.hh @@ -128,6 +128,8 @@ namespace dw { * Widget::extraSpace should fix this, but it is only fully working * in the GROWS branch (<http://flpsed.org/hgweb/dillo_grows>). * + * Update: This needs to be re-evaluated. + * * - Do margins of inline blocks and tables collapse? Check CSS * spec. (They do currently; if not, ignoring them is simple.) * @@ -831,8 +833,7 @@ protected: void sizeAllocateImpl (core::Allocation *allocation); - void calcExtraSpaceImpl (bool vertical, int numPos, Widget **references, - int *x, int *y); + void calcExtraSpaceImpl (int numPos, Widget **references, int *x, int *y); int getAvailWidthOfChild (core::Widget *child, bool forceValue); int getAvailHeightOfChild (core::Widget *child, bool forceValue); diff --git a/dw/widget.cc b/dw/widget.cc index 626144f2..785cb5ff 100644 --- a/dw/widget.cc +++ b/dw/widget.cc @@ -606,7 +606,7 @@ void Widget::sizeRequest (Requisition *requisition, int numPos, } if (callImpl) { - calcExtraSpace (true, numPos, references, x, y); + calcExtraSpace (numPos, references, x, y); /** \todo Check requisition == &(this->requisition) and do what? */ sizeRequestImpl (requisition, numPos, references, x, y); this->requisition = *requisition; @@ -1044,8 +1044,6 @@ void Widget::getExtremes (Extremes *extremes, int numPos, Widget **references, } if (callImpl) { - calcExtraSpace (false, numPos, references, x, y); - // For backward compatibility (part 1/2): extremes->minWidthIntrinsic = extremes->maxWidthIntrinsic = -1; @@ -1080,23 +1078,16 @@ void Widget::getExtremes (Extremes *extremes, int numPos, Widget **references, * * Delegated to dw::core::Widget::calcExtraSpaceImpl. Called both from * dw::core::Widget::sizeRequest and dw::core::Widget::getExtremes. - * - * If `vertical` is false, only horizontal dimensions are calculated. (This is - * used for extremes.) */ -void Widget::calcExtraSpace (bool vertical, int numPos, Widget **references, - int *x, int *y) +void Widget::calcExtraSpace (int numPos, Widget **references, int *x, int *y) { DBG_OBJ_ENTER0 ("resize", 0, "calcExtraSpace"); extraSpace.top = extraSpace.right = extraSpace.bottom = extraSpace.left = 0; - calcExtraSpaceImpl (vertical, numPos, references, x, y); + calcExtraSpaceImpl (numPos, references, x, y); - if (vertical) { - DBG_OBJ_SET_NUM ("extraSpace.top", extraSpace.top); - DBG_OBJ_SET_NUM ("extraSpace.bottom", extraSpace.bottom); - } - + DBG_OBJ_SET_NUM ("extraSpace.top", extraSpace.top); + DBG_OBJ_SET_NUM ("extraSpace.bottom", extraSpace.bottom); DBG_OBJ_SET_NUM ("extraSpace.left", extraSpace.left); DBG_OBJ_SET_NUM ("extraSpace.right", extraSpace.right); @@ -1646,12 +1637,9 @@ void Widget::sizeAllocateImpl (Allocation *allocation) * dw::core::Widget::extraSpace, which is only corrected. To make sure * all possible influences are considered, the implementation of the * base class should be called, too. - * - * If `vertical` is false, only horizontal dimensions are calculated. (This is - * used for extremes.) */ -void Widget::calcExtraSpaceImpl (bool vertical, int numPos, Widget **references, - int *x, int *y) +void Widget::calcExtraSpaceImpl (int numPos, Widget **references, int *x, + int *y) { } diff --git a/dw/widget.hh b/dw/widget.hh index 94b8b7ec..165ea09a 100644 --- a/dw/widget.hh +++ b/dw/widget.hh @@ -303,8 +303,8 @@ protected: */ virtual void getExtremesSimpl (Extremes *extremes); - virtual void calcExtraSpaceImpl (bool vertical, int numPos, - Widget **references, int *x, int *y); + virtual void calcExtraSpaceImpl (int numPos, Widget **references, int *x, + int *y); /** * \brief See \ref dw-widget-sizes. @@ -486,8 +486,7 @@ public: Widget **references = NULL, int *x = NULL, int *y = NULL); void sizeAllocate (Allocation *allocation); - void calcExtraSpace (bool vertical, int numPos, Widget **references, - int *x, int *y); + void calcExtraSpace (int numPos, Widget **references, int *x, int *y); int getAvailWidth (bool forceValue); int getAvailHeight (bool forceValue); |