aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Geerken <devnull@localhost>2014-07-22 00:59:35 +0200
committerSebastian Geerken <devnull@localhost>2014-07-22 00:59:35 +0200
commit81567f3ed2175861b9b50f7cd2142d8c6c60d84c (patch)
treeef027ddf2f619f28419c7e7e59e14497fd003784
parent394187dd1c45a876677dc5717674ae5eebf8d7af (diff)
Fixed incomplete intrinsic extremes.
-rw-r--r--dw/bullet.cc2
-rw-r--r--dw/image.cc14
-rw-r--r--dw/ui.cc4
3 files changed, 18 insertions, 2 deletions
diff --git a/dw/bullet.cc b/dw/bullet.cc
index 0ae8ccb7..79b1c3ec 100644
--- a/dw/bullet.cc
+++ b/dw/bullet.cc
@@ -46,6 +46,8 @@ void Bullet::getExtremesImpl (core::Extremes *extremes)
{
extremes->minWidth = extremes->maxWidth =
lout::misc::max (getStyle()->font->xHeight * 4 / 5, 1);
+ extremes->minWidthIntrinsic = extremes->minWidth;
+ extremes->maxWidthIntrinsic = extremes->maxWidth;
}
void Bullet::containerSizeChangedForChildren ()
diff --git a/dw/image.cc b/dw/image.cc
index 9dc6d6ee..df8b6e83 100644
--- a/dw/image.cc
+++ b/dw/image.cc
@@ -217,8 +217,18 @@ void Image::sizeRequestImpl (core::Requisition *requisition)
void Image::getExtremesImpl (core::Extremes *extremes)
{
- extremes->minWidth = extremes->maxWidth =
- (buffer ? buffer->getRootWidth () : 0) + boxDiffWidth ();
+ int width = (buffer ? buffer->getRootWidth () : 0) + boxDiffWidth ();
+
+ // With percentage width, the image may be narrower than the buffer.
+ extremes->minWidth =
+ core::style::isPerLength (getStyle()->width) ? boxDiffWidth () : width;
+
+ // (We ignore the same effect for the maximal width.)
+ extremes->maxWidth = width;
+
+ extremes->minWidthIntrinsic = extremes->minWidth;
+ extremes->maxWidthIntrinsic = extremes->maxWidth;
+
correctExtremes (extremes);
}
diff --git a/dw/ui.cc b/dw/ui.cc
index d58164c9..3bf70fea 100644
--- a/dw/ui.cc
+++ b/dw/ui.cc
@@ -212,6 +212,8 @@ void Resource::getExtremes (Extremes *extremes)
Requisition requisition;
sizeRequest (&requisition);
extremes->minWidth = extremes->maxWidth = requisition.width;
+ extremes->minWidthIntrinsic = extremes->minWidth;
+ extremes->maxWidthIntrinsic = extremes->maxWidth;
DBG_OBJ_MSGF ("resize", 1, "result: %d / %d",
extremes->minWidth, extremes->maxWidth);
@@ -376,6 +378,8 @@ void ComplexButtonResource::getExtremes (Extremes *extremes)
childWidget->getExtremes (&widgetExtremes);
extremes->minWidth = widgetExtremes.minWidth + 2 * reliefXThickness ();
extremes->maxWidth = widgetExtremes.maxWidth + 2 * reliefXThickness ();
+ extremes->minWidthIntrinsic = extremes->minWidth;
+ extremes->maxWidthIntrinsic = extremes->maxWidth;
DBG_OBJ_MSGF ("resize", 1, "result: %d / %d",
extremes->minWidth, extremes->maxWidth);