From 1d2f6c7e9fa1a830cd64bfd623737703567c400f Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Tue, 10 Apr 2012 23:59:05 -0300 Subject: [PATCH] enable text-auto-resize for width --- modules/client_background/background.otui | 1 + src/framework/ui/uiwidget.cpp | 4 ++-- src/framework/ui/uiwidgettext.cpp | 20 +++++++------------- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/modules/client_background/background.otui b/modules/client_background/background.otui index dc4b863a..5ec649fd 100644 --- a/modules/client_background/background.otui +++ b/modules/client_background/background.otui @@ -18,5 +18,6 @@ Panel text-align: center text-auto-resize: true width: 120 + padding: 2 color: #ffffff font: verdana-11px-monochrome diff --git a/src/framework/ui/uiwidget.cpp b/src/framework/ui/uiwidget.cpp index c49ad7fe..25312741 100644 --- a/src/framework/ui/uiwidget.cpp +++ b/src/framework/ui/uiwidget.cpp @@ -1318,8 +1318,6 @@ void UIWidget::onStyleApply(const std::string& styleName, const OTMLNodePtr& sty void UIWidget::onGeometryChange(const Rect& oldRect, const Rect& newRect) { - callLuaField("onGeometryChange", oldRect, newRect); - if(m_textWrap && oldRect.size() != newRect.size()) updateText(); @@ -1328,6 +1326,8 @@ void UIWidget::onGeometryChange(const Rect& oldRect, const Rect& newRect) if(!child->isAnchored()) child->bindRectToParent(); } + + callLuaField("onGeometryChange", oldRect, newRect); } void UIWidget::onLayoutUpdate() diff --git a/src/framework/ui/uiwidgettext.cpp b/src/framework/ui/uiwidgettext.cpp index db6ddc63..5c1c9cd6 100644 --- a/src/framework/ui/uiwidgettext.cpp +++ b/src/framework/ui/uiwidgettext.cpp @@ -41,20 +41,14 @@ void UIWidget::updateText() m_drawText = m_text; // update rect size - if(!m_rect.isValid()) { - Size textSize = getTextSize(); - Size newSize = getSize(); - if(newSize.width() <= 0) - newSize.setWidth(textSize.width()); - if(newSize.height() <= 0) - newSize.setHeight(textSize.height()); - setSize(newSize); - } else if(m_textAutoResize) { - Size textSize = getTextSize(); + if(!m_rect.isValid() || m_textAutoResize) { + Size textBoxSize = getTextSize(); + textBoxSize += Size(m_padding.left + m_padding.right, m_padding.top + m_padding.left); Size size = getSize(); - if(textSize.width() > size.width()) - size.setWidth(textSize.width()); - size.setHeight(textSize.height()); + if(size.width() <= 0 || (m_textAutoResize && !m_textWrap)) + size.setWidth(textBoxSize.width()); + if(size.height() <= 0 || m_textAutoResize) + size.setHeight(textBoxSize.height()); setSize(size); }