summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Geerken <devnull@localhost>2016-01-09 18:00:46 +0100
committerSebastian Geerken <devnull@localhost>2016-01-09 18:00:46 +0100
commitc122d6384e6197aa6fc2a0500dfb3271c44cd07a (patch)
tree01a88be6bdd928ade214883cfbdf96b3d0598d4b
parent9e5ef05a592d637f115b8a8b0b61da940d7bbbe4 (diff)
Widget::calcExtraSpace is only called for size, not for extremes.
-rw-r--r--devdoc/dw-miscellaneous.doc4
-rw-r--r--dw/textblock.cc22
-rw-r--r--dw/textblock.hh5
-rw-r--r--dw/widget.cc26
-rw-r--r--dw/widget.hh7
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);