summaryrefslogtreecommitdiffstats
path: root/src/declarative/graphicsitems/qdeclarativetext.cpp
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-04-12 03:31:47 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-04-12 03:31:47 (GMT)
commit381ea9c22eb8f6b3701376a650202f094e17746d (patch)
tree5c0014189bf8c14ae11ad9d246134c839c13c343 /src/declarative/graphicsitems/qdeclarativetext.cpp
parent27f8facfea87d7c4669852e7aa0fe5d9ca828eb3 (diff)
parentb6a50a14189da153e93aef581c30863608399714 (diff)
downloadQt-381ea9c22eb8f6b3701376a650202f094e17746d.zip
Qt-381ea9c22eb8f6b3701376a650202f094e17746d.tar.gz
Qt-381ea9c22eb8f6b3701376a650202f094e17746d.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-qml: (130 commits) Warning Read Maemo orientation at startup Exclude gestures from examples autotest Exclude proxywidgets from examples autotest Fix crash on QScriptProgram destruction doc fixes Start documenting coding conventions Adds missing qml file to qdeclarativeflipable autotest Revert "Better reporting of extension plugin loading errors." Doc Fix graphicswidget auto-test. Add Mac OS X bundle description for qml runtime Cleanup Disallow writes to read-only value type properties Allow undefined to be assigned to QVariant properties Add a Qt.isQtObject() method Fix crash in QML library imports Remove QT_VERSION checks in QML List properties aren't read-only Small doc fix. ...
Diffstat (limited to 'src/declarative/graphicsitems/qdeclarativetext.cpp')
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext.cpp74
1 files changed, 47 insertions, 27 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp
index a4f3068..69e3543 100644
--- a/src/declarative/graphicsitems/qdeclarativetext.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetext.cpp
@@ -42,6 +42,7 @@
#include "private/qdeclarativetext_p.h"
#include "private/qdeclarativetext_p_p.h"
#include <qdeclarativestyledtext_p.h>
+#include <qdeclarativeinfo.h>
#include <QTextLayout>
#include <QTextLine>
@@ -70,7 +71,7 @@ QT_BEGIN_NAMESPACE
\image declarative-text.png
If height and width are not explicitly set, Text will attempt to determine how
- much room is needed and set it accordingly. Unless \c wrap is set, it will always
+ much room is needed and set it accordingly. Unless \c wrapMode is set, it will always
prefer width to height (all text will be placed on a single line).
The \c elide property can alternatively be used to fit a single line of
@@ -98,7 +99,7 @@ QT_BEGIN_NAMESPACE
\image text.png
If height and width are not explicitly set, Text will attempt to determine how
- much room is needed and set it accordingly. Unless \c wrap is set, it will always
+ much room is needed and set it accordingly. Unless \c wrapMode is set, it will always
prefer width to height (all text will be placed on a single line).
The \c elide property can alternatively be used to fit a line of plain text to a set width.
@@ -319,37 +320,55 @@ void QDeclarativeText::setVAlign(VAlignment align)
}
/*!
- \qmlproperty bool Text::wrap
+ \qmlproperty enumeration Text::wrapMode
Set this property to wrap the text to the Text item's width. The text will only
- wrap if an explicit width has been set.
+ wrap if an explicit width has been set. wrapMode can be one of:
- Wrapping is done on word boundaries (i.e. it is a "word-wrap"). If the text cannot be
+ \list
+ \o NoWrap - no wrapping will be performed.
+ \o WordWrap - wrapping is done on word boundaries. If the text cannot be
word-wrapped to the specified width it will be partially drawn outside of the item's bounds.
If this is undesirable then enable clipping on the item (Item::clip).
+ \o WrapAnywhere - Text can be wrapped at any point on a line, even if it occurs in the middle of a word.
+ \o WrapAtWordBoundaryOrAnywhere - If possible, wrapping occurs at a word boundary; otherwise it
+ will occur at the appropriate point on the line, even in the middle of a word.
+ \endlist
- Wrapping is off by default.
+ The default is NoWrap.
*/
-//### Future may provide choice of wrap modes, such as QTextOption::WrapAtWordBoundaryOrAnywhere
-bool QDeclarativeText::wrap() const
+QDeclarativeText::WrapMode QDeclarativeText::wrapMode() const
{
Q_D(const QDeclarativeText);
- return d->wrap;
+ return d->wrapMode;
}
-void QDeclarativeText::setWrap(bool w)
+void QDeclarativeText::setWrapMode(WrapMode mode)
{
Q_D(QDeclarativeText);
- if (w == d->wrap)
+ if (mode == d->wrapMode)
return;
- d->wrap = w;
+ d->wrapMode = mode;
d->updateLayout();
d->markImgDirty();
- emit wrapChanged(d->wrap);
+ emit wrapModeChanged();
+}
+
+bool QDeclarativeText::wrap() const
+{
+ Q_D(const QDeclarativeText);
+ return d->wrapMode != NoWrap;
}
+void QDeclarativeText::setWrap(bool w)
+{
+ qmlInfo(this) << "\"wrap\" property is deprecated and will soon be removed. Use wrapMode";
+ setWrapMode(w ? WordWrap : NoWrap);
+}
+
+
/*!
\qmlproperty enumeration Text::textFormat
@@ -379,18 +398,18 @@ void QDeclarativeText::setWrap(bool w)
\o
\qml
Column {
- TextEdit {
+ Text {
font.pointSize: 24
text: "<b>Hello</b> <i>World!</i>"
}
- TextEdit {
+ Text {
font.pointSize: 24
- textFormat: "RichText"
+ textFormat: Text.RichText
text: "<b>Hello</b> <i>World!</i>"
}
- TextEdit {
+ Text {
font.pointSize: 24
- textFormat: "PlainText"
+ textFormat: Text.PlainText
text: "<b>Hello</b> <i>World!</i>"
}
}
@@ -437,7 +456,7 @@ void QDeclarativeText::setTextFormat(TextFormat format)
Set this property to elide parts of the text fit to the Text item's width.
The text will only elide if an explicit width has been set.
- This property cannot be used with wrap enabled or with rich text.
+ This property cannot be used with wrapping enabled or with rich text.
Eliding can be \c ElideNone (the default), \c ElideLeft, \c ElideMiddle, or \c ElideRight.
@@ -471,7 +490,7 @@ void QDeclarativeText::geometryChanged(const QRectF &newGeometry,
{
Q_D(QDeclarativeText);
if (newGeometry.width() != oldGeometry.width()) {
- if (d->wrap || d->elideMode != QDeclarativeText::ElideNone) {
+ if (d->wrapMode != QDeclarativeText::NoWrap || d->elideMode != QDeclarativeText::ElideNone) {
//re-elide if needed
if (d->singleline && d->elideMode != QDeclarativeText::ElideNone &&
isComponentComplete() && widthValid()) {
@@ -538,12 +557,9 @@ void QDeclarativeTextPrivate::updateSize()
singleline = false; // richtext can't elide or be optimized for single-line case
doc->setDefaultFont(font);
QTextOption option((Qt::Alignment)int(hAlign | vAlign));
- if (wrap)
- option.setWrapMode(QTextOption::WordWrap);
- else
- option.setWrapMode(QTextOption::NoWrap);
+ option.setWrapMode(QTextOption::WrapMode(wrapMode));
doc->setDefaultTextOption(option);
- if (wrap && !q->heightValid() && q->widthValid())
+ if (wrapMode != QDeclarativeText::NoWrap && !q->heightValid() && q->widthValid())
doc->setTextWidth(q->width());
else
doc->setTextWidth(doc->idealWidth()); // ### Text does not align if width is not set (QTextDoc bug)
@@ -623,9 +639,13 @@ QSize QDeclarativeTextPrivate::setupTextLayout(QTextLayout *layout)
qreal lineWidth = 0;
//set manual width
- if ((wrap || elideMode != QDeclarativeText::ElideNone) && q->widthValid())
+ if ((wrapMode != QDeclarativeText::NoWrap || elideMode != QDeclarativeText::ElideNone) && q->widthValid())
lineWidth = q->width();
+ QTextOption textOption = layout->textOption();
+ textOption.setWrapMode(QTextOption::WrapMode(wrapMode));
+ layout->setTextOption(textOption);
+
layout->beginLayout();
while (1) {
@@ -633,7 +653,7 @@ QSize QDeclarativeTextPrivate::setupTextLayout(QTextLayout *layout)
if (!line.isValid())
break;
- if ((wrap || elideMode != QDeclarativeText::ElideNone) && q->widthValid())
+ if ((wrapMode != QDeclarativeText::NoWrap || elideMode != QDeclarativeText::ElideNone) && q->widthValid())
line.setLineWidth(lineWidth);
}
layout->endLayout();