From: Gunnar Sletta Date: Mon, 12 Sep 2011 06:12:58 +0000 (+0200) Subject: Merge branch 'master' into refactor X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=d77218522eb480c8d528de18049cd7b604cdeb2a;p=konrad%2Fqtdeclarative.git Merge branch 'master' into refactor Conflicts: examples/declarative/cppextensions/qwidgets/qwidgets.pro examples/declarative/minehunt/main.cpp examples/declarative/minehunt/minehunt.pro src/declarative/items/context2d/qsgcontext2d.cpp src/declarative/items/qsgflickable.cpp src/declarative/items/qsgtextedit.cpp src/declarative/items/qsgtextinput.cpp src/declarative/particles/qsgangleddirection.cpp src/declarative/particles/qsgcumulativedirection.cpp src/declarative/particles/qsgcumulativedirection_p.h src/declarative/particles/qsgfollowemitter.cpp src/declarative/particles/qsgmodelparticle.cpp src/declarative/particles/qsgparticlesystem.cpp src/qtquick1/util/qdeclarativeview.h tests/auto/declarative/examples/examples.pro tests/auto/declarative/qsgfocusscope/tst_qsgfocusscope.cpp Change-Id: Ib4be2a5e742dee1a399d73da97161736f77448e5 --- d77218522eb480c8d528de18049cd7b604cdeb2a diff --cc examples/declarative/minehunt/main.cpp index 752e470,1f77efe..2ae2cc0 --- a/examples/declarative/minehunt/main.cpp +++ b/examples/declarative/minehunt/main.cpp @@@ -39,8 -39,8 +39,8 @@@ ** ****************************************************************************/ - #include - #include -#include ++#include + #include #include #include @@@ -48,24 -48,17 +48,17 @@@ int main(int argc, char *argv[]) { -- QApplication app(argc, argv); - QDeclarativeView canvas; - ++ QGuiApplication app(argc, argv); + QSGView canvas; + qmlRegisterType(); MinehuntGame* game = new MinehuntGame(); - - #ifdef Q_OS_SYMBIAN - canvas.setResizeMode(QDeclarativeView::SizeRootObjectToView); - #endif - canvas.engine()->rootContext()->setContextObject(game); + + canvas.setResizeMode(QSGView::SizeRootObjectToView); + canvas.engine()->rootContext()->setContextObject(game); canvas.setSource(QString("qrc:minehunt.qml")); QObject::connect(canvas.engine(), SIGNAL(quit()), &app, SLOT(quit())); - - #ifdef Q_OS_SYMBIAN - canvas.showFullScreen(); - #else - canvas.setGeometry(QRect(100, 100, 450, 450)); + canvas.show(); - #endif return app.exec(); } diff --cc src/declarative/items/context2d/qsgcontext2d.cpp index 7a8465a,a2a57cb..e5f2eca --- a/src/declarative/items/context2d/qsgcontext2d.cpp +++ b/src/declarative/items/context2d/qsgcontext2d.cpp @@@ -43,11 -43,14 +43,12 @@@ #include "qsgcontext2d_p_p.h" #include "private/qsgadaptationlayer_p.h" #include "qsgcanvasitem_p.h" -#include +#include #include #include "private/qsgcontext_p.h" + #include "private/qdeclarativesvgparser_p.h" -#include -#include -#include +#include #include #include #include "qdeclarativepixmapcache_p.h" @@@ -76,7 -79,10 +77,8 @@@ void copy_vector(QVector* dst, cons } } -// Note, this is exported but in a private header as qtopengl depends on it. -// But it really should be considered private API -void qt_blurImage(QPainter *p, QImage &blurImage, qreal radius, bool quality, bool alphaOnly, int transposed = 0); -void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed = 0); +static bool parsePathDataFast(const QString &dataStr, QPainterPath &path); ++ #define DEGREES(t) ((t) * 180.0 / Q_PI) #define qClamp(val, min, max) qMin(qMax(val, min), max) diff --cc src/declarative/items/qsgflickable.cpp index 21474be,962eb96..e207e4b --- a/src/declarative/items/qsgflickable.cpp +++ b/src/declarative/items/qsgflickable.cpp @@@ -778,7 -778,22 +779,22 @@@ void QSGFlickable::setFlickableDirectio } } + bool QSGFlickable::pixelAligned() const + { + Q_D(const QSGFlickable); + return d->pixelAligned; + } + + void QSGFlickable::setPixelAligned(bool align) + { + Q_D(QSGFlickable); + if (align != d->pixelAligned) { + d->pixelAligned = align; + emit pixelAlignedChanged(); + } + } + -void QSGFlickablePrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event) +void QSGFlickablePrivate::handleMousePressEvent(QMouseEvent *event) { Q_Q(QSGFlickable); if (interactive && timeline.isActive() diff --cc src/declarative/items/qsgitemsmodule.cpp index 0d147d3,8eb7cb3..2e24155 --- a/src/declarative/items/qsgitemsmodule.cpp +++ b/src/declarative/items/qsgitemsmodule.cpp @@@ -125,9 -126,11 +126,12 @@@ static void qt_sgitems_defineModule(con qmlRegisterType(uri,major,minor,"PathLine"); qmlRegisterType(uri,major,minor,"PathPercent"); qmlRegisterType(uri,major,minor,"PathQuad"); + qmlRegisterType("QtQuick",2,0,"PathCurve"); + qmlRegisterType("QtQuick",2,0,"PathArc"); + qmlRegisterType("QtQuick",2,0,"PathSvg"); qmlRegisterType(uri,major,minor,"PathView"); - qmlRegisterUncreatableType(uri,major,minor,"Positioner","Positioner is an abstract type that is only available as an attached property."); + qmlRegisterUncreatableType(uri,major,minor,"Positioner", + QStringLiteral("Positioner is an abstract type that is only available as an attached property.")); #ifndef QT_NO_VALIDATOR qmlRegisterType(uri,major,minor,"IntValidator"); qmlRegisterType(uri,major,minor,"DoubleValidator"); diff --cc src/declarative/items/qsgtextinput.cpp index 42105cf,951d765..ab6be66 --- a/src/declarative/items/qsgtextinput.cpp +++ b/src/declarative/items/qsgtextinput.cpp @@@ -403,7 -405,11 +403,9 @@@ bool QSGTextInputPrivate::determineHori if (hAlignImplicit) { // if no explicit alignment has been set, follow the natural layout direction of the text QString text = control->text(); + if (text.isEmpty()) + text = control->preeditAreaText(); - bool isRightToLeft = text.isEmpty() - ? QApplication::keyboardInputDirection() == Qt::RightToLeft - : text.isRightToLeft(); + bool isRightToLeft = text.isEmpty() ? QGuiApplication::keyboardInputDirection() == Qt::RightToLeft : text.isRightToLeft(); return setHAlign(isRightToLeft ? QSGTextInput::AlignRight : QSGTextInput::AlignLeft); } return false; diff --cc src/declarative/particles/qsgcustomparticle.cpp index eb6f45e,6c95fe6..e1999f2 --- a/src/declarative/particles/qsgcustomparticle.cpp +++ b/src/declarative/particles/qsgcustomparticle.cpp @@@ -532,14 -522,15 +536,15 @@@ void QSGCustomParticle::buildData( { if (!m_rootNode) return; + const QByteArray timestampName("qt_Timestamp"); QVector > values; - QVector > > textures; - const QVector > > &oldTextures = m_material.textureProviders(); + QVector > textures; + const QVector > &oldTextures = m_material->textureProviders(); for (int i = 0; i < oldTextures.size(); ++i) { - QSGTextureProvider *oldSource = QSGTextureProvider::from(oldTextures.at(i).second); - if (oldSource && oldSource->textureChangedSignal()) + QSGTextureProvider *t = oldTextures.at(i).second; + if (t) foreach (QSGShaderEffectNode* node, m_nodes) - disconnect(oldTextures.at(i).second, oldSource->textureChangedSignal(), node, SLOT(markDirtyTexture())); + disconnect(t, SIGNAL(textureChanged()), node, SLOT(markDirtyTexture())); } for (int i = 0; i < m_sources.size(); ++i) { const SourceData &source = m_sources.at(i); diff --cc src/declarative/particles/qsgimageparticle_p.h index 5c684f8,01eacba..51b3c37 --- a/src/declarative/particles/qsgimageparticle_p.h +++ b/src/declarative/particles/qsgimageparticle_p.h @@@ -42,10 -42,9 +42,10 @@@ #ifndef ULTRAPARTICLE_H #define ULTRAPARTICLE_H #include "qsgparticlepainter_p.h" - #include "qsgstochasticdirection_p.h" + #include "qsgdirection_p.h" #include #include +#include QT_BEGIN_HEADER diff --cc src/qtquick1/util/qdeclarativeview.h index 96cb4ed,aafb464..4249d26 --- a/src/qtquick1/util/qdeclarativeview.h +++ b/src/qtquick1/util/qdeclarativeview.h @@@ -44,9 -44,10 +44,10 @@@ #include #include -#include -#include -#include +#include +#include +#include + #include QT_BEGIN_HEADER diff --cc tests/auto/declarative/qsgfocusscope/tst_qsgfocusscope.cpp index 83da0ba,c7dea4c..a5e998d --- a/tests/auto/declarative/qsgfocusscope/tst_qsgfocusscope.cpp +++ b/tests/auto/declarative/qsgfocusscope/tst_qsgfocusscope.cpp @@@ -124,15 -127,11 +124,12 @@@ void tst_qsgfocusscope::basic( QVERIFY(item3 != 0); view->show(); - qApp->setActiveWindow(view); + view->requestActivateWindow(); + qApp->processEvents(); - #ifdef Q_WS_X11 - // to be safe and avoid failing setFocus with window managers - qt_x11_wait_for_window_manager(view); - #endif + QTest::qWaitForWindowShown(view); - QTRY_VERIFY(view->hasFocus()); + QVERIFY(view->isTopLevel()); QVERIFY(item0->hasActiveFocus() == true); QVERIFY(item1->hasActiveFocus() == true); QVERIFY(item2->hasActiveFocus() == false); @@@ -170,15 -169,11 +167,12 @@@ void tst_qsgfocusscope::nested( QVERIFY(item5 != 0); view->show(); - qApp->setActiveWindow(view); + view->requestActivateWindow(); + qApp->processEvents(); - #ifdef Q_WS_X11 - // to be safe and avoid failing setFocus with window managers - qt_x11_wait_for_window_manager(view); - #endif + QTest::qWaitForWindowShown(view); - QTRY_VERIFY(view->hasFocus()); + QVERIFY(view->windowState() == Qt::WindowActive); QVERIFY(item1->hasActiveFocus() == true); QVERIFY(item2->hasActiveFocus() == true); @@@ -203,15 -198,11 +197,12 @@@ void tst_qsgfocusscope::noFocus( QVERIFY(item3 != 0); view->show(); - qApp->setActiveWindow(view); + view->requestActivateWindow(); + qApp->processEvents(); - #ifdef Q_WS_X11 - // to be safe and avoid failing setFocus with window managers - qt_x11_wait_for_window_manager(view); - #endif + QTest::qWaitForWindowShown(view); - QTRY_VERIFY(view->hasFocus()); + QVERIFY(view->windowState() == Qt::WindowActive); QVERIFY(item0->hasActiveFocus() == false); QVERIFY(item1->hasActiveFocus() == false); QVERIFY(item2->hasActiveFocus() == false); @@@ -247,15 -238,11 +238,12 @@@ void tst_qsgfocusscope::textEdit( QVERIFY(item3 != 0); view->show(); - qApp->setActiveWindow(view); + view->requestActivateWindow(); + qApp->processEvents(); - #ifdef Q_WS_X11 - // to be safe and avoid failing setFocus with window managers - qt_x11_wait_for_window_manager(view); - #endif + QTest::qWaitForWindowShown(view); - QTRY_VERIFY(view->hasFocus()); + QVERIFY(view->windowState() == Qt::WindowActive); QVERIFY(item0->hasActiveFocus() == true); QVERIFY(item1->hasActiveFocus() == true); QVERIFY(item2->hasActiveFocus() == false); @@@ -305,15 -292,11 +293,12 @@@ void tst_qsgfocusscope::forceFocus( QVERIFY(item5 != 0); view->show(); - qApp->setActiveWindow(view); + view->requestActivateWindow(); + qApp->processEvents(); - #ifdef Q_WS_X11 - // to be safe and avoid failing setFocus with window managers - qt_x11_wait_for_window_manager(view); - #endif + QTest::qWaitForWindowShown(view); - QTRY_VERIFY(view->hasFocus()); + QVERIFY(view->windowState() == Qt::WindowActive); QVERIFY(item0->hasActiveFocus() == true); QVERIFY(item1->hasActiveFocus() == true); QVERIFY(item2->hasActiveFocus() == false); @@@ -379,13 -362,9 +364,10 @@@ void tst_qsgfocusscope::signalEmission( QVERIFY(item4 != 0); view->show(); - qApp->setActiveWindow(view); + view->requestActivateWindow(); + qApp->processEvents(); - #ifdef Q_WS_X11 - // to be safe and avoid failing setFocus with window managers - qt_x11_wait_for_window_manager(view); - #endif + QTest::qWaitForWindowShown(view); QVariant blue(QColor("blue")); QVariant red(QColor("red")); @@@ -431,15 -410,11 +413,12 @@@ void tst_qsgfocusscope::qtBug13380( view->show(); QVERIFY(view->rootObject()); - qApp->setActiveWindow(view); + view->requestActivateWindow(); + qApp->processEvents(); - #ifdef Q_WS_X11 - // to be safe and avoid failing setFocus with window managers - qt_x11_wait_for_window_manager(view); - #endif + QTest::qWaitForWindowShown(view); - QTRY_VERIFY(view->hasFocus()); + QVERIFY(view->windowState() == Qt::WindowActive); QVERIFY(view->rootObject()->property("noFocus").toBool()); view->rootObject()->setProperty("showRect", true); @@@ -610,16 -585,12 +589,13 @@@ void tst_qsgfocusscope::canvasFocus( QCOMPARE(item2->hasActiveFocus(), false); view->show(); - qApp->setActiveWindow(view); + view->requestActivateWindow(); + qApp->processEvents(); - #ifdef Q_WS_X11 - // to be safe and avoid failing setFocus with window managers - qt_x11_wait_for_window_manager(view); - #endif + QTest::qWaitForWindowShown(view); // Now the canvas has focus, active focus given to item1 - QTRY_COMPARE(view->hasFocus(), true); + QTRY_COMPARE((view->windowState() == Qt::WindowActive), true); QCOMPARE(rootItem->hasFocus(), true); QCOMPARE(rootItem->hasActiveFocus(), true); QCOMPARE(scope1->hasFocus(), true); diff --cc tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index 413f04d,eb08b2a..633ab17 --- a/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@@ -50,8 -50,10 +50,10 @@@ #include #include #include -#include +#include + #include "qplatformdefs.h" + #ifdef Q_OS_SYMBIAN // In Symbian OS test data is located in applications private dir #define SRCDIR "."