summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWarwick Allison <warwick.allison@nokia.com>2010-04-01 03:39:57 (GMT)
committerWarwick Allison <warwick.allison@nokia.com>2010-04-01 03:39:57 (GMT)
commite890d1d289a299d8e9734b4d96b58fc9c5e0768d (patch)
tree4e5e20852ba3d76c5406b058f25f940dd506124a /src
parente60100c33e9b2b868350e588157de79fd1cb8a7e (diff)
parenta26d7ada2ece592ae9447b4eae95c3add61a34d7 (diff)
downloadQt-e890d1d289a299d8e9734b4d96b58fc9c5e0768d.zip
Qt-e890d1d289a299d8e9734b4d96b58fc9c5e0768d.tar.gz
Qt-e890d1d289a299d8e9734b4d96b58fc9c5e0768d.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7
Diffstat (limited to 'src')
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanchors.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativepositioners.cpp39
-rw-r--r--src/declarative/graphicsitems/qdeclarativepositioners_p.h18
-rw-r--r--src/declarative/graphicsitems/qdeclarativepositioners_p_p.h5
4 files changed, 37 insertions, 29 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativeanchors.cpp b/src/declarative/graphicsitems/qdeclarativeanchors.cpp
index dc1f09d..ffcedda 100644
--- a/src/declarative/graphicsitems/qdeclarativeanchors.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeanchors.cpp
@@ -1059,7 +1059,7 @@ bool QDeclarativeAnchorsPrivate::checkVAnchorValid(QDeclarativeAnchorLine anchor
return true;
}
-#include <moc_qdeclarativeanchors_p.cpp>
-
QT_END_NAMESPACE
+#include <moc_qdeclarativeanchors_p.cpp>
+
diff --git a/src/declarative/graphicsitems/qdeclarativepositioners.cpp b/src/declarative/graphicsitems/qdeclarativepositioners.cpp
index b23b8c9..781e584 100644
--- a/src/declarative/graphicsitems/qdeclarativepositioners.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepositioners.cpp
@@ -237,21 +237,13 @@ void QDeclarativeBasePositioner::prePositioning()
positionedItems.append(*item);
}
}
- doPositioning();
+ QSizeF contentSize;
+ doPositioning(&contentSize);
if(d->addTransition || d->moveTransition)
finishApplyTransitions();
//Set implicit size to the size of its children
- qreal h = 0.0f;
- qreal w = 0.0f;
- for (int i = 0; i < positionedItems.count(); ++i) {
- const PositionedItem &posItem = positionedItems.at(i);
- if (posItem.isVisible) {
- h = qMax(h, posItem.item->y() + posItem.item->height());
- w = qMax(w, posItem.item->x() + posItem.item->width());
- }
- }
- setImplicitHeight(h);
- setImplicitWidth(w);
+ setImplicitHeight(contentSize.height());
+ setImplicitWidth(contentSize.width());
}
void QDeclarativeBasePositioner::positionX(int x, const PositionedItem &target)
@@ -423,7 +415,7 @@ static inline bool isInvisible(QDeclarativeItem *child)
return child->opacity() == 0.0 || !child->isVisible() || !child->width() || !child->height();
}
-void QDeclarativeColumn::doPositioning()
+void QDeclarativeColumn::doPositioning(QSizeF *contentSize)
{
int voffset = 0;
@@ -435,9 +427,13 @@ void QDeclarativeColumn::doPositioning()
if(child.item->y() != voffset)
positionY(voffset, child);
+ contentSize->setWidth(qMax(contentSize->width(), child.item->width()));
+
voffset += child.item->height();
voffset += spacing();
}
+
+ contentSize->setHeight(voffset - spacing());
}
/*!
@@ -534,7 +530,7 @@ QDeclarativeRow::QDeclarativeRow(QDeclarativeItem *parent)
{
}
-void QDeclarativeRow::doPositioning()
+void QDeclarativeRow::doPositioning(QSizeF *contentSize)
{
int hoffset = 0;
@@ -546,9 +542,13 @@ void QDeclarativeRow::doPositioning()
if(child.item->x() != hoffset)
positionX(hoffset, child);
+ contentSize->setHeight(qMax(contentSize->height(), child.item->height()));
+
hoffset += child.item->width();
hoffset += spacing();
}
+
+ contentSize->setWidth(hoffset - spacing());
}
@@ -698,7 +698,7 @@ void QDeclarativeGrid::setRows(const int rows)
emit rowsChanged();
}
-void QDeclarativeGrid::doPositioning()
+void QDeclarativeGrid::doPositioning(QSizeF *contentSize)
{
int c=_columns,r=_rows;//Actual number of rows/columns
int numVisible = positionedItems.count();
@@ -745,6 +745,10 @@ void QDeclarativeGrid::doPositioning()
positionX(xoffset, child);
positionY(yoffset, child);
}
+
+ contentSize->setWidth(qMax(contentSize->width(), xoffset + child.item->width()));
+ contentSize->setHeight(yoffset + maxRowHeight[curRow]);
+
xoffset+=maxColWidth[curCol]+spacing();
curCol++;
curCol%=c;
@@ -854,7 +858,7 @@ void QDeclarativeFlow::setFlow(Flow flow)
}
}
-void QDeclarativeFlow::doPositioning()
+void QDeclarativeFlow::doPositioning(QSizeF *contentSize)
{
Q_D(QDeclarativeFlow);
@@ -886,6 +890,9 @@ void QDeclarativeFlow::doPositioning()
positionY(voffset, child);
}
+ contentSize->setWidth(qMax(contentSize->width(), hoffset + child.item->width()));
+ contentSize->setHeight(qMax(contentSize->height(), voffset + child.item->height()));
+
if (d->flow == LeftToRight) {
hoffset += child.item->width();
hoffset += spacing();
diff --git a/src/declarative/graphicsitems/qdeclarativepositioners_p.h b/src/declarative/graphicsitems/qdeclarativepositioners_p.h
index f38847c..c4414d1 100644
--- a/src/declarative/graphicsitems/qdeclarativepositioners_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepositioners_p.h
@@ -90,10 +90,10 @@ Q_SIGNALS:
void addChanged();
protected Q_SLOTS:
- virtual void doPositioning()=0;
void prePositioning();
protected:
+ virtual void doPositioning(QSizeF *contentSize)=0;
struct PositionedItem {
PositionedItem(QDeclarativeItem *i) : item(i), isNew(false), isVisible(true) {}
bool operator==(const PositionedItem &other) const { return other.item == item; }
@@ -116,8 +116,8 @@ class Q_DECLARATIVE_EXPORT QDeclarativeColumn : public QDeclarativeBasePositione
Q_OBJECT
public:
QDeclarativeColumn(QDeclarativeItem *parent=0);
-protected Q_SLOTS:
- virtual void doPositioning();
+protected:
+ virtual void doPositioning(QSizeF *contentSize);
private:
Q_DISABLE_COPY(QDeclarativeColumn)
};
@@ -127,8 +127,8 @@ class Q_DECLARATIVE_EXPORT QDeclarativeRow: public QDeclarativeBasePositioner
Q_OBJECT
public:
QDeclarativeRow(QDeclarativeItem *parent=0);
-protected Q_SLOTS:
- virtual void doPositioning();
+protected:
+ virtual void doPositioning(QSizeF *contentSize);
private:
Q_DISABLE_COPY(QDeclarativeRow)
};
@@ -151,8 +151,8 @@ Q_SIGNALS:
void rowsChanged();
void columnsChanged();
-protected Q_SLOTS:
- virtual void doPositioning();
+protected:
+ virtual void doPositioning(QSizeF *contentSize);
private:
int _rows;
@@ -176,8 +176,8 @@ public:
Q_SIGNALS:
void flowChanged();
-protected Q_SLOTS:
- virtual void doPositioning();
+protected:
+ virtual void doPositioning(QSizeF *contentSize);
protected:
QDeclarativeFlow(QDeclarativeFlowPrivate &dd, QDeclarativeItem *parent);
diff --git a/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h b/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h
index 3a1edee..7880e3e 100644
--- a/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h
@@ -73,8 +73,8 @@ class QDeclarativeBasePositionerPrivate : public QDeclarativeItemPrivate, public
public:
QDeclarativeBasePositionerPrivate()
- : spacing(0), type(QDeclarativeBasePositioner::None), moveTransition(0), addTransition(0),
- queuedPositioning(false)
+ : spacing(0), type(QDeclarativeBasePositioner::None)
+ , moveTransition(0), addTransition(0), queuedPositioning(false)
{
}
@@ -84,6 +84,7 @@ public:
}
int spacing;
+
QDeclarativeBasePositioner::PositionerType type;
QDeclarativeTransition *moveTransition;
QDeclarativeTransition *addTransition;