From 053aebacdd40272a0119d9406d985ed4094abe27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaakko=20Ker=C3=A4nen?= Date: Thu, 19 Jun 2014 10:08:00 +0300 Subject: [PATCH] libappfw|LabelWidget: Specify maximum text width with a Rule --- doomsday/libappfw/include/de/widgets/labelwidget.h | 2 ++ doomsday/libappfw/src/widgets/labelwidget.cpp | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/doomsday/libappfw/include/de/widgets/labelwidget.h b/doomsday/libappfw/include/de/widgets/labelwidget.h index 0847d58cce..972ae1100c 100644 --- a/doomsday/libappfw/include/de/widgets/labelwidget.h +++ b/doomsday/libappfw/include/de/widgets/labelwidget.h @@ -141,6 +141,8 @@ class LIBAPPFW_PUBLIC LabelWidget : public GuiWidget, public AssetGroup */ void setMaximumTextWidth(int pixels); + void setMaximumTextWidth(Rule const &pixels); + /** * Sets an alternative style for text. By default, the rich text styling comes * from Style. diff --git a/doomsday/libappfw/src/widgets/labelwidget.cpp b/doomsday/libappfw/src/widgets/labelwidget.cpp index 0d0a6d47a8..da82923ba4 100644 --- a/doomsday/libappfw/src/widgets/labelwidget.cpp +++ b/doomsday/libappfw/src/widgets/labelwidget.cpp @@ -46,7 +46,7 @@ public Font::RichFormat::IStyle float imageScale; Vector4f imageColor; Vector4f textGLColor; - int maxTextWidth; + Rule const *maxTextWidth; ConstantRule *width; ConstantRule *height; @@ -112,6 +112,7 @@ public Font::RichFormat::IStyle releaseRef(width); releaseRef(height); releaseRef(appearSize); + releaseRef(maxTextWidth); } void updateStyle() @@ -451,9 +452,9 @@ public Font::RichFormat::IStyle } } // Apply an optional manual constraint to the text width. - if(maxTextWidth > 0) + if(maxTextWidth) { - return de::min(maxTextWidth, w); + return de::min(maxTextWidth->valuei(), w); } return w; } @@ -651,7 +652,12 @@ void LabelWidget::setImageFit(ContentFit const &fit) void LabelWidget::setMaximumTextWidth(int pixels) { - d->maxTextWidth = pixels; + setMaximumTextWidth(Const(pixels)); +} + +void de::LabelWidget::setMaximumTextWidth(Rule const &pixels) +{ + changeRef(d->maxTextWidth, pixels); requestGeometry(); }