aboutsummaryrefslogtreecommitdiff
path: root/dw/widget.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dw/widget.cc')
-rw-r--r--dw/widget.cc37
1 files changed, 35 insertions, 2 deletions
diff --git a/dw/widget.cc b/dw/widget.cc
index 0e44dbdf..7fa87d1d 100644
--- a/dw/widget.cc
+++ b/dw/widget.cc
@@ -439,11 +439,38 @@ void Widget::correctRequisition (Requisition *requisition,
} else
container->correctRequisitionOfChild (this, requisition, splitHeightFun);
- DBG_OBJ_MSGF ("resize", 1, "=> %d * (%d + %d)",
+ DBG_OBJ_MSGF ("resize", 1, "=> %d * (%d + %d)",
requisition->width, requisition->ascent,
requisition->descent);
+ DBG_OBJ_MSG_END ();
+}
+
+void Widget::correctExtremes (Extremes *extremes)
+{
+ // TODO Extremes only corrected?
+
+ DBG_OBJ_MSGF ("resize", 0, "<b>correctExtremes</b> (%d / %d)"
+ extremes->minWidth, extremes->maxWidth);
+ DBG_OBJ_MSG_START ();
+
+ if (container == NULL) {
+ if (core::style::isAbsLength (getStyle()->width))
+ // TODO What does "width" exactly stand for? (Content or all?)
+ extremes->minWidth = extremes->maxWidth =
+ core::style::absLengthVal (getStyle()->width);
+ else if (core::style::isPerLength (getStyle()->width)) {
+ int viewportWidth =
+ layout->viewportWidth - (layout->canvasHeightGreater ?
+ layout->vScrollbarThickness : 0);
+ extremes->minWidth = extremes->maxWidth =
+ style::multiplyWithPerLength (viewportWidth, getStyle()->width);
+ }
+ } else
+ container->correctExtremesOfChild (this, extremes);
+
+ DBG_OBJ_MSGF ("resize", 1, "=> %d / %d",
+ extremes->minWidth, extremes->maxWidth);
DBG_OBJ_MSG_END ();
-
}
/**
@@ -946,6 +973,12 @@ void Widget::correctRequisitionOfChild (Widget *child, Requisition *requisition,
misc::assertNotReached ();
}
+void correctExtremesOfChild (Widget *child, Extremes *extremes)
+{
+ // Must be implemented for possible containers.
+ misc::assertNotReached ();
+}
+
/**
* \brief This method is called after a widget has been set as the top of a
* widget tree.