summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dw/types.hh2
-rw-r--r--dw/widget.cc17
2 files changed, 19 insertions, 0 deletions
diff --git a/dw/types.hh b/dw/types.hh
index e910d296..36d6caa1 100644
--- a/dw/types.hh
+++ b/dw/types.hh
@@ -180,6 +180,8 @@ struct Extremes
{
int minWidth;
int maxWidth;
+ int minWidthIntrinsic;
+ int maxWidthIntrinsic;
};
struct Content
diff --git a/dw/widget.cc b/dw/widget.cc
index 7d6bc98b..38d1de1c 100644
--- a/dw/widget.cc
+++ b/dw/widget.cc
@@ -614,6 +614,9 @@ void Widget::correctExtremes (Extremes *extremes)
{
// TODO Extremes only corrected?
+ extremes->minWidthIntrinsic = extremes->minWidth;
+ extremes->maxWidthIntrinsic = extremes->maxWidth;
+
DBG_OBJ_MSGF ("resize", 0, "<b>correctExtremes</b> (%d / %d)",
extremes->minWidth, extremes->maxWidth);
DBG_OBJ_MSG_START ();
@@ -659,12 +662,26 @@ void Widget::getExtremes (Extremes *extremes)
}
if (extremesChanged ()) {
+ // For backward compatibility (part 1/2):
+ extremes->minWidthIntrinsic = extremes->maxWidthIntrinsic = -1;
+
getExtremesImpl (extremes);
+
+ // For backward compatibility (part 2/2):
+ if (extremes->minWidthIntrinsic == -1)
+ extremes->minWidthIntrinsic = extremes->minWidth;
+ if (extremes->maxWidthIntrinsic == -1)
+ extremes->maxWidthIntrinsic = extremes->maxWidth;
+
this->extremes = *extremes;
unsetFlags (EXTREMES_CHANGED);
DBG_OBJ_SET_NUM ("extremes.minWidth", extremes->minWidth);
+ DBG_OBJ_SET_NUM ("extremes.minWidthIntrinsic",
+ extremes->minWidthIntrinsic);
DBG_OBJ_SET_NUM ("extremes.maxWidth", extremes->maxWidth);
+ DBG_OBJ_SET_NUM ("extremes.maxWidthIntrinsic",
+ extremes->maxWidthIntrinsic);
} else
*extremes = this->extremes;