diff options
author | Sebastian Geerken <devnull@localhost> | 2014-06-02 00:02:52 +0200 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2014-06-02 00:02:52 +0200 |
commit | 0b8eaee1a82718d9fe7faab78aa57ab43c29a7be (patch) | |
tree | 725185d5d26e2313615e9295a25e1b815636560d | |
parent | 82d447e97678d8eafc6267ff00b0a4464b295a8f (diff) |
Some work on extremes.
-rw-r--r-- | dw/ruler.cc | 6 | ||||
-rw-r--r-- | dw/ruler.hh | 1 | ||||
-rw-r--r-- | dw/table.cc | 10 | ||||
-rw-r--r-- | dw/textblock.cc | 44 | ||||
-rw-r--r-- | dw/ui.cc | 1 | ||||
-rw-r--r-- | dw/widget.cc | 1 |
6 files changed, 17 insertions, 46 deletions
diff --git a/dw/ruler.cc b/dw/ruler.cc index 3599c32a..b014654d 100644 --- a/dw/ruler.cc +++ b/dw/ruler.cc @@ -40,6 +40,12 @@ void Ruler::sizeRequestImpl (core::Requisition *requisition) requisition->descent = getStyle()->boxRestHeight (); } +void Ruler::getExtremesImpl (core::Extremes *extremes) +{ + extremes->minWidth = extremes->maxWidth = getStyle()->boxDiffWidth (); + correctExtremes (extremes); +} + bool Ruler::isBlockLevel () { return true; diff --git a/dw/ruler.hh b/dw/ruler.hh index 0a0cd2b2..eea1f952 100644 --- a/dw/ruler.hh +++ b/dw/ruler.hh @@ -17,6 +17,7 @@ class Ruler: public core::Widget { protected: void sizeRequestImpl (core::Requisition *requisition); + void getExtremesImpl (core::Extremes *extremes); void draw (core::View *view, core::Rectangle *area); public: diff --git a/dw/table.cc b/dw/table.cc index d15100b7..22d7e8ad 100644 --- a/dw/table.cc +++ b/dw/table.cc @@ -131,14 +131,8 @@ void Table::getExtremesImpl (core::Extremes *extremes) extremes->minWidth += colExtremes->getRef(col)->minWidth; extremes->maxWidth += colExtremes->getRef(col)->maxWidth; } - if (core::style::isAbsLength (getStyle()->width)) { - extremes->minWidth = - misc::max (extremes->minWidth, - core::style::absLengthVal(getStyle()->width)); - extremes->maxWidth = - misc::max (extremes->maxWidth, - core::style::absLengthVal(getStyle()->width)); - } + + correctExtremes (extremes); _MSG(" Table::getExtremesImpl, {%d, %d} numCols=%d\n", extremes->minWidth, extremes->maxWidth, numCols); diff --git a/dw/textblock.cc b/dw/textblock.cc index c1cd1dbe..84e58f86 100644 --- a/dw/textblock.cc +++ b/dw/textblock.cc @@ -413,44 +413,10 @@ void Textblock::sizeRequestImpl (core::Requisition *requisition) */ void Textblock::getWordExtremes (Word *word, core::Extremes *extremes) { - if (word->content.type == core::Content::WIDGET_IN_FLOW) { - if (word->content.widget->usesHints ()) { - word->content.widget->getExtremes (extremes); - - if (core::style::isAbsLength (word->content.widget - ->getStyle()->width)) { - int width = - core::style::absLengthVal (word->content.widget - ->getStyle()->width); - if (extremes->minWidth < width) - extremes->minWidth = width; - if (extremes->maxWidth > width) - // maxWidth not smaller than minWidth - extremes->maxWidth = misc::max (width, extremes->minWidth); - } - } else { - if (core::style::isPerLength - (word->content.widget->getStyle()->width)) { - extremes->minWidth = 0; - if (word->content.widget->hasContents ()) - extremes->maxWidth = 1000000; - else - extremes->maxWidth = 0; - } else if (core::style::isAbsLength - (word->content.widget->getStyle()->width)) { - /* Fixed lengths are only applied to the content, so we have to - * add padding, border and margin. */ - extremes->minWidth = extremes->maxWidth = - core::style::absLengthVal (word->content.widget->getStyle() - ->width) - + word->style->boxDiffWidth (); - } else - word->content.widget->getExtremes (extremes); - } - } else { - extremes->minWidth = word->size.width; - extremes->maxWidth = word->size.width; - } + if (word->content.type == core::Content::WIDGET_IN_FLOW) + word->content.widget->getExtremes (extremes); + else + extremes->minWidth = extremes->maxWidth = word->size.width; } void Textblock::getExtremesImpl (core::Extremes *extremes) @@ -491,6 +457,8 @@ void Textblock::getExtremesImpl (core::Extremes *extremes) extremes->maxWidth = misc::max (extremes->maxWidth, oofMaxWidth); } + correctExtremes (extremes); + DBG_OBJ_MSGF ("resize", 1, "=> %d / %d", extremes->minWidth, extremes->maxWidth); @@ -56,6 +56,7 @@ void Embed::sizeRequestImpl (Requisition *requisition) void Embed::getExtremesImpl (Extremes *extremes) { resource->getExtremes (extremes); + correctExtremes (extremes); } void Embed::sizeAllocateImpl (Allocation *allocation) diff --git a/dw/widget.cc b/dw/widget.cc index 2f9a7de4..8dab44ad 100644 --- a/dw/widget.cc +++ b/dw/widget.cc @@ -936,6 +936,7 @@ void Widget::getExtremesImpl (Extremes *extremes) Requisition requisition; sizeRequest (&requisition); extremes->minWidth = extremes->maxWidth = requisition.width; + correctExtremes (extremes); } void Widget::sizeAllocateImpl (Allocation *allocation) |