summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYann Bodson <yann.bodson@nokia.com>2009-07-29 06:53:36 (GMT)
committerYann Bodson <yann.bodson@nokia.com>2009-07-29 06:53:36 (GMT)
commita9b507ccd9392269f1df2522306a9ece3628c6c7 (patch)
tree2746798589151551d9c99a4ce290409fbf63cb9f /src
parent20d9edfa3b7a8a648cfdb59a0e71525912f0a0a8 (diff)
parent26cd689a2356973020b7f4c9d86b2ee71b3ef8fe (diff)
downloadQt-a9b507ccd9392269f1df2522306a9ece3628c6c7.zip
Qt-a9b507ccd9392269f1df2522306a9ece3628c6c7.tar.gz
Qt-a9b507ccd9392269f1df2522306a9ece3628c6c7.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'src')
-rw-r--r--src/declarative/fx/qfxlayouts.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/declarative/fx/qfxlayouts.cpp b/src/declarative/fx/qfxlayouts.cpp
index 0546845..da34b8c 100644
--- a/src/declarative/fx/qfxlayouts.cpp
+++ b/src/declarative/fx/qfxlayouts.cpp
@@ -354,11 +354,14 @@ void QFxBaseLayout::preLayout()
d->_animated.clear();
doLayout();
//Set the layout's size to be the rect containing all children
- //Also set the margin
+ //d->aut determines whether a dimension is sum or max
+ //Also sets the margin
qreal width=0;
qreal height=0;
+ qreal maxWidth=0;
+ qreal maxHeight=0;
foreach(QFxItem *item, d->_items){
- if (item->opacity() == 0.0){
+ if (item->opacity() != 0.0){
if (!d->_animated.contains(item)){
setMovingItem(item);
QPointF p(item->x(), item->y());
@@ -369,6 +372,8 @@ void QFxBaseLayout::preLayout()
item->setPos(p);
setMovingItem(0);
}
+ maxWidth = qMax(maxWidth, item->width());
+ maxHeight = qMax(maxHeight, item->height());
width = qMax(width, item->x() + item->width());
height = qMax(height, item->y() + item->height());
}
@@ -376,14 +381,19 @@ void QFxBaseLayout::preLayout()
width += d->_margin;
height+= d->_margin;
- if (d->aut & Horizontal)
- setWidth(int(width));
- else if (parentItem())
- setImplicitWidth(parentItem()->width());
- if (d->aut & Vertical)
- setHeight(int(height));
- else if (parentItem())
- setImplicitHeight(parentItem()->height());
+ if(d->aut & Both){
+ setImplicitHeight(int(height));
+ setImplicitWidth(int(width));
+ }else if (d->aut & Horizontal){
+ setImplicitWidth(int(width));
+ setImplicitHeight(int(maxHeight));
+ } else if (d->aut & Vertical){
+ setImplicitHeight(int(height));
+ setImplicitWidth(int(maxWidth));
+ }else{
+ setImplicitHeight(int(maxHeight));
+ setImplicitWidth(int(maxWidth));
+ }
setLayoutItem(0);
}
@@ -656,7 +666,6 @@ void QFxVerticalLayout::doLayout()
}
finishApplyTransitions();
setMovingItem(this);
- setHeight(voffset);
setMovingItem(0);
}
@@ -823,7 +832,6 @@ void QFxHorizontalLayout::doLayout()
hoffset += spacing();
}
finishApplyTransitions();
- setWidth(hoffset);
}
QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,GridLayout,QFxGridLayout)