diff options
author | Bea Lam <bea.lam@nokia.com> | 2010-02-25 23:35:43 (GMT) |
---|---|---|
committer | Bea Lam <bea.lam@nokia.com> | 2010-02-25 23:35:43 (GMT) |
commit | 31c8459d65aaca9131a8aa32e29e0591ed7892cb (patch) | |
tree | 5339f4b4291c17a9a765a70990ec3c12f4055de7 | |
parent | 5c82031a7357f4f3d100be30c0bfe4e878712829 (diff) | |
parent | 61811d9b43828c1cc53c773fd66b78313f4fb942 (diff) | |
download | Qt-31c8459d65aaca9131a8aa32e29e0591ed7892cb.zip Qt-31c8459d65aaca9131a8aa32e29e0591ed7892cb.tar.gz Qt-31c8459d65aaca9131a8aa32e29e0591ed7892cb.tar.bz2 |
Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-qml
Conflicts:
src/declarative/qml/qdeclarativeproperty.cpp
150 files changed, 2768 insertions, 2175 deletions
diff --git a/src/multimedia/qml/qdeclarative.h b/config.tests/x11/xvideo/xvideo.cpp index f4579f4..515dc00 100644 --- a/src/multimedia/qml/qdeclarative.h +++ b/config.tests/x11/xvideo/xvideo.cpp @@ -4,7 +4,7 @@ ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** -** This file is part of the QtMultimedia module of the Qt Toolkit. +** This file is part of the FOO module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage @@ -39,24 +39,14 @@ ** ****************************************************************************/ -#ifndef QTMULTIMEDIA_QML_H -#define QTMULTIMEDIA_QML_H +#include <X11/Xlib.h> +#include <X11/extensions/Xv.h> +#include <X11/extensions/Xvlib.h> -#include <QtCore/qglobal.h> - -QT_BEGIN_HEADER -QT_BEGIN_NAMESPACE - -class QDeclarativeEngine; - -QT_MODULE(Multimedia) - -namespace QtMultimedia +int main(int argc, char** argv) { -extern void Q_MULTIMEDIA_EXPORT qRegisterQmlElements(QDeclarativeEngine *engine, const char *uri); + unsigned int count = 0; + XvAdaptorInfo *adaptors = 0; + XvQueryAdaptors(0, 0, &count, &adaptors); + return 0; } - -QT_END_NAMESPACE -QT_END_HEADER - -#endif // ifndef QTMULTIMEDIA_QML_H diff --git a/config.tests/x11/xvideo/xvideo.pro b/config.tests/x11/xvideo/xvideo.pro new file mode 100644 index 0000000..d4c63a0 --- /dev/null +++ b/config.tests/x11/xvideo/xvideo.pro @@ -0,0 +1,4 @@ +CONFIG += x11 +CONFIG -= qt +SOURCES = xvideo.cpp +LIBS += -lXv @@ -640,6 +640,7 @@ CFG_SHARED=yes CFG_SM=auto CFG_XSHAPE=auto CFG_XSYNC=auto +CFG_XVIDEO=auto CFG_XINERAMA=runtime CFG_XFIXES=runtime CFG_ZLIB=auto @@ -925,7 +926,8 @@ while [ "$#" -gt 0 ]; do VAL=no ;; #Qt style yes options - -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-mediaservice|-audio-backend|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config) + + -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xvideo|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-mediaservice|-audio-backend|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config) VAR=`echo $1 | sed "s,^-\(.*\),\1,"` VAL=yes ;; @@ -1540,6 +1542,13 @@ while [ "$#" -gt 0 ]; do UNKNOWN_OPT=yes fi ;; + xvideo) + if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then + CFG_XVIDEO="$VAL" + else + UNKNOWN_OPT=yes + fi + ;; xsync) if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then CFG_XSYNC="$VAL" @@ -3655,6 +3664,13 @@ if [ "$PLATFORM_X11" = "yes" ]; then SHY="*" SHN=" " fi + if [ "$CFG_XVIDEO" = "no" ]; then + XVY=" " + XVN="*" + else + XVY="*" + XVN=" " + fi if [ "$CFG_XINERAMA" = "no" ]; then XAY=" " XAN="*" @@ -3758,6 +3774,10 @@ Qt/X11 only: $SHY -xshape ............ Compile XShape support. Requires X11/extensions/shape.h. + $XVN -no-xvideo ......... Do not compile XVideo support. + $XVY -xvideo ............ Compile XVideo support. + Requires X11/extensions/Xv.h & Xvlib.h. + $SHN -no-xsync .......... Do not compile XSync support. $SHY -xsync ............. Compile XSync support. Requires X11/extensions/sync.h. @@ -5041,32 +5061,33 @@ if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" ]; then fi fi - if [ "$CFG_PHONON" != "no" ]; then - if [ "$CFG_PHONON_BACKEND" != "no" ]; then - if [ "$CFG_GLIB" = "yes" -a "$CFG_GSTREAMER" != "no" ]; then - if [ -n "$PKG_CONFIG" ]; then - QT_CFLAGS_GSTREAMER=`$PKG_CONFIG --cflags gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null` - QT_LIBS_GSTREAMER=`$PKG_CONFIG --libs gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null` - fi - if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/gstreamer "GStreamer" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_GSTREAMER $QT_LIBS_GSTREAMER $X11TESTS_FLAGS; then - CFG_GSTREAMER=yes - QMakeVar set QT_CFLAGS_GSTREAMER "$QT_CFLAGS_GSTREAMER" - QMakeVar set QT_LIBS_GSTREAMER "$QT_LIBS_GSTREAMER" - else - if [ "$CFG_GSTREAMER" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then - echo "Gstreamer support cannot be enabled due to functionality tests!" - echo " Turn on verbose messaging (-v) to $0 to see the final report." - echo " If you believe this message is in error you may use the continue" - echo " switch (-continue) to $0 to continue." - exit 101 - else - CFG_GSTREAMER=no - fi - fi - elif [ "$CFG_GLIB" = "no" ]; then + # Auto-detect GStreamer support (needed for both Phonon & QtMultimedia) + if [ "$CFG_GLIB" = "yes" -a "$CFG_GSTREAMER" != "no" ]; then + if [ -n "$PKG_CONFIG" ]; then + QT_CFLAGS_GSTREAMER=`$PKG_CONFIG --cflags gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null` + QT_LIBS_GSTREAMER=`$PKG_CONFIG --libs gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null` + fi + if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/gstreamer "GStreamer" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_GSTREAMER $QT_LIBS_GSTREAMER $X11TESTS_FLAGS; then + CFG_GSTREAMER=yes + QMakeVar set QT_CFLAGS_GSTREAMER "$QT_CFLAGS_GSTREAMER" + QMakeVar set QT_LIBS_GSTREAMER "$QT_LIBS_GSTREAMER" + else + if [ "$CFG_GSTREAMER" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then + echo "Gstreamer support cannot be enabled due to functionality tests!" + echo " Turn on verbose messaging (-v) to $0 to see the final report." + echo " If you believe this message is in error you may use the continue" + echo " switch (-continue) to $0 to continue." + exit 101 + else CFG_GSTREAMER=no fi + fi + elif [ "$CFG_GLIB" = "no" ]; then + CFG_GSTREAMER=no + fi + if [ "$CFG_PHONON" != "no" ]; then + if [ "$CFG_PHONON_BACKEND" != "no" ]; then if [ "$CFG_GSTREAMER" = "yes" ]; then CFG_PHONON=yes else @@ -5340,6 +5361,23 @@ if [ "$PLATFORM_X11" = "yes" ]; then fi fi + # auto-detect XVideo support + if [ "$CFG_XVIDEO" != "no" ]; then + if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/xvideo "XVideo" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then + CFG_XVIDEO=yes + else + if [ "$CFG_XVIDEO" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then + echo "XVideo support cannot be enabled due to functionality tests!" + echo " Turn on verbose messaging (-v) to $0 to see the final report." + echo " If you believe this message is in error you may use the continue" + echo " switch (-continue) to $0 to continue." + exit 101 + else + CFG_XVIDEO=no + fi + fi + fi + # auto-detect XSync support if [ "$CFG_XSYNC" != "no" ]; then if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/xsync "XSync" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then @@ -6297,6 +6335,9 @@ if [ "$PLATFORM_X11" = "yes" ]; then if [ "$CFG_XSHAPE" = "yes" ]; then QT_CONFIG="$QT_CONFIG xshape" fi + if [ "$CFG_XVIDEO" = "yes" ]; then + QT_CONFIG="$QT_CONFIG xvideo" + fi if [ "$CFG_XSYNC" = "yes" ]; then QT_CONFIG="$QT_CONFIG xsync" fi @@ -7101,6 +7142,7 @@ fi [ "$CFG_XRENDER" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XRENDER" [ "$CFG_MITSHM" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_MITSHM" [ "$CFG_XSHAPE" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SHAPE" +[ "$CFG_XVIDEO" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XVIDEO" [ "$CFG_XSYNC" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XSYNC" [ "$CFG_XINPUT" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XINPUT QT_NO_TABLET" @@ -7581,6 +7623,7 @@ fi if [ "$PLATFORM_X11" = "yes" ]; then echo "NAS sound support ...... $CFG_NAS" echo "XShape support ......... $CFG_XSHAPE" + echo "XVideo support ......... $CFG_XVIDEO" echo "XSync support .......... $CFG_XSYNC" echo "Xinerama support ....... $CFG_XINERAMA" echo "Xcursor support ........ $CFG_XCURSOR" diff --git a/doc/src/legal/3rdparty.qdoc b/doc/src/legal/3rdparty.qdoc index af3fc93..d608038 100644 --- a/doc/src/legal/3rdparty.qdoc +++ b/doc/src/legal/3rdparty.qdoc @@ -305,17 +305,17 @@ \hr - Copyright (c) 1987, 1993, 1994 + Copyright (c) 1987, 1993, 1994\br The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions - are met: + are met:\br 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. + notice, this list of conditions and the following disclaimer.\br 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. + documentation and/or other materials provided with the distribution.\br 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. @@ -334,22 +334,22 @@ \hr - Copyright (C) 1988-1997 Sam Leffler - Copyright (C) 1991-1997 Silicon Graphics, Inc. - Copyright (c) Joris Van Damme <info@awaresystems.be> - Copyright (c) AWare Systems <http://www.awaresystems.be/> - Portions Copyright (C) 1985-1987, 1990 Regents of the University of California - Portions Copyright (C) 1990, 1991 Digital Equipment Corporation - Portions Copyright (C) 1990 Sun Microsystems, Inc. - Portions Copyright (C) 1990, 1995 Frank D. Cringle - Portions Copyright (C) 1996 BancTec AB - Portions Copyright (C) 1996 Mike Johnson - Portions Copyright (C) 1996 Pixar - Portions Copyright (C) 1997 Greg Ward Larson - Portions Copyright (C) 2000 Frank Warmerdam - Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu> - Copyright (c( 1996 USAF Phillips Laboratory - Additions (c) Richard Nolde 2006-2009 + Copyright (C) 1988-1997 Sam Leffler\br + Copyright (C) 1991-1997 Silicon Graphics, Inc.\br + Copyright (c) Joris Van Damme <info@awaresystems.be>\br + Copyright (c) AWare Systems <http://www.awaresystems.be/>\br + Portions Copyright (C) 1985-1987, 1990 Regents of the University of California\br + Portions Copyright (C) 1990, 1991 Digital Equipment Corporation\br + Portions Copyright (C) 1990 Sun Microsystems, Inc.\br + Portions Copyright (C) 1990, 1995 Frank D. Cringle\br + Portions Copyright (C) 1996 BancTec AB\br + Portions Copyright (C) 1996 Mike Johnson\br + Portions Copyright (C) 1996 Pixar\br + Portions Copyright (C) 1997 Greg Ward Larson\br + Portions Copyright (C) 2000 Frank Warmerdam\br + Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>\br + Copyright (c( 1996 USAF Phillips Laboratory\br + Additions (c) Richard Nolde 2006-2009 Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided @@ -372,7 +372,7 @@ \hr - Copyright (c) 1985, 1986 The Regents of the University of California. + Copyright (c) 1985, 1986 The Regents of the University of California.\br All rights reserved. This code is derived from software contributed to Berkeley by @@ -393,7 +393,7 @@ \hr - Copyright (c) 1996-1997 Sam Leffler + Copyright (c) 1996-1997 Sam Leffler\br Copyright (c) 1996 Pixar Permission to use, copy, modify, distribute, and sell this software and diff --git a/examples/declarative/plugins/plugin.cpp b/examples/declarative/plugins/plugin.cpp index f6385d0..741f68a 100644 --- a/examples/declarative/plugins/plugin.cpp +++ b/examples/declarative/plugins/plugin.cpp @@ -144,11 +144,10 @@ class QExampleQmlPlugin : public QDeclarativeExtensionPlugin { Q_OBJECT public: - void initialize(QDeclarativeEngine *engine, const char *uri) + void registerTypes(const char *uri) { - Q_UNUSED(engine); Q_ASSERT(uri == QLatin1String("com.nokia.TimeExample")); - qmlRegisterType<Time>(uri, 1, 0, "Time", "Time"); + qmlRegisterType<Time>(uri, 1, 0, "Time"); } }; diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp index 1e717cb..abe15c8 100644 --- a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp +++ b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp @@ -241,7 +241,7 @@ NEVER_INLINE CollectorBlock* Heap::allocateBlock() #elif PLATFORM(WINCE) void* address = VirtualAlloc(NULL, BLOCK_SIZE, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); #elif PLATFORM(WIN_OS) -#if COMPILER(MINGW) +#if COMPILER(MINGW) && !PLATFORM(X86_64) void* address = __mingw_aligned_malloc(BLOCK_SIZE, BLOCK_SIZE); #else void* address = _aligned_malloc(BLOCK_SIZE, BLOCK_SIZE); @@ -327,7 +327,7 @@ NEVER_INLINE void Heap::freeBlock(CollectorBlock* block) #elif PLATFORM(WINCE) VirtualFree(block, 0, MEM_RELEASE); #elif PLATFORM(WIN_OS) -#if COMPILER(MINGW) +#if COMPILER(MINGW) && !PLATFORM(X86_64) __mingw_aligned_free(block); #else _aligned_free(block); @@ -617,7 +617,7 @@ static inline void* currentThreadStackBase() MOV pTib, EAX } return static_cast<void*>(pTib->StackBase); -#elif PLATFORM(WIN_OS) && PLATFORM(X86_64) && COMPILER(MSVC) +#elif PLATFORM(WIN_OS) && PLATFORM(X86_64) && (COMPILER(MSVC) ||COMPILER(GCC)) PNT_TIB64 pTib = reinterpret_cast<PNT_TIB64>(NtCurrentTeb()); return reinterpret_cast<void*>(pTib->StackBase); #elif PLATFORM(WIN_OS) && PLATFORM(X86) && COMPILER(GCC) diff --git a/src/3rdparty/libpng/png.h b/src/3rdparty/libpng/png.h index 14e3416..5ea2b0d 100644 --- a/src/3rdparty/libpng/png.h +++ b/src/3rdparty/libpng/png.h @@ -386,7 +386,7 @@ #include "zlib.h" #endif -#ifdef AIX +#ifdef _AIX #define jmpbuf __jmpbuf #endif diff --git a/src/3rdparty/libpng/pngconf.h b/src/3rdparty/libpng/pngconf.h index 5d202db..1f8bef8 100644 --- a/src/3rdparty/libpng/pngconf.h +++ b/src/3rdparty/libpng/pngconf.h @@ -1379,7 +1379,7 @@ typedef char FAR * FAR * FAR * png_charppp; /* memory model/platform independent fns */ #ifndef PNG_ABORT -# ifdef _WINDOWS_ +# if defined(_WINDOWS_) || defined(_WIN32_WCE) # define PNG_ABORT() ExitProcess(0) # else # define PNG_ABORT() abort() diff --git a/src/3rdparty/libpng/pngpriv.h b/src/3rdparty/libpng/pngpriv.h index 13c2b3f..87a4ba6 100644 --- a/src/3rdparty/libpng/pngpriv.h +++ b/src/3rdparty/libpng/pngpriv.h @@ -74,7 +74,9 @@ #if defined(WIN32) || defined(_Windows) || defined(_WINDOWS) || \ defined(_WIN32) || defined(__WIN32__) -# include <windows.h> /* defines _WINDOWS_ macro */ +# if !defined(__SYMBIAN32__) +# include <windows.h> /* defines _WINDOWS_ macro */ +# endif /* I have no idea why is this necessary... */ # ifdef _MSC_VER # include <malloc.h> diff --git a/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp b/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp index 79fc51e..5c87fe6 100644 --- a/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp +++ b/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp @@ -368,7 +368,7 @@ static inline void handleElementNamespaces(Element* newElement, const QXmlStream for (int i = 0; i < ns.count(); ++i) { const QXmlStreamNamespaceDeclaration &decl = ns[i]; String namespaceURI = decl.namespaceUri(); - String namespaceQName = decl.prefix().isEmpty() ? String("xmlns") : String("xmlns:") + decl.prefix(); + String namespaceQName = decl.prefix().isEmpty() ? String("xmlns") : String("xmlns:") + String(decl.prefix()); newElement->setAttributeNS("http://www.w3.org/2000/xmlns/", namespaceQName, namespaceURI, ec); if (ec) // exception setting attributes return; diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp index 7a1bfd5..5fbc876 100644 --- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp +++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp @@ -179,7 +179,7 @@ void InspectorClientQt::populateSetting(const String& key, InspectorController:: return; } - QString settingKey(settingStoragePrefix + key); + QString settingKey(settingStoragePrefix + QString(key)); QString storedValueType = qsettings.value(settingKey + settingStorageTypeSuffix).toString(); QVariant storedValue = qsettings.value(settingKey); storedValue.convert(QVariant::nameToType(storedValueType.toAscii().data())); @@ -196,7 +196,7 @@ void InspectorClientQt::storeSetting(const String& key, const InspectorControlle } QVariant valueToStore = settingToVariant(setting); - QString settingKey(settingStoragePrefix + key); + QString settingKey(settingStoragePrefix + QString(key)); qsettings.setValue(settingKey, valueToStore); qsettings.setValue(settingKey + settingStorageTypeSuffix, QVariant::typeToName(valueToStore.type())); } diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp index 02a29d9..7692749 100644 --- a/src/activeqt/container/qaxbase.cpp +++ b/src/activeqt/container/qaxbase.cpp @@ -1353,11 +1353,9 @@ bool QAxBase::initializeFromFile(IUnknown** ptr) // There seams to be a naming problem in mingw headers -#ifdef Q_CC_GNU -#ifndef COAUTHIDENTITY +#if defined(Q_CC_GNU) && !defined(COAUTHIDENTITY) && !defined(__MINGW64_VERSION_MAJOR) #define COAUTHIDENTITY AUTH_IDENTITY #endif -#endif /*! diff --git a/src/activeqt/container/qaxwidget.cpp b/src/activeqt/container/qaxwidget.cpp index 9149320..7d2dde7 100644 --- a/src/activeqt/container/qaxwidget.cpp +++ b/src/activeqt/container/qaxwidget.cpp @@ -77,25 +77,21 @@ // #define QAX_SUPPORT_BORDERSPACE // missing interface from win32api -#if defined(Q_CC_GNU) -# if !defined(IOleInPlaceObjectWindowless) -# undef INTERFACE -# define INTERFACE IOleInPlaceObjectWindowless - DECLARE_INTERFACE_(IOleInPlaceObjectWindowless,IOleInPlaceObject) - { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(InPlaceDeactivate)(THIS) PURE; - STDMETHOD(UIDeactivate)(THIS) PURE; - STDMETHOD(SetObjectRects)(THIS_ LPCRECT,LPCRECT) PURE; - STDMETHOD(ReactivateAndUndo)(THIS) PURE; - STDMETHOD(OnWindowMessage)(THIS_ UINT, WPARAM, LPARAM, LRESULT*) PURE; - STDMETHOD(GetDropTarget)(THIS_ IDropTarget**) PURE; - }; -# endif +#if defined(Q_CC_GNU) && !defined(__MINGW64_VERSION_MAJOR) + DECLARE_INTERFACE_(IOleInPlaceObjectWindowless,IOleInPlaceObject) + { + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(InPlaceDeactivate)(THIS) PURE; + STDMETHOD(UIDeactivate)(THIS) PURE; + STDMETHOD(SetObjectRects)(THIS_ LPCRECT,LPCRECT) PURE; + STDMETHOD(ReactivateAndUndo)(THIS) PURE; + STDMETHOD(OnWindowMessage)(THIS_ UINT, WPARAM, LPARAM, LRESULT*) PURE; + STDMETHOD(GetDropTarget)(THIS_ IDropTarget**) PURE; + }; #endif #include "../shared/qaxtypes.h" diff --git a/src/activeqt/control/qaxserverbase.cpp b/src/activeqt/control/qaxserverbase.cpp index 5fa0aad..ce71490 100644 --- a/src/activeqt/control/qaxserverbase.cpp +++ b/src/activeqt/control/qaxserverbase.cpp @@ -1536,7 +1536,7 @@ HWND QAxServerBase::create(HWND hWndParent, RECT& rcPos) HINSTANCE hInst = (HINSTANCE)qAxInstance; EnterCriticalSection(&createWindowSection); QString cn(QLatin1String("QAxControl")); - cn += QString::number((int)ActiveXProc); + cn += QString::number((quintptr)ActiveXProc); if (!atom) { WNDCLASS wcTemp; wcTemp.style = CS_DBLCLKS; @@ -1599,10 +1599,10 @@ HMENU QAxServerBase::createPopup(QMenu *popup, HMENU oldMenu) ushort itemId; if (flags & MF_POPUP) { itemId = static_cast<ushort>( - reinterpret_cast<ulong>(createPopup(action->menu())) + reinterpret_cast<quintptr>(createPopup(action->menu())) ); } else { - itemId = static_cast<ushort>(reinterpret_cast<ulong>(action)); + itemId = static_cast<ushort>(reinterpret_cast<quintptr>(action)); actionMap.remove(itemId); actionMap.insert(itemId, action); } @@ -1646,10 +1646,10 @@ void QAxServerBase::createMenu(QMenuBar *menuBar) ushort itemId; if (flags & MF_POPUP) { itemId = static_cast<ushort>( - reinterpret_cast<ulong>(createPopup(action->menu())) + reinterpret_cast<quintptr>(createPopup(action->menu())) ); } else { - itemId = static_cast<ushort>(reinterpret_cast<ulong>(action)); + itemId = static_cast<ushort>(reinterpret_cast<quintptr>(action)); actionMap.insert(itemId, action); } AppendMenu(hmenuShared, flags, itemId, (const wchar_t *)action->text().utf16()); diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp index 9690406..9490225 100644 --- a/src/corelib/global/qlibraryinfo.cpp +++ b/src/corelib/global/qlibraryinfo.cpp @@ -444,7 +444,7 @@ QLibraryInfo::location(LibraryLocation loc) QCFType<CFURLRef> urlRef = CFBundleCopyBundleURL(bundleRef); if (urlRef) { QCFString path = CFURLCopyFileSystemPath(urlRef, kCFURLPOSIXPathStyle); - return QDir::cleanPath(path + QLatin1String("/Contents/") + ret); + return QDir::cleanPath(QString(path) + QLatin1String("/Contents/") + ret); } } #endif diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index 076cc33..0290fb8 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -6348,7 +6348,7 @@ QUrl QUrl::fromUserInput(const QString &userInput) return QUrl::fromLocalFile(trimmedString); QUrl url = QUrl::fromEncoded(trimmedString.toUtf8(), QUrl::TolerantMode); - QUrl urlPrepended = QUrl::fromEncoded((QLatin1String("http://") + trimmedString).toUtf8(), QUrl::TolerantMode); + QUrl urlPrepended = QUrl::fromEncoded("http://" + trimmedString.toUtf8(), QUrl::TolerantMode); // Check the most common case of a valid url with scheme and host // We check if the port would be valid by adding the scheme to handle the case host:port diff --git a/src/corelib/kernel/qcoreapplication_win.cpp b/src/corelib/kernel/qcoreapplication_win.cpp index 5990f86..566626d 100644 --- a/src/corelib/kernel/qcoreapplication_win.cpp +++ b/src/corelib/kernel/qcoreapplication_win.cpp @@ -1021,14 +1021,14 @@ QString decodeMSG(const MSG& msg) LPWINDOWPOS winPos = (LPWINDOWPOS)lParam; if (!winPos) break; - QString hwndAfter = valueCheck((uint)winPos->hwndInsertAfter, - FLAG_STRING((uint)HWND_BOTTOM, "HWND_BOTTOM"), - FLAG_STRING((int)HWND_NOTOPMOST, "HWND_NOTOPMOST"), - FLAG_STRING((uint)HWND_TOP, "HWND_TOP"), - FLAG_STRING((int)HWND_TOPMOST, "HWND_TOPMOST"), + QString hwndAfter = valueCheck(quint64(winPos->hwndInsertAfter), + FLAG_STRING((quintptr)HWND_BOTTOM, "HWND_BOTTOM"), + FLAG_STRING((quintptr)HWND_NOTOPMOST, "HWND_NOTOPMOST"), + FLAG_STRING((quintptr)HWND_TOP, "HWND_TOP"), + FLAG_STRING((quintptr)HWND_TOPMOST, "HWND_TOPMOST"), FLAG_STRING()); if (hwndAfter.size() == 0) - hwndAfter = QString::number((uint)winPos->hwndInsertAfter, 16); + hwndAfter = QString::number((quintptr)winPos->hwndInsertAfter, 16); QString flags = flagCheck(winPos->flags, FLGSTR(SWP_DRAWFRAME), FLGSTR(SWP_FRAMECHANGED), diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp index ec50ac8..43df13a 100644 --- a/src/corelib/thread/qmutex.cpp +++ b/src/corelib/thread/qmutex.cpp @@ -41,6 +41,7 @@ #include "qplatformdefs.h" #include "qmutex.h" +#include <qdebug.h> #ifndef QT_NO_THREAD #include "qatomic.h" @@ -159,8 +160,7 @@ void QMutex::lock() if (!isLocked) { #ifndef QT_NO_DEBUG if (d->owner == self) - qWarning("QMutex::lock: Deadlock detected in thread %ld", - long(d->owner)); + qWarning() << "QMutex::lock: Deadlock detected in thread" << d->owner; #endif // didn't get the lock, wait for it @@ -197,8 +197,7 @@ void QMutex::lock() if (!isLocked) { #ifndef QT_NO_DEBUG if (d->owner == self) - qWarning("QMutex::lock: Deadlock detected in thread %ld", - long(d->owner)); + qWarning() << "QMutex::lock: Deadlock detected in thread" << d->owner; #endif // didn't get the lock, wait for it diff --git a/src/corelib/tools/qeasingcurve.cpp b/src/corelib/tools/qeasingcurve.cpp index 89edb2d..64b4dca 100644 --- a/src/corelib/tools/qeasingcurve.cpp +++ b/src/corelib/tools/qeasingcurve.cpp @@ -861,7 +861,7 @@ QDebug operator<<(QDebug debug, const QEasingCurve &item) QDataStream &operator<<(QDataStream &stream, const QEasingCurve &easing) { stream << easing.d_ptr->type; - stream << quint64(intptr_t(easing.d_ptr->func)); + stream << quint64(quintptr(easing.d_ptr->func)); bool hasConfig = easing.d_ptr->config; stream << hasConfig; @@ -893,7 +893,7 @@ QDataStream &operator>>(QDataStream &stream, QEasingCurve &easing) quint64 ptr_func; stream >> ptr_func; - easing.d_ptr->func = QEasingCurve::EasingFunction(intptr_t(ptr_func)); + easing.d_ptr->func = QEasingCurve::EasingFunction(quintptr(ptr_func)); bool hasConfig; stream >> hasConfig; diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index b4bfcaf..84bc154 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -465,7 +465,7 @@ static QString winToQtFormat(const QString &sys_fmt) if (text == QLatin1String("'")) result += QLatin1String("''"); else - result += QLatin1Char('\'') + text + QLatin1Char('\''); + result += QString(QLatin1Char('\'') + text + QLatin1Char('\'')); continue; } @@ -681,8 +681,8 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const case DateTimeFormatLong: case DateTimeFormatShort: - return query(type == DateTimeFormatLong ? DateFormatLong : DateFormatShort).toString() - + QLatin1Char(' ') + query(type == DateTimeFormatLong ? TimeFormatLong : TimeFormatShort).toString(); + return QString(query(type == DateTimeFormatLong ? DateFormatLong : DateFormatShort).toString() + + QLatin1Char(' ') + query(type == DateTimeFormatLong ? TimeFormatLong : TimeFormatShort).toString()); case DayNameLong: case DayNameShort: return winDayName(in.toInt(), (type == DayNameShort)); @@ -698,8 +698,8 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const case DateTimeToStringShort: case DateTimeToStringLong: { const QDateTime dt = in.toDateTime(); - return winDateToString(dt.date(), type == DateTimeToStringShort ? DATE_SHORTDATE : DATE_LONGDATE) - + QLatin1Char(' ') + winTimeToString(dt.time()); } + return QString(winDateToString(dt.date(), type == DateTimeToStringShort ? DATE_SHORTDATE : DATE_LONGDATE) + + QLatin1Char(' ') + winTimeToString(dt.time())); } case ZeroDigit: locale_info = LOCALE_SNATIVEDIGITS; diff --git a/src/corelib/tools/qlocale_symbian.cpp b/src/corelib/tools/qlocale_symbian.cpp index b1a7caa..58e3ba8 100644 --- a/src/corelib/tools/qlocale_symbian.cpp +++ b/src/corelib/tools/qlocale_symbian.cpp @@ -841,7 +841,7 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const return symbianTimeFormat(); case DateTimeFormatLong: case DateTimeFormatShort: - return symbianDateFormat( (type == DateTimeFormatShort) ) + QLatin1Char(' ') + symbianTimeFormat(); + return QString(symbianDateFormat( (type == DateTimeFormatShort) ) + QLatin1Char(' ') + symbianTimeFormat()); case DateToStringShort: case DateToStringLong: return symbianDateToString(in.toDate(), (type == DateToStringShort) ); @@ -851,8 +851,8 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const case DateTimeToStringShort: case DateTimeToStringLong: { const QDateTime dt = in.toDateTime(); - return symbianDateToString(dt.date(), (type == DateTimeToStringShort) ) - + QLatin1Char(' ') + symbianTimeToString(dt.time()); + return QString(symbianDateToString(dt.date(), (type == DateTimeToStringShort) ) + + QLatin1Char(' ') + symbianTimeToString(dt.time())); } case MeasurementSystem: return static_cast<int>(symbianMeasurementSystem()); diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 8de3c7d..a59c0bd 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -73,6 +73,16 @@ typedef std::basic_string<wchar_t> QStdWString; #error qstring.h must be included before any header file that defines truncate #endif +#if defined(Q_CC_GNU) && (__GNUC__ == 4 && __GNUC_MINOR__ == 0) +//There is a bug in GCC 4.0 that tries to instantiate template of annonymous enum +# ifdef QT_USE_FAST_OPERATOR_PLUS +# undef QT_USE_FAST_OPERATOR_PLUS +# endif +# ifdef QT_USE_FAST_CONCATENATION +# undef QT_USE_FAST_CONCATENATION +# endif +#endif + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE diff --git a/src/corelib/tools/qstringbuilder.h b/src/corelib/tools/qstringbuilder.h index 74661c2..0c3ba06 100644 --- a/src/corelib/tools/qstringbuilder.h +++ b/src/corelib/tools/qstringbuilder.h @@ -100,14 +100,18 @@ public: operator QString() const { - QString s(QConcatenable< QStringBuilder<A, B> >::size(*this), - Qt::Uninitialized); + const uint size = QConcatenable< QStringBuilder<A, B> >::size(*this); + QString s(size, Qt::Uninitialized); QChar *d = s.data(); + const QChar * const start = d; QConcatenable< QStringBuilder<A, B> >::appendTo(*this, d); - // this resize is necessary since we allocate a bit too much - // when dealing with variable sized 8-bit encodings - s.resize(d - s.data()); + + if (!QConcatenable< QStringBuilder<A, B> >::ExactSize && int(size) != d - start) { + // this resize is necessary since we allocate a bit too much + // when dealing with variable sized 8-bit encodings + s.resize(d - start); + } return s; } QByteArray toLatin1() const { return QString(*this).toLatin1(); } @@ -116,10 +120,24 @@ public: const B &b; }; +template <> +class QStringBuilder <QString, QString> +{ + public: + QStringBuilder(const QString &a_, const QString &b_) : a(a_), b(b_) {} + + operator QString() const + { QString r(a); r += b; return r; } + QByteArray toLatin1() const { return QString(*this).toLatin1(); } + + const QString &a; + const QString &b; +}; template <> struct QConcatenable<char> : private QAbstractConcatenable { typedef char type; + enum { ExactSize = true }; static int size(const char) { return 1; } static inline void appendTo(const char c, QChar *&out) { @@ -130,6 +148,7 @@ template <> struct QConcatenable<char> : private QAbstractConcatenable template <> struct QConcatenable<QLatin1Char> { typedef QLatin1Char type; + enum { ExactSize = true }; static int size(const QLatin1Char) { return 1; } static inline void appendTo(const QLatin1Char c, QChar *&out) { @@ -140,6 +159,7 @@ template <> struct QConcatenable<QLatin1Char> template <> struct QConcatenable<QChar> { typedef QChar type; + enum { ExactSize = true }; static int size(const QChar) { return 1; } static inline void appendTo(const QChar c, QChar *&out) { @@ -150,6 +170,7 @@ template <> struct QConcatenable<QChar> template <> struct QConcatenable<QCharRef> { typedef QCharRef type; + enum { ExactSize = true }; static int size(const QCharRef &) { return 1; } static inline void appendTo(const QCharRef &c, QChar *&out) { @@ -160,6 +181,7 @@ template <> struct QConcatenable<QCharRef> template <> struct QConcatenable<QLatin1String> { typedef QLatin1String type; + enum { ExactSize = true }; static int size(const QLatin1String &a) { return qstrlen(a.latin1()); } static inline void appendTo(const QLatin1String &a, QChar *&out) { @@ -172,6 +194,7 @@ template <> struct QConcatenable<QLatin1String> template <> struct QConcatenable<QLatin1Literal> { typedef QLatin1Literal type; + enum { ExactSize = true }; static int size(const QLatin1Literal &a) { return a.size(); } static inline void appendTo(const QLatin1Literal &a, QChar *&out) { @@ -183,6 +206,7 @@ template <> struct QConcatenable<QLatin1Literal> template <> struct QConcatenable<QString> { typedef QString type; + enum { ExactSize = true }; static int size(const QString &a) { return a.size(); } static inline void appendTo(const QString &a, QChar *&out) { @@ -195,6 +219,7 @@ template <> struct QConcatenable<QString> template <> struct QConcatenable<QStringRef> { typedef QStringRef type; + enum { ExactSize = true }; static int size(const QStringRef &a) { return a.size(); } static inline void appendTo(QStringRef a, QChar *&out) { @@ -208,6 +233,7 @@ template <> struct QConcatenable<QStringRef> template <int N> struct QConcatenable<char[N]> : private QAbstractConcatenable { typedef char type[N]; + enum { ExactSize = false }; static int size(const char[N]) { return N - 1; @@ -221,6 +247,7 @@ template <int N> struct QConcatenable<char[N]> : private QAbstractConcatenable template <int N> struct QConcatenable<const char[N]> : private QAbstractConcatenable { typedef const char type[N]; + enum { ExactSize = false }; static int size(const char[N]) { return N - 1; } static inline void appendTo(const char a[N], QChar *&out) { @@ -231,6 +258,7 @@ template <int N> struct QConcatenable<const char[N]> : private QAbstractConcaten template <> struct QConcatenable<const char *> : private QAbstractConcatenable { typedef char const *type; + enum { ExactSize = false }; static int size(const char *a) { return qstrlen(a); } static inline void appendTo(const char *a, QChar *&out) { @@ -241,6 +269,7 @@ template <> struct QConcatenable<const char *> : private QAbstractConcatenable template <> struct QConcatenable<QByteArray> : private QAbstractConcatenable { typedef QByteArray type; + enum { ExactSize = false }; static int size(const QByteArray &ba) { return qstrnlen(ba.constData(), ba.size()); } static inline void appendTo(const QByteArray &ba, QChar *&out) { @@ -253,6 +282,7 @@ template <typename A, typename B> struct QConcatenable< QStringBuilder<A, B> > { typedef QStringBuilder<A, B> type; + enum { ExactSize = QConcatenable<A>::ExactSize && QConcatenable<B>::ExactSize }; static int size(const type &p) { return QConcatenable<A>::size(p.a) + QConcatenable<B>::size(p.b); diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index b378db2..ab5022b 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -607,11 +607,11 @@ void QDeclarativeGridViewPrivate::createHighlight() item->setParent(q->viewport()); highlight = new FxGridItem(item, q); highlightXAnimator = new QDeclarativeEaseFollow(q); - highlightXAnimator->setTarget(QDeclarativeMetaProperty(highlight->item, QLatin1String("x"))); + highlightXAnimator->setTarget(QDeclarativeProperty(highlight->item, QLatin1String("x"))); highlightXAnimator->setDuration(150); highlightXAnimator->setEnabled(autoHighlight); highlightYAnimator = new QDeclarativeEaseFollow(q); - highlightYAnimator->setTarget(QDeclarativeMetaProperty(highlight->item, QLatin1String("y"))); + highlightYAnimator->setTarget(QDeclarativeProperty(highlight->item, QLatin1String("y"))); highlightYAnimator->setDuration(150); highlightYAnimator->setEnabled(autoHighlight); changed = true; diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index bd2f4fc..e6b6f2a 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -804,13 +804,13 @@ void QDeclarativeListViewPrivate::createHighlight() highlight->item->setWidth(currentItem->item->width()); const QLatin1String posProp(orient == QDeclarativeListView::Vertical ? "y" : "x"); highlightPosAnimator = new QDeclarativeEaseFollow(q); - highlightPosAnimator->setTarget(QDeclarativeMetaProperty(highlight->item, posProp)); + highlightPosAnimator->setTarget(QDeclarativeProperty(highlight->item, posProp)); highlightPosAnimator->setVelocity(highlightMoveSpeed); highlightPosAnimator->setEnabled(autoHighlight); const QLatin1String sizeProp(orient == QDeclarativeListView::Vertical ? "height" : "width"); highlightSizeAnimator = new QDeclarativeEaseFollow(q); highlightSizeAnimator->setVelocity(highlightResizeSpeed); - highlightSizeAnimator->setTarget(QDeclarativeMetaProperty(highlight->item, sizeProp)); + highlightSizeAnimator->setTarget(QDeclarativeProperty(highlight->item, sizeProp)); highlightSizeAnimator->setEnabled(autoHighlight); changed = true; } diff --git a/src/declarative/graphicsitems/qdeclarativeparticles.cpp b/src/declarative/graphicsitems/qdeclarativeparticles.cpp index 3c07798..1a58d3f 100644 --- a/src/declarative/graphicsitems/qdeclarativeparticles.cpp +++ b/src/declarative/graphicsitems/qdeclarativeparticles.cpp @@ -1260,7 +1260,7 @@ void QDeclarativeParticlesPainter::paint(QPainter *p, const QStyleOptionGraphics const int myX = x() + parentItem()->x(); const int myY = y() + parentItem()->y(); - QVarLengthArray<QDrawPixmaps::Data, 256> pixmapData; + QVarLengthArray<QPainter::Fragment, 256> pixmapData; pixmapData.resize(d->particles.count()); const QRectF sourceRect = d->image.rect(); @@ -1268,16 +1268,20 @@ void QDeclarativeParticlesPainter::paint(QPainter *p, const QStyleOptionGraphics qreal halfPHeight = sourceRect.height()/2.; for (int i = 0; i < d->particles.count(); ++i) { const QDeclarativeParticle &particle = d->particles.at(i); - pixmapData[i].point = QPointF(particle.x - myX + halfPWidth, particle.y - myY + halfPHeight); + pixmapData[i].x = particle.x - myX + halfPWidth; + pixmapData[i].y = particle.y - myY + halfPHeight; pixmapData[i].opacity = particle.opacity; //these never change pixmapData[i].rotation = 0; pixmapData[i].scaleX = 1; pixmapData[i].scaleY = 1; - pixmapData[i].source = sourceRect; + pixmapData[i].sourceLeft = sourceRect.left(); + pixmapData[i].sourceTop = sourceRect.top(); + pixmapData[i].width = sourceRect.width(); + pixmapData[i].height = sourceRect.height(); } - qDrawPixmaps(p, pixmapData.data(), d->particles.count(), d->image); + p->drawPixmapFragments(pixmapData.data(), d->particles.count(), d->image); } void QDeclarativeParticles::componentComplete() diff --git a/src/declarative/qml/parser/qdeclarativejs.g b/src/declarative/qml/parser/qdeclarativejs.g index e1cb5a5..7cf81b2 100644 --- a/src/declarative/qml/parser/qdeclarativejs.g +++ b/src/declarative/qml/parser/qdeclarativejs.g @@ -65,6 +65,7 @@ %token T_PUBLIC "public" %token T_IMPORT "import" %token T_AS "as" +%token T_ON "on" --- feed tokens %token T_FEED_UI_PROGRAM @@ -773,6 +774,17 @@ case $rule_number: { } break; ./ +UiObjectMember: UiQualifiedId T_ON UiQualifiedId UiObjectInitializer ; +/. +case $rule_number: { + AST::UiObjectBinding *node = makeAstNode<AST::UiObjectBinding> (driver->nodePool(), + sym(3).UiQualifiedId, sym(1).UiQualifiedId, sym(4).UiObjectInitializer); + node->colonToken = loc(2); + node->hasOnToken = true; + sym(1).Node = node; +} break; +./ + UiObjectMember: UiQualifiedId T_COLON Block ; /.case $rule_number:./ @@ -870,8 +882,8 @@ case $rule_number: { } break; ./ -UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT T_IDENTIFIER T_AUTOMATIC_SEMICOLON ; -UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT T_IDENTIFIER T_SEMICOLON ; +UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT JsIdentifier T_AUTOMATIC_SEMICOLON ; +UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT JsIdentifier T_SEMICOLON ; /. case $rule_number: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(4).sval, sym(6).sval); @@ -885,8 +897,8 @@ case $rule_number: { } break; ./ -UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER T_AUTOMATIC_SEMICOLON ; -UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER T_SEMICOLON ; +UiObjectMember: T_PROPERTY UiPropertyType JsIdentifier T_AUTOMATIC_SEMICOLON ; +UiObjectMember: T_PROPERTY UiPropertyType JsIdentifier T_SEMICOLON ; /. case $rule_number: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval); @@ -898,8 +910,8 @@ case $rule_number: { } break; ./ -UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER T_AUTOMATIC_SEMICOLON ; -UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER T_SEMICOLON ; +UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType JsIdentifier T_AUTOMATIC_SEMICOLON ; +UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType JsIdentifier T_SEMICOLON ; /. case $rule_number: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval); @@ -913,8 +925,8 @@ case $rule_number: { } break; ./ -UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_AUTOMATIC_SEMICOLON ; -UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_SEMICOLON ; +UiObjectMember: T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_AUTOMATIC_SEMICOLON ; +UiObjectMember: T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_SEMICOLON ; /. case $rule_number: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval, @@ -928,8 +940,8 @@ case $rule_number: { } break; ./ -UiObjectMember: T_READONLY T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_AUTOMATIC_SEMICOLON ; -UiObjectMember: T_READONLY T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_SEMICOLON ; +UiObjectMember: T_READONLY T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_AUTOMATIC_SEMICOLON ; +UiObjectMember: T_READONLY T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_SEMICOLON ; /. case $rule_number: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval, @@ -945,8 +957,8 @@ case $rule_number: { } break; ./ -UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_AUTOMATIC_SEMICOLON ; -UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_SEMICOLON ; +UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_AUTOMATIC_SEMICOLON ; +UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_SEMICOLON ; /. case $rule_number: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval, @@ -1005,6 +1017,15 @@ case $rule_number: { } ./ +JsIdentifier: T_ON ; +/. +case $rule_number: { + QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_READONLY]); + sym(1).sval = driver->intern(s.constData(), s.length()); + break; +} +./ + -------------------------------------------------------------------------------------------------------- -- Expressions -------------------------------------------------------------------------------------------------------- diff --git a/src/declarative/qml/parser/qdeclarativejsast_p.h b/src/declarative/qml/parser/qdeclarativejsast_p.h index 0a83fe2..c1945ce 100644 --- a/src/declarative/qml/parser/qdeclarativejsast_p.h +++ b/src/declarative/qml/parser/qdeclarativejsast_p.h @@ -2599,11 +2599,17 @@ public: UiObjectInitializer *initializer) : qualifiedId(qualifiedId), qualifiedTypeNameId(qualifiedTypeNameId), - initializer(initializer) + initializer(initializer), + hasOnToken(false) { kind = K; } virtual SourceLocation firstSourceLocation() const - { return qualifiedId->identifierToken; } + { + if (hasOnToken && qualifiedTypeNameId) + return qualifiedTypeNameId->identifierToken; + + return qualifiedId->identifierToken; + } virtual SourceLocation lastSourceLocation() const { return initializer->rbraceToken; } @@ -2615,6 +2621,7 @@ public: UiQualifiedId *qualifiedTypeNameId; UiObjectInitializer *initializer; SourceLocation colonToken; + bool hasOnToken; }; class QML_PARSER_EXPORT UiScriptBinding: public UiObjectMember diff --git a/src/declarative/qml/parser/qdeclarativejsgrammar.cpp b/src/declarative/qml/parser/qdeclarativejsgrammar.cpp index aadb432..0677bc5 100644 --- a/src/declarative/qml/parser/qdeclarativejsgrammar.cpp +++ b/src/declarative/qml/parser/qdeclarativejsgrammar.cpp @@ -54,581 +54,608 @@ const char *const QDeclarativeJSGrammar::spell [] = { ")", ";", 0, "*", "*=", "string literal", "property", "signal", "readonly", "switch", "this", "throw", "~", "try", "typeof", "var", "void", "while", "with", "^", "^=", "null", "true", "false", "const", "debugger", "reserved word", "multiline string literal", "comment", "public", - "import", "as", 0, 0, 0, 0, 0, 0, 0, 0}; + "import", "as", "on", 0, 0, 0, 0, 0, 0, 0, + 0}; const short QDeclarativeJSGrammar::lhs [] = { - 100, 100, 100, 100, 100, 100, 101, 107, 107, 110, - 110, 112, 111, 111, 111, 111, 111, 111, 111, 111, - 114, 109, 108, 117, 117, 118, 118, 119, 119, 116, - 105, 105, 105, 105, 105, 105, 105, 125, 125, 125, - 126, 126, 127, 127, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 115, 115, 115, 115, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 120, 132, 132, 132, 132, 131, - 131, 134, 134, 136, 136, 136, 136, 136, 136, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 138, 138, 113, 113, 113, 113, 113, 141, 141, 142, - 142, 142, 142, 140, 140, 143, 143, 144, 144, 145, - 145, 145, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 147, 147, 147, 147, 148, 148, 148, 149, - 149, 149, 149, 150, 150, 150, 150, 150, 150, 150, - 151, 151, 151, 151, 151, 151, 152, 152, 152, 152, - 152, 153, 153, 153, 153, 153, 154, 154, 155, 155, + 101, 101, 101, 101, 101, 101, 102, 108, 108, 111, + 111, 113, 112, 112, 112, 112, 112, 112, 112, 112, + 115, 110, 109, 118, 118, 119, 119, 120, 120, 117, + 106, 106, 106, 106, 106, 106, 106, 106, 126, 126, + 126, 127, 127, 128, 128, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 116, 116, 116, 116, 116, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 121, 133, 133, 133, + 133, 132, 132, 135, 135, 137, 137, 137, 137, 137, + 137, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 139, 139, 114, 114, 114, 114, 114, 142, + 142, 143, 143, 143, 143, 141, 141, 144, 144, 145, + 145, 146, 146, 146, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 148, 148, 148, 148, 149, 149, + 149, 150, 150, 150, 150, 151, 151, 151, 151, 151, + 151, 151, 152, 152, 152, 152, 152, 152, 153, 153, + 153, 153, 153, 154, 154, 154, 154, 154, 155, 155, 156, 156, 157, 157, 158, 158, 159, 159, 160, 160, 161, 161, 162, 162, 163, 163, 164, 164, 165, 165, - 135, 135, 166, 166, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 103, 103, 168, 168, - 169, 169, 170, 170, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 121, - 182, 182, 181, 181, 129, 129, 183, 183, 184, 184, - 186, 186, 185, 187, 190, 188, 188, 191, 189, 189, - 122, 123, 123, 124, 124, 171, 171, 171, 171, 171, - 171, 171, 172, 172, 172, 172, 173, 173, 173, 173, - 174, 174, 175, 177, 192, 192, 195, 195, 193, 193, - 196, 194, 176, 176, 176, 178, 178, 179, 179, 179, - 197, 198, 180, 180, 128, 139, 202, 202, 199, 199, - 200, 200, 203, 106, 204, 204, 104, 104, 201, 201, - 133, 133, 205}; + 166, 166, 136, 136, 167, 167, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 104, 104, + 169, 169, 170, 170, 171, 171, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 122, 183, 183, 182, 182, 130, 130, 184, 184, + 185, 185, 187, 187, 186, 188, 191, 189, 189, 192, + 190, 190, 123, 124, 124, 125, 125, 172, 172, 172, + 172, 172, 172, 172, 173, 173, 173, 173, 174, 174, + 174, 174, 175, 175, 176, 178, 193, 193, 196, 196, + 194, 194, 197, 195, 177, 177, 177, 179, 179, 180, + 180, 180, 198, 199, 181, 181, 129, 140, 203, 203, + 200, 200, 201, 201, 204, 107, 205, 205, 105, 105, + 202, 202, 134, 134, 206}; const short QDeclarativeJSGrammar::rhs [] = { 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 2, 2, 3, 3, 5, 5, 4, 4, 2, 0, 1, 1, 2, 1, 3, 2, 3, 2, - 1, 5, 4, 3, 3, 3, 3, 1, 1, 1, - 0, 1, 2, 4, 6, 6, 3, 3, 7, 7, - 4, 4, 5, 5, 6, 6, 7, 7, 7, 7, + 1, 5, 4, 4, 3, 3, 3, 3, 1, 1, + 1, 0, 1, 2, 4, 6, 6, 3, 3, 7, + 7, 4, 4, 5, 5, 6, 6, 7, 7, 7, + 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 3, 4, 5, 3, 4, 3, 1, 1, 2, 3, + 4, 1, 2, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 3, 3, 4, - 5, 3, 4, 3, 1, 1, 2, 3, 4, 1, - 2, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, 3, 5, 1, 2, 4, - 4, 4, 3, 0, 1, 1, 3, 1, 1, 1, - 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 3, 3, 3, 1, 3, 3, 1, - 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, - 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, - 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, + 1, 1, 1, 1, 1, 1, 4, 3, 5, 1, + 2, 4, 4, 4, 3, 0, 1, 1, 3, 1, + 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 3, 3, 3, 1, 3, + 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, + 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, + 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 5, 1, 5, - 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 0, 1, - 1, 3, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, + 1, 5, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 1, 2, 0, 1, 3, 3, 1, 1, 1, 3, - 1, 3, 2, 2, 2, 0, 1, 2, 0, 1, - 1, 2, 2, 7, 5, 7, 7, 5, 9, 10, - 7, 8, 2, 2, 3, 3, 2, 2, 3, 3, - 3, 3, 5, 5, 3, 5, 1, 2, 0, 1, - 4, 3, 3, 3, 3, 3, 3, 3, 3, 4, - 5, 2, 2, 2, 8, 8, 1, 3, 0, 1, - 0, 1, 1, 1, 1, 2, 1, 1, 0, 1, - 0, 1, 2}; + 0, 1, 1, 3, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 2, 0, 1, 3, 3, 1, 1, + 1, 3, 1, 3, 2, 2, 2, 0, 1, 2, + 0, 1, 1, 2, 2, 7, 5, 7, 7, 5, + 9, 10, 7, 8, 2, 2, 3, 3, 2, 2, + 3, 3, 3, 3, 5, 5, 3, 5, 1, 2, + 0, 1, 4, 3, 3, 3, 3, 3, 3, 3, + 3, 4, 5, 2, 2, 2, 8, 8, 1, 3, + 0, 1, 0, 1, 1, 1, 1, 2, 1, 1, + 0, 1, 0, 1, 2}; const short QDeclarativeJSGrammar::action_default [] = { - 0, 0, 0, 0, 0, 0, 22, 0, 170, 237, - 201, 209, 205, 149, 221, 197, 3, 134, 68, 150, - 213, 217, 138, 167, 148, 153, 133, 187, 174, 0, - 75, 76, 71, 339, 63, 341, 0, 0, 0, 0, - 73, 0, 0, 69, 72, 0, 0, 64, 66, 65, - 74, 67, 0, 70, 0, 0, 163, 0, 0, 150, - 169, 152, 151, 0, 0, 0, 165, 166, 164, 168, - 0, 198, 0, 0, 0, 0, 188, 0, 0, 0, - 0, 0, 0, 178, 0, 0, 0, 172, 173, 171, - 176, 180, 179, 177, 175, 190, 189, 191, 0, 206, - 0, 202, 0, 0, 144, 131, 143, 132, 100, 101, - 102, 127, 103, 128, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 129, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 130, 0, - 0, 142, 238, 145, 0, 146, 0, 147, 141, 0, - 234, 227, 225, 232, 233, 231, 230, 236, 229, 228, - 226, 235, 222, 0, 210, 0, 0, 214, 0, 0, - 218, 0, 0, 144, 136, 0, 135, 0, 140, 154, - 0, 340, 329, 330, 0, 327, 0, 328, 0, 331, - 245, 252, 251, 259, 247, 0, 248, 332, 0, 338, - 249, 250, 255, 253, 335, 333, 337, 256, 0, 267, - 0, 0, 0, 0, 339, 63, 0, 341, 64, 239, - 281, 65, 0, 0, 0, 268, 0, 0, 257, 258, - 0, 246, 254, 282, 283, 326, 336, 0, 297, 298, - 299, 300, 0, 293, 294, 295, 296, 323, 324, 0, - 0, 0, 0, 0, 286, 287, 243, 241, 203, 211, - 207, 223, 199, 244, 0, 150, 215, 219, 192, 181, - 0, 0, 200, 0, 0, 0, 0, 193, 0, 0, - 0, 0, 0, 185, 183, 186, 184, 182, 195, 194, - 196, 0, 208, 0, 204, 0, 242, 150, 0, 224, - 239, 240, 0, 239, 0, 0, 289, 0, 0, 0, - 291, 0, 212, 0, 0, 216, 0, 0, 220, 279, - 0, 271, 280, 274, 0, 278, 0, 239, 272, 0, - 239, 0, 0, 290, 0, 0, 0, 292, 340, 329, - 0, 0, 331, 0, 325, 0, 315, 0, 0, 0, - 285, 0, 284, 0, 342, 0, 99, 261, 264, 0, - 100, 267, 103, 128, 105, 106, 71, 110, 111, 63, - 112, 115, 69, 72, 64, 239, 65, 74, 118, 67, - 120, 70, 122, 123, 268, 125, 126, 130, 0, 92, - 0, 0, 94, 98, 96, 83, 95, 97, 0, 93, - 82, 262, 260, 138, 139, 144, 0, 137, 0, 314, - 0, 301, 302, 0, 313, 0, 0, 0, 304, 309, - 307, 310, 0, 0, 308, 309, 0, 305, 0, 306, - 263, 312, 0, 263, 311, 0, 316, 317, 0, 263, - 318, 319, 0, 0, 320, 0, 0, 0, 321, 322, - 156, 155, 0, 0, 0, 288, 0, 0, 0, 303, - 276, 269, 0, 277, 273, 0, 275, 265, 0, 266, - 270, 86, 0, 0, 90, 77, 0, 79, 88, 0, - 80, 89, 91, 81, 87, 78, 0, 84, 160, 158, - 162, 159, 157, 161, 6, 334, 4, 2, 61, 85, - 0, 0, 64, 66, 65, 31, 5, 0, 62, 0, - 40, 39, 38, 0, 0, 53, 0, 54, 0, 59, - 60, 0, 40, 0, 0, 0, 0, 0, 49, 50, - 0, 51, 0, 52, 0, 55, 56, 0, 0, 0, - 0, 0, 57, 58, 0, 47, 41, 48, 42, 0, - 0, 0, 0, 44, 0, 45, 46, 43, 0, 0, - 30, 34, 35, 36, 37, 138, 263, 0, 0, 100, - 267, 103, 128, 105, 106, 71, 110, 111, 63, 112, - 115, 69, 72, 64, 239, 65, 74, 118, 67, 120, - 70, 122, 123, 268, 125, 126, 130, 138, 0, 26, - 0, 0, 32, 27, 33, 28, 24, 0, 29, 25, - 8, 0, 10, 0, 9, 0, 1, 21, 12, 0, - 13, 0, 14, 0, 19, 20, 0, 15, 16, 0, - 17, 18, 11, 23, 7, 343}; + 0, 0, 0, 0, 0, 0, 22, 0, 172, 239, + 203, 211, 207, 151, 223, 199, 3, 136, 70, 152, + 215, 219, 140, 169, 150, 155, 135, 189, 176, 0, + 77, 78, 73, 341, 64, 343, 0, 0, 0, 0, + 75, 0, 0, 71, 74, 68, 0, 0, 65, 67, + 66, 76, 69, 0, 72, 0, 0, 165, 0, 0, + 152, 171, 154, 153, 0, 0, 0, 167, 168, 166, + 170, 0, 200, 0, 0, 0, 0, 190, 0, 0, + 0, 0, 0, 0, 180, 0, 0, 0, 174, 175, + 173, 178, 182, 181, 179, 177, 192, 191, 193, 0, + 208, 0, 204, 0, 0, 146, 133, 145, 134, 102, + 103, 104, 129, 105, 130, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 131, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 132, + 0, 0, 144, 240, 147, 0, 148, 0, 149, 143, + 0, 236, 229, 227, 234, 235, 233, 232, 238, 231, + 230, 228, 237, 224, 0, 212, 0, 0, 216, 0, + 0, 220, 0, 0, 146, 138, 0, 137, 0, 142, + 156, 0, 342, 331, 332, 0, 329, 0, 330, 0, + 333, 247, 254, 253, 261, 249, 0, 250, 334, 0, + 340, 251, 252, 257, 255, 337, 335, 339, 258, 0, + 269, 0, 0, 0, 0, 341, 64, 0, 343, 65, + 241, 283, 66, 0, 0, 0, 270, 0, 0, 259, + 260, 0, 248, 256, 284, 285, 328, 338, 0, 299, + 300, 301, 302, 0, 295, 296, 297, 298, 325, 326, + 0, 0, 0, 0, 0, 288, 289, 245, 243, 205, + 213, 209, 225, 201, 246, 0, 152, 217, 221, 194, + 183, 0, 0, 202, 0, 0, 0, 0, 195, 0, + 0, 0, 0, 0, 187, 185, 188, 186, 184, 197, + 196, 198, 0, 210, 0, 206, 0, 244, 152, 0, + 226, 241, 242, 0, 241, 0, 0, 291, 0, 0, + 0, 293, 0, 214, 0, 0, 218, 0, 0, 222, + 281, 0, 273, 282, 276, 0, 280, 0, 241, 274, + 0, 241, 0, 0, 292, 0, 0, 0, 294, 342, + 331, 0, 0, 333, 0, 327, 0, 317, 0, 0, + 0, 287, 0, 286, 0, 344, 0, 101, 263, 266, + 0, 102, 269, 105, 130, 107, 108, 73, 112, 113, + 64, 114, 117, 71, 74, 65, 241, 66, 76, 120, + 69, 122, 72, 124, 125, 270, 127, 128, 132, 0, + 94, 0, 0, 96, 100, 98, 85, 97, 99, 0, + 95, 84, 264, 262, 140, 141, 146, 0, 139, 0, + 316, 0, 303, 304, 0, 315, 0, 0, 0, 306, + 311, 309, 312, 0, 0, 310, 311, 0, 307, 0, + 308, 265, 314, 0, 265, 313, 0, 318, 319, 0, + 265, 320, 321, 0, 0, 322, 0, 0, 0, 323, + 324, 158, 157, 0, 0, 0, 290, 0, 0, 0, + 305, 278, 271, 0, 279, 275, 0, 277, 267, 0, + 268, 272, 88, 0, 0, 92, 79, 0, 81, 90, + 0, 82, 91, 93, 83, 89, 80, 0, 86, 162, + 160, 164, 161, 159, 163, 6, 336, 4, 2, 62, + 87, 0, 0, 65, 67, 66, 31, 5, 0, 63, + 0, 41, 40, 39, 0, 0, 54, 0, 55, 0, + 60, 61, 0, 41, 0, 0, 0, 0, 0, 50, + 51, 0, 52, 0, 53, 0, 56, 57, 0, 0, + 0, 0, 0, 58, 59, 0, 48, 42, 49, 43, + 0, 0, 0, 0, 45, 0, 46, 47, 44, 0, + 0, 0, 30, 35, 36, 37, 38, 140, 265, 0, + 0, 102, 269, 105, 130, 107, 108, 73, 112, 113, + 64, 114, 117, 71, 74, 65, 241, 66, 76, 120, + 69, 122, 72, 124, 125, 270, 127, 128, 132, 140, + 0, 26, 0, 0, 32, 27, 33, 28, 24, 0, + 29, 25, 0, 34, 8, 0, 10, 0, 9, 0, + 1, 21, 12, 0, 13, 0, 14, 0, 19, 20, + 0, 15, 16, 0, 17, 18, 11, 23, 7, 345}; const short QDeclarativeJSGrammar::goto_default [] = { - 7, 616, 206, 195, 204, 506, 494, 615, 634, 610, - 614, 612, 617, 22, 613, 18, 505, 607, 598, 560, - 507, 190, 194, 196, 200, 523, 549, 548, 199, 231, - 26, 473, 472, 355, 354, 9, 353, 356, 106, 17, - 144, 24, 13, 143, 19, 25, 56, 23, 8, 28, - 27, 268, 15, 262, 10, 258, 12, 260, 11, 259, - 20, 266, 21, 267, 14, 261, 257, 298, 410, 263, - 264, 201, 192, 191, 203, 232, 202, 207, 228, 229, - 193, 359, 358, 230, 462, 461, 320, 321, 464, 323, - 463, 322, 418, 422, 425, 421, 420, 440, 441, 184, - 198, 180, 183, 197, 205, 0}; + 7, 620, 207, 196, 205, 507, 495, 619, 638, 614, + 618, 616, 621, 22, 617, 18, 506, 609, 600, 562, + 508, 191, 195, 197, 201, 524, 550, 549, 200, 232, + 26, 474, 473, 356, 355, 9, 354, 357, 107, 17, + 145, 24, 13, 144, 19, 25, 57, 23, 8, 28, + 27, 269, 15, 263, 10, 259, 12, 261, 11, 260, + 20, 267, 21, 268, 14, 262, 258, 299, 411, 264, + 265, 202, 193, 192, 204, 233, 203, 208, 229, 230, + 194, 360, 359, 231, 463, 462, 321, 322, 465, 324, + 464, 323, 419, 423, 426, 422, 421, 441, 442, 185, + 199, 181, 184, 198, 206, 0}; const short QDeclarativeJSGrammar::action_index [] = { - 439, 1109, 2228, 2228, 2132, 814, -74, 18, 147, -100, - 31, -17, -49, 232, -100, 318, 85, -100, -100, 554, - 33, 94, 331, 215, -100, -100, -100, 448, 231, 1109, - -100, -100, -100, 320, -100, 1940, 1472, 1109, 1109, 1109, - -100, 724, 1109, -100, -100, 1109, 1109, -100, -100, -100, - -100, -100, 1109, -100, 1109, 1109, -100, 1109, 1109, 129, - 157, -100, -100, 1109, 1109, 1109, -100, -100, -100, 200, - 1109, 293, 1109, 1109, 1109, 1109, 466, 1109, 1109, 1109, - 1109, 1109, 1109, 179, 1109, 1109, 1109, 119, 125, 95, - 188, 198, 184, 203, 178, 567, 567, 484, 1109, -5, - 1109, 67, 1844, 1109, 1109, -100, -100, -100, -100, -100, - -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, -100, -100, -100, -100, -100, -100, 110, - 1109, -100, -100, 70, 61, -100, 1109, -100, -100, 1109, - -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, 1109, 55, 1109, 1109, 73, 63, 1109, - -100, 1844, 1109, 1109, -100, 141, -100, 41, -100, -100, - 87, -100, 255, 80, 78, -100, 287, -100, 83, 2228, - -100, -100, -100, -100, -100, 225, -100, -100, 52, -100, - -100, -100, -100, -100, -100, 2228, -100, -100, 420, -100, - 408, 113, 2132, 50, 330, 65, 46, 2420, 72, 1109, - -100, 74, 75, 1109, 77, -100, 53, 56, -100, -100, - 323, -100, -100, -100, -100, -100, -100, 96, -100, -100, - -100, -100, 99, -100, -100, -100, -100, -100, -100, 60, - 47, 1109, 118, 93, -100, -100, 1291, -100, 79, 66, - 64, -100, 413, 76, 51, 664, 89, 97, 393, 183, - 337, 1109, 413, 1109, 1109, 1109, 1109, 411, 1109, 1109, - 1109, 1109, 1109, 252, 272, 212, 217, 221, 490, 490, - 383, 1109, 64, 1109, 84, 1109, -100, 536, 1109, -100, - 1109, 69, 68, 1109, 44, 2132, -100, 1109, 124, 2132, - -100, 1109, 54, 1109, 1109, 71, 88, 1109, -100, 82, - 122, 154, -100, -100, 1109, -100, 343, 1109, -100, 81, - 1109, 90, 2132, -100, 1109, 112, 2132, -100, 86, 333, - -39, -10, 2228, -33, -100, 2132, -100, 1109, 246, 2132, - 4, 2132, -100, 10, 16, -21, -100, -100, 2132, -26, - 480, 19, 462, 128, 1109, 2132, 6, -9, 400, 8, - -22, 840, -3, -6, -100, 1202, -100, -7, -28, 5, - 1109, 2, -23, 1109, 0, 1109, -34, -30, 1109, -100, - 2036, 21, -100, -100, -100, -100, -100, -100, 1109, -100, - -100, -100, -100, 209, -100, 1109, 40, -100, 2132, -100, - 101, -100, -100, 2132, -100, 1109, 120, 43, -100, 62, - -100, 59, 109, 1109, -100, 57, 58, -100, 39, -100, - 2132, -100, 117, 2132, -100, 199, -100, -100, 107, 2132, - 34, -100, 24, 11, -100, 346, -19, 14, -100, -100, - -100, -100, 1109, 133, 2132, -100, 1109, 126, 2132, -100, - 20, -100, 173, -100, -100, 1109, -100, -100, 303, -100, - -100, -100, 100, 1656, -100, -100, 1564, -100, -100, 1748, - -100, -100, -100, -100, -100, -100, 131, -100, -100, -100, - -100, -100, -100, -100, -100, 2228, -100, -100, -100, 158, - -20, 752, 165, -16, 22, -100, -100, 98, -100, 189, - -100, -100, -100, 28, 170, -100, 1109, -100, 230, -100, - -100, 247, 1, 13, 238, 37, -24, 106, -100, -100, - 273, -100, 1109, -100, 265, -100, -100, 242, -4, 12, - 1109, 241, -100, -100, 234, -100, 245, -100, 3, 9, - 311, 190, 316, -100, 134, -100, -100, -100, 1380, 1020, - -100, -100, -100, -100, -100, 359, 2324, 1472, 15, 444, - 38, 394, 138, 1109, 2132, 36, 17, 397, 42, 23, - 840, 32, 29, -100, 1202, -100, 26, 35, 48, 1109, - 45, 25, 1109, 49, 1109, 27, 30, 314, 132, -100, - 7, 752, -100, -100, -100, -100, -100, 930, -100, -100, - -100, 752, -100, 253, -87, 617, -100, -100, 102, 290, - -100, 191, -100, 140, -100, -100, 275, -100, -100, 91, - -100, -100, -100, -100, -100, -100, + 314, 1273, 2404, 2404, 2307, 1001, 58, 98, 78, -101, + 95, 56, 4, 236, -101, 296, 86, -101, -101, 545, + 97, 115, 162, 197, -101, -101, -101, 447, 192, 1273, + -101, -101, -101, 369, -101, 2113, 1919, 1273, 1273, 1273, + -101, 732, 1273, -101, -101, -101, 1273, 1273, -101, -101, + -101, -101, -101, 1273, -101, 1273, 1273, -101, 1273, 1273, + 81, 195, -101, -101, 1273, 1273, 1273, -101, -101, -101, + 185, 1273, 283, 1273, 1273, 1273, 1273, 447, 1273, 1273, + 1273, 1273, 1273, 1273, 297, 1273, 1273, 1273, 107, 85, + 116, 297, 297, 297, 297, 191, 447, 447, 447, 1273, + 74, 1273, 102, 2016, 1273, 1273, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + 112, 1273, -101, -101, 92, 61, -101, 1273, -101, -101, + 1273, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, 1273, 36, 1273, 1273, 65, 62, + 1273, -101, 2016, 1273, 1273, -101, 127, -101, 42, -101, + -101, 57, -101, 294, 60, 35, -101, 259, -101, 32, + 2404, -101, -101, -101, -101, -101, 200, -101, -101, 33, + -101, -101, -101, -101, -101, -101, 2404, -101, -101, 436, + -101, 433, 100, 2307, 34, 369, 67, 45, 2598, 71, + 1273, -101, 72, 51, 1273, 59, -101, 54, 55, -101, + -101, 324, -101, -101, -101, -101, -101, -101, 88, -101, + -101, -101, -101, 76, -101, -101, -101, -101, -101, -101, + 5, 49, 1273, 104, 84, -101, -101, 1457, -101, 70, + 41, 1, -101, 287, 68, 46, 643, 73, 77, 364, + 297, 369, 1273, 238, 1273, 1273, 1273, 1273, 341, 1273, + 1273, 1273, 1273, 1273, 297, 175, 167, 161, 176, 348, + 315, 331, 1273, -13, 1273, 63, 1273, -101, 545, 1273, + -101, 1273, 64, 40, 1273, 2, 2307, -101, 1273, 152, + 2307, -101, 1273, 69, 1273, 1273, 75, 79, 1273, -101, + 44, 149, 66, -101, -101, 1273, -101, 369, 1273, -101, + 52, 1273, -54, 2307, -101, 1273, 151, 2307, -101, -29, + 369, -41, -11, 2404, -46, -101, 2307, -101, 1273, 131, + 2307, -5, 2307, -101, 8, 13, -55, -101, -101, 2307, + -51, 360, -2, 352, 119, 1273, 2307, 39, -19, 366, + 3, -24, 910, 6, 7, -101, 1367, -101, 11, -16, + -4, 1273, -6, -31, 1273, 9, 1273, -12, 17, 1273, + -101, 2210, 37, -101, -101, -101, -101, -101, -101, 1273, + -101, -101, -101, -101, 258, -101, 1273, -15, -101, 2307, + -101, 117, -101, -101, 2307, -101, 1273, 106, 16, -101, + 38, -101, 135, 96, 1273, -101, 135, 43, -101, 18, + -101, 2307, -101, 101, 2307, -101, 179, -101, -101, 99, + 2307, 31, -101, -7, -8, -101, 369, -34, -1, -101, + -101, -101, -101, 1273, 124, 2307, -101, 1273, 122, 2307, + -101, 25, -101, 207, -101, -101, 1273, -101, -101, 290, + -101, -101, -101, 114, 1733, -101, -101, 1826, -101, -101, + 1550, -101, -101, -101, -101, -101, -101, 103, -101, -101, + -101, -101, -101, -101, -101, -101, 2404, -101, -101, -101, + 221, -43, 704, 164, -26, 12, -101, -101, 188, -101, + 196, -101, -101, -101, 369, 183, -101, 1273, -101, 165, + -101, -101, 170, 0, 369, 160, 10, 369, 113, -101, + -101, 215, -101, 1273, -101, 225, -101, -101, 203, 369, + 28, 1273, 229, -101, -101, 202, -101, 218, -101, 30, + -21, 369, 199, 278, -101, 110, -101, -101, -101, 1640, + 1092, 583, -101, -101, -101, -101, -101, 284, 2501, 1919, + 14, 388, 29, 424, 93, 1273, 2307, 39, -9, 338, + 21, -3, 821, 24, 23, -101, 1367, -101, 48, 20, + 47, 1273, 50, 26, 1273, 53, 1273, 27, 22, 264, + 120, -101, 15, 813, -101, -101, -101, -101, -101, 1183, + -101, -101, 19, -101, -101, 498, -101, 249, -82, 902, + -101, -101, 118, 369, -101, 204, -101, 80, -101, -101, + 369, -101, -101, 82, -101, -101, -101, -101, -101, -101, - -106, 12, -87, 18, 17, 212, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -53, - -106, -106, -106, -106, -106, -106, -106, -106, -106, 162, - -106, -106, -106, -4, -106, -106, -11, 24, 75, 76, - -106, 83, 55, -106, -106, 157, 158, -106, -106, -106, - -106, -106, 150, -106, 172, 176, -106, 168, 167, -106, - -106, -106, -106, 173, 154, 115, -106, -106, -106, -106, - 147, -106, 121, 113, 112, 125, -106, 128, 143, 146, - 140, 139, 136, -106, 122, 138, 130, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, 149, -106, - 153, -106, 110, 82, 46, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, 17, -83, 19, 24, 228, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -49, + -106, -106, -106, -106, -106, -106, -106, -106, -106, 101, + -106, -106, -106, 2, -106, -106, -2, 29, 107, 166, + -106, 204, 183, -106, -106, -106, 174, 169, -106, -106, + -106, -106, -106, 145, -106, 141, 137, -106, 152, 161, + -106, -106, -106, -106, 163, 158, 157, -106, -106, -106, + -106, 132, -106, 142, 138, 187, 178, -106, 167, 181, + 81, 82, 85, 83, -106, 93, 114, 96, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, 170, + -106, 74, -106, 109, 80, 51, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - 35, -106, -106, -106, -106, -106, 37, -106, -106, 45, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, 92, -106, 88, 58, -106, -106, 51, - -106, 209, 72, 78, -106, -106, -106, -106, -106, -106, - -106, -106, 27, -106, -106, -106, 63, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, 50, -106, -106, 28, -106, - 29, -106, 47, -106, 33, -106, -106, 66, -106, 73, - -106, -106, -106, 81, 53, -106, -106, -106, -106, -106, - -13, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, 25, -106, -106, -106, -106, -106, 41, -106, -106, + 50, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, 98, -106, 104, 43, -106, -106, + 42, -106, 221, 64, 117, -106, -106, -106, -106, -106, + -106, -106, -106, 54, -106, -106, -106, 55, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, 9, -106, -106, -106, -106, 111, -106, -106, -106, + -106, -106, -106, -106, -106, -106, 47, -106, -106, 38, + -106, 33, -106, 92, -106, 73, -106, -106, 88, -106, + 86, -106, -106, -106, 94, 23, -106, -106, -106, -106, + -106, -11, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - 3, 186, -106, 220, 228, 234, 204, -106, 90, 91, - 94, 97, 93, -106, -106, -106, -106, -106, -106, -106, - -106, 210, -106, 187, -106, 214, -106, -106, 208, -106, - 207, -106, -106, 155, -106, 8, -106, 4, -106, -1, - -106, 217, -106, 177, 185, -106, -106, 184, -106, -106, - -106, -106, -106, -106, 183, -106, 194, 105, -106, -106, - 99, -106, 71, -106, 74, -106, 65, -106, -106, 114, - -106, -106, -55, -106, -106, 64, -106, 44, -106, 30, - -106, 31, -106, -106, -106, -106, -106, -106, 57, -106, - 36, -106, 40, -106, 70, 59, -106, -106, 42, -106, - -106, 104, -106, -106, -106, 38, -106, -106, -106, -106, - 79, -106, 69, 108, -106, 84, -106, -106, 56, -106, - 68, -106, -106, -106, -106, -106, -106, -106, 52, -106, - -106, -106, -106, -106, -106, 109, -106, -106, 77, -106, - -106, -106, -106, 86, -106, 80, -106, -106, -106, -106, - -106, -59, -106, 43, -106, -63, -106, -106, -106, -106, - 98, -106, -106, 95, -106, -106, -106, -106, -106, 60, - -34, -106, -106, 32, -106, 41, -106, 39, -106, -106, - -106, -106, 49, -106, 61, -106, 62, -106, 48, -106, - -106, -106, -106, -106, -106, 23, -106, -106, 96, -106, - -106, -106, -106, 34, -106, -106, 133, -106, -106, 54, + -106, -106, 22, -106, -106, -106, -106, 105, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, 67, -106, -106, -106, -106, - -106, 22, -106, -106, -106, -106, -106, -106, -106, -22, - -106, -106, -106, -106, -106, -106, 2, -106, -106, -106, - -106, -106, -106, -106, -19, -106, -106, -106, -106, -106, - -106, -106, 100, -106, -106, -106, -106, -21, -106, -106, - -3, -106, -106, -106, -106, -106, 13, -106, -106, -106, - 11, 14, 10, -106, -106, -106, -106, -106, 279, 283, - -106, -106, -106, -106, -106, -106, 19, 273, 15, 16, - -106, 21, -106, 224, 6, -106, -106, 25, -106, -106, - 85, -106, -106, -106, 26, -106, -106, -106, -106, 20, - -106, 7, 87, -106, 107, -106, -106, -106, -106, -106, - -106, 317, -106, -106, -106, -106, -106, 277, -106, -106, - -106, 0, -106, -106, -2, 271, -106, -106, -106, 1, - -106, -106, -106, -106, -106, -106, 5, -106, -106, -106, - -106, -106, -106, -106, -106, -106}; + -106, 7, 235, -106, 249, 219, 216, 222, -106, 124, + 125, 123, 122, 116, -106, -106, -106, -106, -106, -106, + -106, -106, 191, -106, 232, -106, 225, -106, -106, 231, + -106, 156, -106, -106, 130, -106, 91, -106, 5, -106, + 8, -106, 233, -106, 200, 189, -106, -106, 198, -106, + -106, -106, -106, -106, -106, 245, -106, 108, 95, -106, + -106, 298, -106, 195, -106, 89, -106, 71, -106, -106, + 120, -106, -106, -5, -106, -106, 52, -106, 53, -106, + 56, -106, 60, -106, -106, -106, -106, -106, -106, 39, + -106, 37, -106, 49, -106, 133, 69, -106, -106, 59, + -106, -106, 102, -106, -106, -106, 79, -106, -106, -106, + -106, 62, -106, 45, 67, -106, 75, -106, -106, 44, + -106, 1, -106, -106, -106, -106, -106, -106, -106, 46, + -106, -106, -106, -106, -106, -106, 115, -106, -106, 66, + -106, -106, -106, -106, 70, -106, 77, -106, -106, -106, + -106, -106, -9, -106, 72, -106, -38, -106, -106, -106, + -106, 97, -106, -106, 99, -106, -106, -106, -106, -106, + 40, -51, -106, -106, 36, -106, 34, -106, 63, -106, + -106, -106, -106, 35, -106, 48, -106, 58, -106, 57, + -106, -106, -106, -106, -106, -106, 28, -106, -106, 90, + -106, -106, -106, -106, 65, -106, -106, 159, -106, -106, + 61, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, 87, -106, -106, -106, + -106, -106, -13, -106, -106, -106, -106, -106, -106, -106, + -18, -106, -106, -106, -10, -106, -106, 0, -106, -106, + -106, -106, -106, -106, -4, -12, -106, -6, -106, -106, + -106, -106, -106, 3, -106, -106, -106, -106, -23, -14, + -106, 11, -106, -106, -106, -106, -106, 15, -106, -106, + -106, 16, 18, 14, -106, -106, -106, -106, -106, 292, + 399, 180, -106, -106, -106, -106, -106, -106, 26, 286, + 20, 21, -106, 30, -106, 177, 10, -106, -106, 31, + -106, -106, 193, -106, -106, -106, 32, -106, -106, -106, + -106, 27, -106, 13, 76, -106, 68, -106, -106, -106, + -106, -106, -106, 230, -106, -106, -106, -106, -106, 290, + -106, -106, -3, -106, -106, 6, -106, -106, 4, 270, + -106, -106, -106, 9, -106, -106, -106, -106, -106, -106, + 12, -106, -106, -106, -106, -106, -106, -106, -106, -106}; const short QDeclarativeJSGrammar::action_info [] = { - -97, -98, 452, 611, -116, 527, 456, -124, 415, -121, - 439, 551, -119, -108, 347, -94, 611, 388, 635, 540, - 351, 341, 344, 342, 390, 539, -127, 256, 398, 402, - 100, 98, 70, -97, 400, 163, -98, 465, 524, -116, - 559, 447, 530, -108, 439, -127, 509, 439, 559, -94, - 537, 544, -121, 256, 443, -119, -124, 514, 439, 347, - 445, 526, 423, 452, 423, 430, 456, 423, 70, 554, - 169, 415, 345, 311, 100, 163, 419, 140, 146, 408, - 271, 413, 347, 251, 295, 271, 256, 0, 186, 452, - 0, 311, 456, 140, 429, 317, 0, 0, 0, 324, - 407, 178, 291, 98, 305, 558, 0, 235, 476, 0, - 439, 415, 300, 442, 291, 0, 189, 171, 140, 426, - 140, 148, 339, 182, 433, 140, 140, 443, 140, 303, - 326, 559, 140, 0, 140, 57, 172, 250, 188, 140, - 601, 140, 330, 293, 165, 0, 58, 313, 166, 140, - 332, 314, 631, 630, 255, 254, 477, 241, 240, 57, - 246, 245, 412, 411, 427, 57, 141, 529, 528, 63, - 58, 61, 336, 171, 248, 247, 58, 516, 253, 0, - 417, 468, 62, 327, 309, 334, 458, 57, 602, 248, - 247, 487, 172, 454, 522, 556, 555, 176, 58, 248, - 247, 625, 624, 84, 84, 85, 85, 140, 84, 84, - 85, 85, 63, 84, 64, 85, 86, 86, 510, 510, - 65, 86, 86, 84, 171, 85, 86, 63, 84, 0, - 85, 517, 515, 140, 469, 467, 86, 84, 140, 85, - 512, 86, 84, 172, 85, 405, 84, 102, 85, 140, - 86, 511, 628, 627, 140, 86, 84, 64, 85, 86, - 437, 436, 171, 65, 512, 512, 103, 510, 104, 86, - 546, 510, 64, 140, 510, 511, 511, 84, 65, 85, - 532, 172, 626, 405, 34, 0, 234, 233, 0, 0, - 86, 520, 519, 0, 0, 547, 545, 84, 0, 85, - 621, 0, 543, 542, 34, 0, 349, 0, 0, 0, - 86, 72, 73, 512, 622, 620, 34, 512, 0, 34, - 512, 47, 49, 48, 511, 0, 536, 535, 511, 171, - 0, 511, 34, 0, 533, 531, 72, 73, 74, 75, - 34, 47, 49, 48, 619, 34, 171, -85, 172, 34, - 173, 0, 34, 47, 49, 48, 47, 49, 48, 34, - 0, 0, 34, 74, 75, 172, 34, 173, 0, 47, - 49, 48, 34, 0, 171, 34, 0, 47, 49, 48, - 0, 0, 47, 49, 48, 0, 47, 49, 48, 47, - 49, 48, -85, 172, 0, 173, 47, 49, 48, 47, - 49, 48, 0, 47, 49, 48, 278, 279, 0, 47, - 49, 48, 47, 49, 48, 280, 278, 279, 281, 0, - 282, 0, 0, 34, 0, 280, 34, 0, 281, 34, - 282, 273, 274, -339, 278, 279, -339, 34, 0, 0, - 0, 0, 0, 280, 0, 0, 281, 0, 282, 34, - 0, 0, 0, 0, 0, 244, 243, 0, 275, 276, - 47, 49, 48, 47, 49, 48, 47, 49, 48, 244, - 243, 77, 78, 34, 47, 49, 48, 0, 0, 79, - 80, 239, 238, 81, 0, 82, 47, 49, 48, 77, - 78, 34, 0, 0, 0, 0, 0, 79, 80, 0, - 0, 81, 0, 82, 0, 239, 238, 77, 78, 34, - 47, 49, 48, 278, 279, 79, 80, 0, 0, 81, - 0, 82, 280, 244, 243, 281, 0, 282, 47, 49, - 48, 6, 5, 4, 1, 3, 2, 0, 0, 150, - 0, 239, 238, 0, 0, 0, 47, 49, 48, 151, - 0, 0, 0, 152, 0, 0, 0, 150, 0, 0, - 0, 0, 153, 0, 154, 0, 0, 151, 0, 0, - 0, 152, 0, 0, 0, 155, 0, 156, 61, 0, - 153, 0, 154, 0, 0, 157, 0, 0, 158, 62, - 77, 78, 0, 155, 159, 156, 61, 0, 79, 80, - 160, 0, 81, 157, 82, 0, 158, 62, 0, 0, - 0, 0, 159, 0, 0, 0, 161, 0, 160, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, - 31, 0, 0, 0, 161, 0, 0, 0, 0, 33, - 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, - 35, 36, 0, 37, 0, 0, 0, 0, 0, 0, - 501, 0, 0, 0, 44, 0, 0, 150, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, - 0, 152, 50, 47, 49, 48, 0, 51, 0, 0, - 153, 0, 154, 0, 0, 307, 0, 0, 43, 53, - 32, 0, 0, 155, 40, 156, 61, 0, 0, 0, - 0, 0, 0, 157, 0, 0, 158, 62, 0, 0, - 0, 0, 159, 0, 0, 0, 0, 0, 160, 0, + 401, -123, 440, -121, 403, -129, 333, 340, 615, 345, + -96, 352, 348, -118, -100, 389, -126, 257, -99, 342, + 416, 391, 343, 510, 453, 440, 448, 257, -96, 446, + -100, -118, 440, 348, 527, 541, -129, 525, 552, 555, + 538, 545, 466, 424, 399, 408, -110, 560, 560, 420, + 431, 444, 560, 457, -121, -99, 416, -123, 457, 440, + -126, 325, 306, 453, 272, 190, 294, 164, 187, 170, + 257, 272, 141, 430, 346, 312, 296, 312, 409, 414, + 294, 348, 251, 101, 99, 252, 318, 416, 236, 292, + 453, 457, 440, 183, 141, 189, 71, 335, 639, 164, + 147, 304, 179, 71, 99, 443, 427, 301, 434, 141, + 0, 141, 141, 331, 141, 0, 0, 292, 58, 444, + 141, 149, 477, 62, 0, 58, 0, 314, 603, 59, + 141, 315, 141, 172, 63, 141, 59, 247, 246, 141, + 424, 629, 628, 635, 634, 256, 255, 58, 615, 242, + 241, 428, 173, 101, 249, 248, 58, 327, 59, 141, + 141, 249, 248, 488, 254, 166, 418, 59, 142, 167, + 478, 557, 556, 141, 530, 529, 604, 172, 413, 412, + 249, 248, 459, 177, 455, 172, 85, 141, 86, 511, + 517, 350, 85, 523, 86, 559, 173, 64, 174, 87, + 85, 85, 86, 86, 173, 87, 406, 64, 141, 64, + 328, 337, 310, 87, 87, 469, 85, 85, 86, 86, + 0, 560, 533, 0, 0, 511, 521, 520, 511, 87, + 87, 0, 511, 141, 0, 513, 172, 141, 547, 513, + 438, 437, 65, 0, 518, 516, 512, 511, 66, 0, + 512, 103, 65, 0, 65, 173, 274, 275, 66, 0, + 66, 235, 234, 548, 546, 632, 631, 0, 470, 468, + 104, 513, 105, 172, 513, 0, 534, 532, 513, 172, + 561, 0, 512, 276, 277, 512, 537, 536, 34, 512, + 544, 543, 173, 513, 406, 630, 625, -87, 173, 172, + 174, 73, 74, 0, 512, 274, 275, 34, 0, 0, + 626, 624, 0, 0, 73, 74, 0, -87, 173, 34, + 174, 0, 85, 34, 86, 48, 50, 49, 75, 76, + 0, 0, 276, 277, 0, 87, 0, 0, 279, 280, + 623, 75, 76, 0, 48, 50, 49, 281, 0, 0, + 282, 45, 283, 34, 279, 280, 48, 50, 49, 0, + 48, 50, 49, 281, 279, 280, 282, 34, 283, 0, + 45, 279, 280, 281, -341, 0, 282, 0, 283, 0, + 281, 34, 45, 282, 0, 283, 45, 279, 280, 34, + 48, 50, 49, 0, 0, 34, 281, 0, 34, 282, + 0, 283, -341, 0, 48, 50, 49, 6, 5, 4, + 1, 3, 2, 245, 244, 0, 45, 34, 48, 50, + 49, 240, 239, 0, 0, 0, 48, 50, 49, 0, + 45, 0, 48, 50, 49, 48, 50, 49, 0, 0, + 0, 0, 0, 0, 45, 0, 0, 0, 0, 240, + 239, 0, 45, 34, 48, 50, 49, 0, 45, 0, + 0, 45, 34, 0, 0, 34, 0, 0, 0, 0, + 78, 79, 0, 0, 0, 0, 0, 0, 80, 81, + 45, 0, 82, 0, 83, 245, 244, 0, 0, 0, + 48, 50, 49, 0, 245, 244, 0, 240, 239, 48, + 50, 49, 48, 50, 49, 0, 0, 0, 0, 0, + 30, 31, 0, 0, 0, 0, 45, 0, 0, 0, + 33, 0, 0, 0, 0, 45, 0, 34, 45, 0, + 0, 35, 36, 0, 37, 0, 0, 0, 0, 0, + 0, 502, 0, 0, 0, 44, 0, 0, 151, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, + 0, 0, 153, 51, 48, 50, 49, 0, 52, 0, + 0, 154, 0, 155, 0, 0, 0, 0, 0, 43, + 54, 32, 0, 0, 156, 40, 157, 62, 0, 0, + 45, 0, 0, 0, 158, 30, 31, 159, 63, 0, + 0, 0, 0, 160, 0, 33, 0, 0, 0, 161, + 0, 0, 34, 0, 0, 0, 35, 36, 0, 37, + 0, 0, 0, 0, 0, 162, 502, 0, 0, 0, + 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 151, 0, 51, 48, + 50, 49, 0, 52, 0, 0, 152, 0, 0, 0, + 153, 0, 0, 0, 43, 54, 32, 0, 0, 154, + 40, 155, 0, 0, 308, 45, 0, 0, 0, 0, + 0, 0, 156, 0, 157, 62, 0, 0, 0, 0, + 0, 0, 158, 0, 0, 159, 63, 0, 0, 0, + 0, 160, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 0, 0, - 0, 0, 0, 0, 161, 0, 33, 0, 0, 0, + 0, 0, 0, 162, 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 35, 36, 0, - 37, 0, 0, 0, 30, 31, 0, 41, 0, 0, + 37, 0, 0, 0, 30, 31, 0, 502, 0, 0, 0, 44, 0, 0, 33, 0, 0, 0, 0, 0, - 0, 34, 0, 0, 0, 35, 36, 0, 37, 50, - 47, 49, 48, 0, 51, 501, 0, 0, 0, 44, - 0, 0, 0, 0, 0, 43, 53, 32, 0, 0, - 0, 40, 0, 0, 0, 0, 0, 50, 47, 49, - 48, 0, 51, 0, 500, 0, 30, 31, 0, 0, - 0, 0, 0, 43, 53, 32, 214, 0, 0, 40, - 0, 0, 0, 34, 0, 0, 0, 35, 36, 0, - 37, 0, 30, 31, 0, 0, 0, 501, 0, 0, - 0, 44, 33, 0, 0, 0, 0, 0, 0, 34, - 0, 0, 0, 35, 36, 0, 37, 0, 0, 50, - 502, 504, 503, 41, 51, 0, 0, 44, 0, 225, - 0, 0, 0, 0, 0, 43, 53, 32, 209, 0, - 0, 40, 0, 0, 0, 50, 47, 49, 48, 0, - 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 43, 53, 32, 0, 0, 0, 40, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 500, 0, 30, 31, 0, 0, 0, 0, 0, 0, - 0, 0, 214, 0, 0, 0, 0, 0, 0, 34, - 0, 0, 0, 35, 36, 0, 37, 0, 0, 0, - 0, 0, 0, 501, 0, 0, 0, 44, 0, 0, - 0, 0, 0, 0, 0, 608, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 50, 502, 504, 503, 0, - 51, 0, 0, 0, 0, 225, 0, 0, 0, 0, - 0, 43, 53, 32, 209, 0, 0, 40, 0, 0, + 0, 34, 0, 0, 0, 35, 36, 0, 37, 51, + 48, 50, 49, 0, 52, 41, 0, 0, 0, 44, + 0, 0, 0, 0, 0, 43, 54, 32, 0, 0, + 0, 40, 0, 0, 0, 0, 45, 51, 48, 50, + 49, 0, 52, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 43, 54, 32, 0, 0, 0, 40, + 0, 0, 0, 0, 45, 30, 31, 0, 0, 0, + 0, 0, 0, 30, 31, 33, 0, 0, 0, 0, + 0, 0, 34, 33, 0, 0, 35, 36, 0, 37, + 34, 0, 0, 0, 35, 36, 502, 37, 0, 0, + 44, 0, 0, 0, 41, 0, 0, 0, 44, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 48, + 50, 49, 0, 52, 0, 0, 51, 48, 50, 49, + 0, 52, 0, 0, 43, 54, 32, 0, 0, 0, + 40, 0, 43, 54, 32, 45, 0, 0, 40, 0, + 0, 0, 0, 45, 30, 31, 0, 0, 0, 0, + 0, 0, 30, 31, 33, 0, 0, 0, 0, 0, + 0, 34, 33, 0, 0, 35, 36, 0, 37, 34, + 0, 0, 0, 35, 36, 502, 37, 0, 0, 44, + 0, 0, 0, 41, 0, 0, 0, 44, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 51, 48, 50, + 49, 0, 52, 0, 0, 51, 48, 50, 49, 0, + 52, 0, 0, 43, 54, 32, 0, 0, 0, 40, + 0, 43, 54, 32, 45, 0, 0, 40, 0, 0, + 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, + 0, 501, 0, 30, 31, 0, 0, 0, 0, 0, + 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 35, 36, 0, 37, 0, 0, + 0, 0, 0, 0, 502, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 500, 0, 30, 31, 0, 0, 0, 0, 0, 0, - 0, 0, 214, 0, 0, 0, 0, 0, 0, 34, + 0, 0, 0, 0, 0, 0, 51, 503, 505, 504, + 0, 52, 0, 0, 0, 0, 226, 0, 0, 0, + 0, 0, 43, 54, 32, 210, 0, 0, 40, 0, + 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, + 0, 0, 501, 0, 30, 31, 0, 0, 0, 0, + 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, + 0, 34, 0, 0, 0, 35, 36, 0, 37, 0, + 0, 0, 0, 0, 0, 502, 0, 0, 0, 44, + 0, 0, 0, 0, 0, 0, 0, 607, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 51, 503, 505, + 504, 0, 52, 0, 0, 0, 0, 226, 0, 0, + 0, 0, 0, 43, 54, 32, 210, 0, 0, 40, + 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, + 0, 0, 0, 501, 0, 30, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, + 0, 0, 34, 0, 0, 0, 35, 36, 0, 37, + 0, 0, 0, 0, 0, 0, 502, 0, 0, 0, + 44, 0, 0, 0, 0, 0, 0, 0, 610, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 503, + 505, 504, 0, 52, 0, 0, 0, 0, 226, 0, + 0, 0, 0, 0, 43, 54, 32, 210, 0, 0, + 40, 0, 0, 0, 0, 45, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 30, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, + 0, 0, 34, 0, 0, 0, 35, 36, 0, 37, + 0, 0, 0, 38, 0, 39, 41, 42, 0, 0, + 44, 0, 0, 0, 46, 0, 47, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 48, + 50, 49, 0, 52, 0, 53, 0, 55, 0, 56, + 0, 0, 0, 0, 43, 54, 32, 0, 0, 0, + 40, 0, 0, 0, 0, 45, 0, 0, 0, 0, + 0, 0, 0, 0, -119, 0, 0, 0, 29, 30, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, + 35, 36, 0, 37, 0, 0, 0, 38, 0, 39, + 41, 42, 0, 0, 44, 0, 0, 0, 46, 0, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 51, 48, 50, 49, 0, 52, 0, 53, + 0, 55, 0, 56, 0, 0, 0, 0, 43, 54, + 32, 0, 0, 0, 40, 0, 0, 0, 0, 45, + 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, + 35, 36, 0, 37, 0, 0, 0, 38, 0, 39, + 41, 42, 0, 0, 44, 0, 0, 0, 46, 0, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 51, 48, 50, 49, 0, 52, 0, 53, + 0, 55, 271, 56, 0, 0, 0, 0, 43, 54, + 32, 0, 0, 0, 40, 0, 0, 0, 0, 45, + 0, 0, 0, 0, 0, 0, 0, 0, 483, 0, + 0, 29, 30, 31, 0, 0, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 35, 36, 0, 37, 0, 0, 0, - 0, 0, 0, 501, 0, 0, 0, 44, 0, 0, - 0, 0, 0, 0, 0, 605, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 50, 502, 504, 503, 0, - 51, 0, 0, 0, 0, 225, 0, 0, 0, 0, - 0, 43, 53, 32, 209, 0, 0, 40, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 39, 41, 42, 0, 0, 44, 0, 0, + 0, 46, 0, 47, 0, 0, 484, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 48, 50, 49, 0, + 52, 0, 53, 0, 55, 0, 56, 0, 0, 0, + 0, 43, 54, 32, 0, 0, 0, 40, 0, 0, + 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, + 0, 29, 30, 31, 0, 0, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, + 217, 0, 0, 568, 569, 0, 37, 0, 0, 0, + 38, 0, 39, 41, 42, 0, 0, 44, 0, 0, + 0, 46, 0, 47, 0, 0, 0, 0, 0, 0, + 0, 221, 0, 0, 0, 51, 48, 50, 49, 0, + 52, 0, 53, 0, 55, 0, 56, 0, 0, 0, + 0, 43, 54, 32, 0, 0, 0, 40, 0, 0, + 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, + 0, 483, 0, 0, 29, 30, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, + 0, 0, 34, 0, 0, 0, 35, 36, 0, 37, + 0, 0, 0, 38, 0, 39, 41, 42, 0, 0, + 44, 0, 0, 0, 46, 0, 47, 0, 0, 486, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 48, + 50, 49, 0, 52, 0, 53, 0, 55, 0, 56, + 0, 0, 0, 0, 43, 54, 32, 0, 0, 0, + 40, 0, 0, 0, 0, 45, 0, 0, 0, 0, + 0, 0, 0, 0, 475, 0, 0, 29, 30, 31, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 0, 0, 0, 34, 0, 0, 0, 35, + 36, 0, 37, 0, 0, 0, 38, 0, 39, 41, + 42, 0, 0, 44, 0, 0, 0, 46, 0, 47, + 0, 0, 481, 0, 0, 0, 0, 0, 0, 0, + 0, 51, 48, 50, 49, 0, 52, 0, 53, 0, + 55, 0, 56, 0, 0, 0, 0, 43, 54, 32, + 0, 0, 0, 40, 0, 0, 0, 0, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 475, 0, 0, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 35, 36, 0, 37, 0, 0, 0, 38, 0, 39, 41, 42, 0, 0, 44, 0, 0, 0, - 45, 0, 46, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 50, 47, 49, 48, 0, 51, - 0, 52, 0, 54, 0, 55, 0, 0, 0, 0, - 43, 53, 32, 0, 0, 0, 40, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, - 0, 0, 0, 29, 30, 31, 0, 0, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, - 0, 34, 0, 0, 0, 35, 36, 0, 37, 0, - 0, 0, 38, 0, 39, 41, 42, 0, 0, 44, - 0, 0, 0, 45, 0, 46, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 50, 47, 49, - 48, 0, 51, 0, 52, 0, 54, 0, 55, 0, - 0, 0, 0, 43, 53, 32, 0, 0, 0, 40, + 46, 0, 47, 0, 0, 476, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 48, 50, 49, 0, 52, + 0, 53, 0, 55, 0, 56, 0, 0, 0, 0, + 43, 54, 32, 0, 0, 0, 40, 0, 0, 0, + 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, + 109, 110, 111, 0, 0, 113, 115, 116, 0, 0, + 117, 0, 118, 0, 0, 0, 120, 121, 122, 0, + 0, 0, 0, 0, 0, 34, 123, 124, 125, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 29, 30, 31, 0, 0, 0, 0, 0, - 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, - 34, 0, 0, 0, 35, 36, 0, 37, 0, 0, - 0, 38, 0, 39, 41, 42, 0, 0, 44, 0, - 0, 0, 45, 0, 46, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 47, 49, 48, - 0, 51, 0, 52, 0, 54, 270, 55, 0, 0, - 0, 0, 43, 53, 32, 0, 0, 0, 40, 0, + 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, + 0, 0, 48, 50, 49, 130, 131, 132, 0, 134, + 135, 136, 137, 138, 139, 0, 0, 127, 133, 119, + 112, 114, 128, 0, 0, 0, 0, 0, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 109, 110, 111, + 0, 0, 113, 115, 116, 0, 0, 117, 0, 118, + 0, 0, 0, 120, 121, 122, 0, 0, 0, 0, + 0, 0, 393, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, + 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 129, 0, 0, 0, 0, 0, 398, 395, + 397, 0, 130, 131, 132, 0, 134, 135, 136, 137, + 138, 139, 0, 0, 127, 133, 119, 112, 114, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 29, 30, 31, 0, 0, 0, 0, 0, 0, - 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, - 216, 0, 0, 566, 567, 0, 37, 0, 0, 0, - 38, 0, 39, 41, 42, 0, 0, 44, 0, 0, - 0, 45, 0, 46, 0, 0, 0, 0, 0, 0, - 0, 220, 0, 0, 0, 50, 47, 49, 48, 0, - 51, 0, 52, 0, 54, 0, 55, 0, 0, 0, - 0, 43, 53, 32, 0, 0, 0, 40, 0, 0, + 0, 0, 0, 0, 109, 110, 111, 0, 0, 113, + 115, 116, 0, 0, 117, 0, 118, 0, 0, 0, + 120, 121, 122, 0, 0, 0, 0, 0, 0, 393, + 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 0, 0, 0, 394, 0, 0, + 0, 0, 0, 0, 0, 396, 0, 0, 0, 129, + 0, 0, 0, 0, 0, 398, 395, 397, 0, 130, + 131, 132, 0, 134, 135, 136, 137, 138, 139, 0, + 0, 127, 133, 119, 112, 114, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 474, 0, 0, 29, 30, 31, 0, 0, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, - 0, 34, 0, 0, 0, 35, 36, 0, 37, 0, - 0, 0, 38, 0, 39, 41, 42, 0, 0, 44, - 0, 0, 0, 45, 0, 46, 0, 0, 475, 0, - 0, 0, 0, 0, 0, 0, 0, 50, 47, 49, - 48, 0, 51, 0, 52, 0, 54, 0, 55, 0, - 0, 0, 0, 43, 53, 32, 0, 0, 0, 40, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 474, 0, 0, 29, 30, 31, 0, 0, - 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 34, 0, 0, 0, 35, 36, 0, + 0, 209, 0, 0, 0, 0, 211, 0, 29, 30, + 31, 213, 0, 0, 0, 0, 0, 0, 214, 33, + 0, 0, 0, 0, 0, 0, 216, 217, 0, 0, + 218, 36, 0, 37, 0, 0, 0, 38, 0, 39, + 41, 42, 0, 0, 44, 0, 0, 0, 46, 0, + 47, 0, 0, 0, 0, 0, 220, 0, 221, 0, + 0, 0, 51, 219, 222, 49, 223, 52, 224, 53, + 225, 55, 226, 56, 227, 228, 0, 0, 43, 54, + 32, 210, 212, 0, 40, 0, 0, 0, 0, 45, + 0, 0, 0, 0, 0, 0, 0, 0, 209, 0, + 0, 0, 0, 211, 0, 29, 30, 31, 213, 0, + 0, 0, 0, 0, 0, 214, 215, 0, 0, 0, + 0, 0, 0, 216, 217, 0, 0, 218, 36, 0, 37, 0, 0, 0, 38, 0, 39, 41, 42, 0, - 0, 44, 0, 0, 0, 45, 0, 46, 0, 0, - 480, 0, 0, 0, 0, 0, 0, 0, 0, 50, - 47, 49, 48, 0, 51, 0, 52, 0, 54, 0, - 55, 0, 0, 0, 0, 43, 53, 32, 0, 0, - 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 482, 0, 0, 29, 30, 31, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, - 0, 0, 0, 0, 0, 34, 0, 0, 0, 35, - 36, 0, 37, 0, 0, 0, 38, 0, 39, 41, - 42, 0, 0, 44, 0, 0, 0, 45, 0, 46, - 0, 0, 485, 0, 0, 0, 0, 0, 0, 0, - 0, 50, 47, 49, 48, 0, 51, 0, 52, 0, - 54, 0, 55, 0, 0, 0, 0, 43, 53, 32, - 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 482, 0, 0, 29, - 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, - 0, 35, 36, 0, 37, 0, 0, 0, 38, 0, - 39, 41, 42, 0, 0, 44, 0, 0, 0, 45, - 0, 46, 0, 0, 483, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 47, 49, 48, 0, 51, 0, - 52, 0, 54, 0, 55, 0, 0, 0, 0, 43, - 53, 32, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, - 110, 0, 0, 112, 114, 115, 0, 0, 116, 0, - 117, 0, 0, 0, 119, 120, 121, 0, 0, 0, - 0, 0, 0, 34, 122, 123, 124, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, + 0, 44, 0, 0, 0, 46, 0, 47, 0, 0, + 0, 0, 0, 220, 0, 221, 0, 0, 0, 51, + 219, 222, 49, 223, 52, 224, 53, 225, 55, 226, + 56, 227, 228, 0, 0, 43, 54, 32, 210, 212, + 0, 40, 0, 0, 0, 0, 45, 0, 0, 0, + 0, 0, 0, 0, 0, 571, 110, 111, 0, 0, + 573, 115, 575, 30, 31, 576, 0, 118, 0, 0, + 0, 120, 578, 579, 0, 0, 0, 0, 0, 0, + 580, 581, 124, 125, 218, 36, 0, 37, 0, 0, + 0, 38, 0, 39, 582, 42, 0, 0, 584, 0, + 0, 0, 46, 0, 47, 0, 0, 0, 0, 0, + 586, 0, 221, 0, 0, 0, 588, 585, 587, 49, + 589, 590, 591, 53, 593, 594, 595, 596, 597, 598, + 0, 0, 583, 592, 577, 572, 574, 128, 40, 0, + 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, + 0, 0, 361, 110, 111, 0, 0, 363, 115, 365, + 30, 31, 366, 0, 118, 0, 0, 0, 120, 368, + 369, 0, 0, 0, 0, 0, 0, 370, 371, 124, + 125, 218, 36, 0, 37, 0, 0, 0, 38, 0, + 39, 372, 42, 0, 0, 374, 0, 0, 0, 46, + 0, 47, 0, -265, 0, 0, 0, 376, 0, 221, + 0, 0, 0, 378, 375, 377, 49, 379, 380, 381, + 53, 383, 384, 385, 386, 387, 388, 0, 0, 373, + 382, 367, 362, 364, 128, 40, 0, 0, 0, 0, + 45, 0, 0, 0, 0, 0, 0, 0, 0, + + 522, 540, 539, 519, 461, 515, 535, 514, 309, 528, + 311, 531, 250, 526, 542, 636, 613, 182, 150, 622, + 16, 496, 320, 497, 627, 253, 498, 633, 358, 554, + 436, 558, 487, 472, 439, 302, 238, 392, 454, 606, + 551, 402, 358, 553, 439, 243, 182, 445, 243, 447, + 456, 237, 238, 238, 347, 429, 349, 450, 351, 460, + 143, 458, 353, 467, 243, 436, 439, 176, 410, 186, + 188, 250, 415, 338, 182, 433, 148, 171, 169, 390, + 417, 400, 302, 140, 449, 163, 146, 425, 339, 302, + 358, 237, 336, 307, 250, 344, 482, 436, 302, 358, + 485, 358, 0, 0, 0, 461, 0, 0, 0, 0, + 0, 60, 60, 451, 452, 404, 0, 0, 60, 60, + 60, 452, 451, 320, 106, 60, 60, 60, 102, 60, + 92, 93, 95, 302, 94, 186, 0, 60, 0, 0, + 60, 88, 60, 405, 90, 60, 108, 180, 60, 266, + 146, 60, 146, 489, 270, 407, 165, 178, 60, 302, + 60, 0, 89, 330, 168, 288, 60, 60, 60, 60, + 0, 287, 286, 284, 285, 471, 60, 60, 432, 180, + 435, 60, 60, 452, 72, 60, 60, 451, 96, 60, + 480, 494, 77, 500, 479, 329, 60, 334, 305, 61, + 612, 60, 60, 69, 68, 60, 404, 60, 70, 67, + 60, 60, 490, 60, 60, 493, 84, 404, 60, 341, + 492, 60, 60, 180, 303, 60, 100, 60, 98, 491, + 91, 60, 0, 298, 405, 60, 106, 97, 270, 0, + 270, 500, 298, 500, 60, 405, 605, 270, 293, 270, + 602, 0, 0, 0, 0, 317, 499, 509, 108, 175, + 60, 316, 0, 60, 319, 270, 60, 290, 270, 298, + 289, 270, 0, 291, 270, 298, 60, 60, 0, 60, + 270, 270, 270, 500, 270, 0, 637, 295, 273, 298, + 602, 297, 313, 60, 270, 611, 0, 300, 270, 599, + 278, 302, 601, 500, 0, 567, 602, 0, 0, 0, + 0, 326, 570, 563, 564, 565, 566, 0, 499, 509, + 0, 472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, - 47, 49, 48, 129, 130, 131, 0, 133, 134, 135, - 136, 137, 138, 0, 0, 126, 132, 118, 111, 113, - 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 108, 109, 110, 0, 0, 112, - 114, 115, 0, 0, 116, 0, 117, 0, 0, 0, - 119, 120, 121, 0, 0, 0, 0, 0, 0, 392, - 122, 123, 124, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 125, 0, 0, 0, 393, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, - 0, 0, 0, 0, 0, 397, 394, 396, 0, 129, - 130, 131, 0, 133, 134, 135, 136, 137, 138, 0, - 0, 126, 132, 118, 111, 113, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 109, 110, 0, 0, 112, 114, 115, 0, 0, - 116, 0, 117, 0, 0, 0, 119, 120, 121, 0, - 0, 0, 0, 0, 0, 392, 122, 123, 124, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, - 0, 0, 0, 393, 0, 0, 0, 0, 0, 0, - 0, 395, 0, 0, 0, 128, 0, 0, 0, 0, - 0, 397, 394, 396, 0, 129, 130, 131, 0, 133, - 134, 135, 136, 137, 138, 0, 0, 126, 132, 118, - 111, 113, 127, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, - 0, 210, 0, 29, 30, 31, 212, 0, 0, 0, - 0, 0, 0, 213, 33, 0, 0, 0, 0, 0, - 0, 215, 216, 0, 0, 217, 36, 0, 37, 0, - 0, 0, 38, 0, 39, 41, 42, 0, 0, 44, - 0, 0, 0, 45, 0, 46, 0, 0, 0, 0, - 0, 219, 0, 220, 0, 0, 0, 50, 218, 221, - 48, 222, 51, 223, 52, 224, 54, 225, 55, 226, - 227, 0, 0, 43, 53, 32, 209, 211, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 208, 0, 0, 0, 0, 210, 0, 29, - 30, 31, 212, 0, 0, 0, 0, 0, 0, 213, - 214, 0, 0, 0, 0, 0, 0, 215, 216, 0, - 0, 217, 36, 0, 37, 0, 0, 0, 38, 0, - 39, 41, 42, 0, 0, 44, 0, 0, 0, 45, - 0, 46, 0, 0, 0, 0, 0, 219, 0, 220, - 0, 0, 0, 50, 218, 221, 48, 222, 51, 223, - 52, 224, 54, 225, 55, 226, 227, 0, 0, 43, - 53, 32, 209, 211, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 569, 109, - 110, 0, 0, 571, 114, 573, 30, 31, 574, 0, - 117, 0, 0, 0, 119, 576, 577, 0, 0, 0, - 0, 0, 0, 578, 579, 123, 124, 217, 36, 0, - 37, 0, 0, 0, 38, 0, 39, 580, 42, 0, - 0, 582, 0, 0, 0, 45, 0, 46, 0, 0, - 0, 0, 0, 584, 0, 220, 0, 0, 0, 586, - 583, 585, 48, 587, 588, 589, 52, 591, 592, 593, - 594, 595, 596, 0, 0, 581, 590, 575, 570, 572, - 127, 40, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 360, 109, 110, 0, 0, 362, - 114, 364, 30, 31, 365, 0, 117, 0, 0, 0, - 119, 367, 368, 0, 0, 0, 0, 0, 0, 369, - 370, 123, 124, 217, 36, 0, 37, 0, 0, 0, - 38, 0, 39, 371, 42, 0, 0, 373, 0, 0, - 0, 45, 0, 46, 0, -263, 0, 0, 0, 375, - 0, 220, 0, 0, 0, 377, 374, 376, 48, 378, - 379, 380, 52, 382, 383, 384, 385, 386, 387, 0, - 0, 372, 381, 366, 361, 363, 127, 40, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 541, 310, 460, 513, 538, 518, 525, 308, 249, 632, - 306, 181, 252, 618, 149, 16, 623, 495, 319, 497, - 629, 357, 496, 435, 471, 553, 557, 486, 438, 301, - 428, 237, 350, 352, 604, 521, 242, 424, 550, 552, - 181, 301, 185, 237, 242, 343, 432, 348, 338, 249, - 459, 237, 453, 449, 236, 242, 446, 181, 466, 401, - 448, 249, 357, 455, 444, 457, 346, 337, 357, 484, - 142, 236, 147, 333, 438, 175, 301, 335, 187, 409, - 162, 145, 435, 416, 435, 139, 170, 399, 414, 481, - 438, 389, 0, 168, 0, 0, 403, 357, 403, 59, - 357, 490, 301, 534, 391, 0, 0, 0, 301, 0, - 0, 460, 0, 145, 59, 0, 179, 403, 177, 59, - 59, 488, 489, 0, 404, 105, 404, 0, 59, 185, - 451, 59, 59, 450, 59, 59, 59, 59, 59, 283, - 284, 59, 287, 285, 145, 404, 286, 107, 167, 406, - 164, 59, 59, 451, 450, 265, 59, 59, 301, 59, - 269, 68, 96, 95, 479, 59, 59, 331, 478, 59, - 87, 76, 59, 329, 59, 97, 434, 83, 89, 431, - 59, 470, 59, 59, 59, 94, 88, 59, 93, 92, - 59, 59, 90, 59, 59, 91, 493, 59, 59, 71, - 67, 59, 59, 491, 492, 99, 59, 101, 179, 319, - 301, 59, 59, 340, 69, 60, 59, 59, 450, 66, - 59, 59, 451, 304, 105, 499, 269, 297, 297, 297, - 59, 59, 269, 269, 269, 269, 269, 0, 315, 272, - 498, 508, 294, 0, 0, 0, 107, 174, 59, 325, - 318, 316, 297, 269, 59, 290, 0, 269, 297, 269, - 0, 59, 0, 269, 59, 0, 269, 292, 59, 269, - 179, 277, 59, 0, 299, 302, 312, 269, 59, 288, - 296, 328, 609, 269, 499, 289, 597, 633, 606, 599, - 499, 600, 565, 600, 0, 0, 499, 0, 0, 568, - 561, 562, 563, 564, 0, 498, 508, 0, 471, 0, - 0, 498, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 499, 0, 0, 603, 0, 0, 0, 600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 608, 0, 0, 0, 0, 0, + 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 499, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -636,148 +663,174 @@ const short QDeclarativeJSGrammar::action_info [] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0}; + 0, 0, 0, 0, 0}; const short QDeclarativeJSGrammar::action_check [] = { - 7, 7, 36, 90, 7, 29, 36, 7, 36, 7, - 33, 8, 7, 7, 36, 7, 90, 7, 0, 7, - 16, 60, 55, 33, 8, 29, 7, 36, 7, 55, - 79, 48, 1, 7, 55, 2, 7, 17, 37, 7, - 33, 60, 29, 7, 33, 7, 66, 33, 33, 7, - 66, 29, 7, 36, 20, 7, 7, 29, 33, 36, - 36, 24, 5, 36, 5, 7, 36, 5, 1, 60, - 7, 36, 7, 2, 79, 2, 33, 8, 8, 7, - 1, 7, 36, 36, 8, 1, 36, -1, 8, 36, - -1, 2, 36, 8, 55, 7, -1, -1, -1, 17, - 60, 60, 48, 48, 60, 7, -1, 55, 8, -1, - 33, 36, 61, 6, 48, -1, 33, 15, 8, 10, - 8, 60, 36, 36, 7, 8, 8, 20, 8, 61, - 8, 33, 8, -1, 8, 40, 34, 77, 60, 8, - 8, 8, 61, 79, 50, -1, 51, 50, 54, 8, - 60, 54, 61, 62, 61, 62, 56, 61, 62, 40, - 61, 62, 61, 62, 55, 40, 56, 61, 62, 12, - 51, 42, 60, 15, 61, 62, 51, 7, 60, -1, - 60, 8, 53, 61, 60, 31, 60, 40, 56, 61, - 62, 60, 34, 60, 29, 61, 62, 56, 51, 61, - 62, 61, 62, 25, 25, 27, 27, 8, 25, 25, - 27, 27, 12, 25, 57, 27, 38, 38, 29, 29, - 63, 38, 38, 25, 15, 27, 38, 12, 25, -1, - 27, 61, 62, 8, 61, 62, 38, 25, 8, 27, - 75, 38, 25, 34, 27, 36, 25, 15, 27, 8, - 38, 86, 61, 62, 8, 38, 25, 57, 27, 38, - 61, 62, 15, 63, 75, 75, 34, 29, 36, 38, - 36, 29, 57, 8, 29, 86, 86, 25, 63, 27, - 7, 34, 91, 36, 29, -1, 61, 62, -1, -1, - 38, 61, 62, -1, -1, 61, 62, 25, -1, 27, - 47, -1, 61, 62, 29, -1, 60, -1, -1, -1, - 38, 18, 19, 75, 61, 62, 29, 75, -1, 29, - 75, 66, 67, 68, 86, -1, 61, 62, 86, 15, - -1, 86, 29, -1, 61, 62, 18, 19, 45, 46, - 29, 66, 67, 68, 91, 29, 15, 33, 34, 29, - 36, -1, 29, 66, 67, 68, 66, 67, 68, 29, - -1, -1, 29, 45, 46, 34, 29, 36, -1, 66, - 67, 68, 29, -1, 15, 29, -1, 66, 67, 68, - -1, -1, 66, 67, 68, -1, 66, 67, 68, 66, - 67, 68, 33, 34, -1, 36, 66, 67, 68, 66, - 67, 68, -1, 66, 67, 68, 23, 24, -1, 66, - 67, 68, 66, 67, 68, 32, 23, 24, 35, -1, - 37, -1, -1, 29, -1, 32, 29, -1, 35, 29, - 37, 18, 19, 36, 23, 24, 36, 29, -1, -1, - -1, -1, -1, 32, -1, -1, 35, -1, 37, 29, - -1, -1, -1, -1, -1, 61, 62, -1, 45, 46, - 66, 67, 68, 66, 67, 68, 66, 67, 68, 61, - 62, 23, 24, 29, 66, 67, 68, -1, -1, 31, - 32, 61, 62, 35, -1, 37, 66, 67, 68, 23, - 24, 29, -1, -1, -1, -1, -1, 31, 32, -1, - -1, 35, -1, 37, -1, 61, 62, 23, 24, 29, - 66, 67, 68, 23, 24, 31, 32, -1, -1, 35, - -1, 37, 32, 61, 62, 35, -1, 37, 66, 67, - 68, 92, 93, 94, 95, 96, 97, -1, -1, 3, - -1, 61, 62, -1, -1, -1, 66, 67, 68, 13, - -1, -1, -1, 17, -1, -1, -1, 3, -1, -1, - -1, -1, 26, -1, 28, -1, -1, 13, -1, -1, - -1, 17, -1, -1, -1, 39, -1, 41, 42, -1, - 26, -1, 28, -1, -1, 49, -1, -1, 52, 53, - 23, 24, -1, 39, 58, 41, 42, -1, 31, 32, - 64, -1, 35, 49, 37, -1, 52, 53, -1, -1, - -1, -1, 58, -1, -1, -1, 80, -1, 64, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, - 13, -1, -1, -1, 80, -1, -1, -1, -1, 22, - -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, - 33, 34, -1, 36, -1, -1, -1, -1, -1, -1, - 43, -1, -1, -1, 47, -1, -1, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, - -1, 17, 65, 66, 67, 68, -1, 70, -1, -1, - 26, -1, 28, -1, -1, 31, -1, -1, 81, 82, - 83, -1, -1, 39, 87, 41, 42, -1, -1, -1, - -1, -1, -1, 49, -1, -1, 52, 53, -1, -1, - -1, -1, 58, -1, -1, -1, -1, -1, 64, -1, + 55, 7, 33, 7, 55, 7, 60, 36, 90, 55, + 7, 16, 36, 7, 7, 7, 7, 36, 7, 60, + 36, 8, 33, 66, 36, 33, 60, 36, 7, 36, + 7, 7, 33, 36, 24, 7, 7, 37, 8, 60, + 66, 29, 17, 5, 7, 60, 7, 33, 33, 33, + 7, 20, 33, 36, 7, 7, 36, 7, 36, 33, + 7, 17, 60, 36, 1, 33, 79, 2, 8, 7, + 36, 1, 8, 55, 7, 2, 8, 2, 7, 7, + 79, 36, 77, 79, 48, 36, 7, 36, 55, 48, + 36, 36, 33, 36, 8, 60, 1, 31, 0, 2, + 8, 61, 60, 1, 48, 6, 10, 61, 7, 8, + -1, 8, 8, 61, 8, -1, -1, 48, 40, 20, + 8, 60, 8, 42, -1, 40, -1, 50, 8, 51, + 8, 54, 8, 15, 53, 8, 51, 61, 62, 8, + 5, 61, 62, 61, 62, 61, 62, 40, 90, 61, + 62, 55, 34, 79, 61, 62, 40, 8, 51, 8, + 8, 61, 62, 60, 60, 50, 60, 51, 56, 54, + 56, 61, 62, 8, 61, 62, 56, 15, 61, 62, + 61, 62, 60, 56, 60, 15, 25, 8, 27, 29, + 7, 60, 25, 29, 27, 7, 34, 12, 36, 38, + 25, 25, 27, 27, 34, 38, 36, 12, 8, 12, + 61, 60, 60, 38, 38, 8, 25, 25, 27, 27, + -1, 33, 7, -1, -1, 29, 61, 62, 29, 38, + 38, -1, 29, 8, -1, 75, 15, 8, 36, 75, + 61, 62, 57, -1, 61, 62, 86, 29, 63, -1, + 86, 15, 57, -1, 57, 34, 18, 19, 63, -1, + 63, 61, 62, 61, 62, 61, 62, -1, 61, 62, + 34, 75, 36, 15, 75, -1, 61, 62, 75, 15, + 92, -1, 86, 45, 46, 86, 61, 62, 29, 86, + 61, 62, 34, 75, 36, 91, 47, 33, 34, 15, + 36, 18, 19, -1, 86, 18, 19, 29, -1, -1, + 61, 62, -1, -1, 18, 19, -1, 33, 34, 29, + 36, -1, 25, 29, 27, 66, 67, 68, 45, 46, + -1, -1, 45, 46, -1, 38, -1, -1, 23, 24, + 91, 45, 46, -1, 66, 67, 68, 32, -1, -1, + 35, 92, 37, 29, 23, 24, 66, 67, 68, -1, + 66, 67, 68, 32, 23, 24, 35, 29, 37, -1, + 92, 23, 24, 32, 36, -1, 35, -1, 37, -1, + 32, 29, 92, 35, -1, 37, 92, 23, 24, 29, + 66, 67, 68, -1, -1, 29, 32, -1, 29, 35, + -1, 37, 36, -1, 66, 67, 68, 93, 94, 95, + 96, 97, 98, 61, 62, -1, 92, 29, 66, 67, + 68, 61, 62, -1, -1, -1, 66, 67, 68, -1, + 92, -1, 66, 67, 68, 66, 67, 68, -1, -1, + -1, -1, -1, -1, 92, -1, -1, -1, -1, 61, + 62, -1, 92, 29, 66, 67, 68, -1, 92, -1, + -1, 92, 29, -1, -1, 29, -1, -1, -1, -1, + 23, 24, -1, -1, -1, -1, -1, -1, 31, 32, + 92, -1, 35, -1, 37, 61, 62, -1, -1, -1, + 66, 67, 68, -1, 61, 62, -1, 61, 62, 66, + 67, 68, 66, 67, 68, -1, -1, -1, -1, -1, + 12, 13, -1, -1, -1, -1, 92, -1, -1, -1, + 22, -1, -1, -1, -1, 92, -1, 29, 92, -1, + -1, 33, 34, -1, 36, -1, -1, -1, -1, -1, + -1, 43, -1, -1, -1, 47, -1, -1, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 13, -1, + -1, -1, 17, 65, 66, 67, 68, -1, 70, -1, + -1, 26, -1, 28, -1, -1, -1, -1, -1, 81, + 82, 83, -1, -1, 39, 87, 41, 42, -1, -1, + 92, -1, -1, -1, 49, 12, 13, 52, 53, -1, + -1, -1, -1, 58, -1, 22, -1, -1, -1, 64, + -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, + -1, -1, -1, -1, -1, 80, 43, -1, -1, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3, -1, 65, 66, + 67, 68, -1, 70, -1, -1, 13, -1, -1, -1, + 17, -1, -1, -1, 81, 82, 83, -1, -1, 26, + 87, 28, -1, -1, 31, 92, -1, -1, -1, -1, + -1, -1, 39, -1, 41, 42, -1, -1, -1, -1, + -1, -1, 49, -1, -1, 52, 53, -1, -1, -1, + -1, 58, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, 12, 13, -1, -1, - -1, -1, -1, -1, 80, -1, 22, -1, -1, -1, + -1, -1, -1, 80, -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, 12, 13, -1, 43, -1, -1, -1, 47, -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, 65, 66, 67, 68, -1, 70, 43, -1, -1, -1, 47, -1, -1, -1, -1, -1, 81, 82, 83, -1, -1, - -1, 87, -1, -1, -1, -1, -1, 65, 66, 67, - 68, -1, 70, -1, 10, -1, 12, 13, -1, -1, - -1, -1, -1, 81, 82, 83, 22, -1, -1, 87, - -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, - 36, -1, 12, 13, -1, -1, -1, 43, -1, -1, - -1, 47, 22, -1, -1, -1, -1, -1, -1, 29, - -1, -1, -1, 33, 34, -1, 36, -1, -1, 65, - 66, 67, 68, 43, 70, -1, -1, 47, -1, 75, - -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, - -1, 87, -1, -1, -1, 65, 66, 67, 68, -1, - 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 10, -1, 12, 13, -1, -1, -1, -1, -1, -1, - -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, - -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, - -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, - -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, - 70, -1, -1, -1, -1, 75, -1, -1, -1, -1, - -1, 81, 82, 83, 84, -1, -1, 87, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 10, -1, 12, 13, -1, -1, -1, -1, -1, -1, - -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, - -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, + -1, 87, -1, -1, -1, -1, 92, 65, 66, 67, + 68, -1, 70, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, + -1, -1, -1, -1, 92, 12, 13, -1, -1, -1, + -1, -1, -1, 12, 13, 22, -1, -1, -1, -1, + -1, -1, 29, 22, -1, -1, 33, 34, -1, 36, + 29, -1, -1, -1, 33, 34, 43, 36, -1, -1, + 47, -1, -1, -1, 43, -1, -1, -1, 47, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, + 67, 68, -1, 70, -1, -1, 65, 66, 67, 68, + -1, 70, -1, -1, 81, 82, 83, -1, -1, -1, + 87, -1, 81, 82, 83, 92, -1, -1, 87, -1, + -1, -1, -1, 92, 12, 13, -1, -1, -1, -1, + -1, -1, 12, 13, 22, -1, -1, -1, -1, -1, + -1, 29, 22, -1, -1, 33, 34, -1, 36, 29, + -1, -1, -1, 33, 34, 43, 36, -1, -1, 47, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, - -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, - 70, -1, -1, -1, -1, 75, -1, -1, -1, -1, - -1, 81, 82, 83, 84, -1, -1, 87, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, - -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, - -1, -1, 33, 34, -1, 36, -1, -1, -1, 40, - -1, 42, 43, 44, -1, -1, 47, -1, -1, -1, - 51, -1, 53, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, - -1, 72, -1, 74, -1, 76, -1, -1, -1, -1, - 81, 82, 83, -1, -1, -1, 87, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, - -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, - -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, - -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, - -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, - -1, -1, -1, 51, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, - 68, -1, 70, -1, 72, -1, 74, -1, 76, -1, - -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, + 68, -1, 70, -1, -1, 65, 66, 67, 68, -1, + 70, -1, -1, 81, 82, 83, -1, -1, -1, 87, + -1, 81, 82, 83, 92, -1, -1, 87, -1, -1, + -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, + -1, 10, -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, -1, - -1, 40, -1, 42, 43, 44, -1, -1, 47, -1, - -1, -1, 51, -1, 53, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 65, 66, 67, 68, - -1, 70, -1, 72, -1, 74, 75, 76, -1, -1, - -1, -1, 81, 82, 83, -1, -1, -1, 87, -1, + -1, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 65, 66, 67, 68, + -1, 70, -1, -1, -1, -1, 75, -1, -1, -1, + -1, -1, 81, 82, 83, 84, -1, -1, 87, -1, + -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, + -1, -1, 10, -1, 12, 13, -1, -1, -1, -1, + -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, + -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, + -1, -1, -1, -1, -1, 43, -1, -1, -1, 47, + -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, + 68, -1, 70, -1, -1, -1, -1, 75, -1, -1, + -1, -1, -1, 81, 82, 83, 84, -1, -1, 87, + -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, + -1, -1, -1, 10, -1, 12, 13, -1, -1, -1, + -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, + -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, + -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, + 47, -1, -1, -1, -1, -1, -1, -1, 55, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, + 67, 68, -1, 70, -1, -1, -1, -1, 75, -1, + -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, + 87, -1, -1, -1, -1, 92, -1, -1, -1, -1, + -1, -1, -1, -1, 11, 12, 13, -1, -1, -1, + -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, + -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, + -1, -1, -1, 40, -1, 42, 43, 44, -1, -1, + 47, -1, -1, -1, 51, -1, 53, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, + 67, 68, -1, 70, -1, 72, -1, 74, -1, 76, + -1, -1, -1, -1, 81, 82, 83, -1, -1, -1, + 87, -1, -1, -1, -1, 92, -1, -1, -1, -1, + -1, -1, -1, -1, 7, -1, -1, -1, 11, 12, + 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, + -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, + 33, 34, -1, 36, -1, -1, -1, 40, -1, 42, + 43, 44, -1, -1, 47, -1, -1, -1, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, + -1, 74, -1, 76, -1, -1, -1, -1, 81, 82, + 83, -1, -1, -1, 87, -1, -1, -1, -1, 92, + -1, -1, -1, -1, -1, -1, -1, -1, 11, 12, + 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, + -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, + 33, 34, -1, 36, -1, -1, -1, 40, -1, 42, + 43, 44, -1, -1, 47, -1, -1, -1, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, + -1, 74, 75, 76, -1, -1, -1, -1, 81, 82, + 83, -1, -1, -1, 87, -1, -1, -1, -1, 92, + -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, + -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, + -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, + -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, + 40, -1, 42, 43, 44, -1, -1, 47, -1, -1, + -1, 51, -1, 53, -1, -1, 56, -1, -1, -1, + -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, + 70, -1, 72, -1, 74, -1, 76, -1, -1, -1, + -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, + -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, 30, -1, -1, 33, 34, -1, 36, -1, -1, -1, @@ -786,25 +839,16 @@ const short QDeclarativeJSGrammar::action_check [] = { -1, 61, -1, -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, -1, 74, -1, 76, -1, -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 8, -1, -1, 11, 12, 13, -1, -1, -1, -1, - -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, - -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, - -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, - -1, -1, -1, 51, -1, 53, -1, -1, 56, -1, - -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, - 68, -1, 70, -1, 72, -1, 74, -1, 76, -1, - -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 8, -1, -1, 11, 12, 13, -1, -1, - -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, - -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, - 36, -1, -1, -1, 40, -1, 42, 43, 44, -1, - -1, 47, -1, -1, -1, 51, -1, 53, -1, -1, - 56, -1, -1, -1, -1, -1, -1, -1, -1, 65, - 66, 67, 68, -1, 70, -1, 72, -1, 74, -1, - 76, -1, -1, -1, -1, 81, 82, 83, -1, -1, - -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, + -1, 8, -1, -1, 11, 12, 13, -1, -1, -1, + -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, + -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, + -1, -1, -1, 40, -1, 42, 43, 44, -1, -1, + 47, -1, -1, -1, 51, -1, 53, -1, -1, 56, + -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, + 67, 68, -1, 70, -1, 72, -1, 74, -1, 76, + -1, -1, -1, -1, 81, 82, 83, -1, -1, -1, + 87, -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, @@ -813,120 +857,129 @@ const short QDeclarativeJSGrammar::action_check [] = { -1, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, -1, 74, -1, 76, -1, -1, -1, -1, 81, 82, 83, - -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 8, -1, -1, 11, - 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, - 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, - -1, 33, 34, -1, 36, -1, -1, -1, 40, -1, - 42, 43, 44, -1, -1, 47, -1, -1, -1, 51, - -1, 53, -1, -1, 56, -1, -1, -1, -1, -1, - -1, -1, -1, 65, 66, 67, 68, -1, 70, -1, - 72, -1, 74, -1, 76, -1, -1, -1, -1, 81, - 82, 83, -1, -1, -1, 87, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, - 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, - 16, -1, -1, -1, 20, 21, 22, -1, -1, -1, - -1, -1, -1, 29, 30, 31, 32, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 43, -1, -1, + -1, -1, -1, 87, -1, -1, -1, -1, 92, -1, + -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, + 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, + -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, + -1, -1, 33, 34, -1, 36, -1, -1, -1, 40, + -1, 42, 43, 44, -1, -1, 47, -1, -1, -1, + 51, -1, 53, -1, -1, 56, -1, -1, -1, -1, + -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, + -1, 72, -1, 74, -1, 76, -1, -1, -1, -1, + 81, 82, 83, -1, -1, -1, 87, -1, -1, -1, + -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, + 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, + 14, -1, 16, -1, -1, -1, 20, 21, 22, -1, + -1, -1, -1, -1, -1, 29, 30, 31, 32, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, + -1, -1, 66, 67, 68, 69, 70, 71, -1, 73, + 74, 75, 76, 77, 78, -1, -1, 81, 82, 83, + 84, 85, 86, -1, -1, -1, -1, -1, 92, -1, + -1, -1, -1, -1, -1, -1, -1, 4, 5, 6, + -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, + -1, -1, -1, 20, 21, 22, -1, -1, -1, -1, + -1, -1, 29, 30, 31, 32, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 59, -1, -1, -1, -1, -1, 65, 66, + 67, -1, 69, 70, 71, -1, 73, 74, 75, 76, + 77, 78, -1, -1, 81, 82, 83, 84, 85, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, - 66, 67, 68, 69, 70, 71, -1, 73, 74, 75, - 76, 77, 78, -1, -1, 81, 82, 83, 84, 85, - 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, 22, -1, -1, -1, -1, -1, -1, 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, -1, -1, -1, 55, -1, -1, -1, 59, -1, -1, -1, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, 83, 84, 85, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, - 14, -1, 16, -1, -1, -1, 20, 21, 22, -1, - -1, -1, -1, -1, -1, 29, 30, 31, 32, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, - -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, - -1, 55, -1, -1, -1, 59, -1, -1, -1, -1, - -1, 65, 66, 67, -1, 69, 70, 71, -1, 73, - 74, 75, 76, 77, 78, -1, -1, 81, 82, 83, - 84, 85, 86, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, - -1, 9, -1, 11, 12, 13, 14, -1, -1, -1, - -1, -1, -1, 21, 22, -1, -1, -1, -1, -1, - -1, 29, 30, -1, -1, 33, 34, -1, 36, -1, - -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, - -1, -1, -1, 51, -1, 53, -1, -1, -1, -1, - -1, 59, -1, 61, -1, -1, -1, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, -1, -1, 81, 82, 83, 84, 85, -1, 87, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4, -1, -1, -1, -1, 9, -1, 11, - 12, 13, 14, -1, -1, -1, -1, -1, -1, 21, - 22, -1, -1, -1, -1, -1, -1, 29, 30, -1, - -1, 33, 34, -1, 36, -1, -1, -1, 40, -1, - 42, 43, 44, -1, -1, 47, -1, -1, -1, 51, - -1, 53, -1, -1, -1, -1, -1, 59, -1, 61, - -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, -1, -1, 81, - 82, 83, 84, 85, -1, 87, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, - 6, -1, -1, 9, 10, 11, 12, 13, 14, -1, - 16, -1, -1, -1, 20, 21, 22, -1, -1, -1, - -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, + -1, 4, -1, -1, -1, -1, 9, -1, 11, 12, + 13, 14, -1, -1, -1, -1, -1, -1, 21, 22, + -1, -1, -1, -1, -1, -1, 29, 30, -1, -1, + 33, 34, -1, 36, -1, -1, -1, 40, -1, 42, + 43, 44, -1, -1, 47, -1, -1, -1, 51, -1, + 53, -1, -1, -1, -1, -1, 59, -1, 61, -1, + -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, + 83, 84, 85, -1, 87, -1, -1, -1, -1, 92, + -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, + -1, -1, -1, 9, -1, 11, 12, 13, 14, -1, + -1, -1, -1, -1, -1, 21, 22, -1, -1, -1, + -1, -1, -1, 29, 30, -1, -1, 33, 34, -1, 36, -1, -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, -1, -1, -1, 51, -1, 53, -1, -1, -1, -1, -1, 59, -1, 61, -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, 83, 84, 85, - 86, 87, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4, 5, 6, -1, -1, 9, - 10, 11, 12, 13, 14, -1, 16, -1, -1, -1, - 20, 21, 22, -1, -1, -1, -1, -1, -1, 29, - 30, 31, 32, 33, 34, -1, 36, -1, -1, -1, - 40, -1, 42, 43, 44, -1, -1, 47, -1, -1, - -1, 51, -1, 53, -1, 55, -1, -1, -1, 59, - -1, 61, -1, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, - -1, 81, 82, 83, 84, 85, 86, 87, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 87, -1, -1, -1, -1, 92, -1, -1, -1, + -1, -1, -1, -1, -1, 4, 5, 6, -1, -1, + 9, 10, 11, 12, 13, 14, -1, 16, -1, -1, + -1, 20, 21, 22, -1, -1, -1, -1, -1, -1, + 29, 30, 31, 32, 33, 34, -1, 36, -1, -1, + -1, 40, -1, 42, 43, 44, -1, -1, 47, -1, + -1, -1, 51, -1, 53, -1, -1, -1, -1, -1, + 59, -1, 61, -1, -1, -1, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + -1, -1, 81, 82, 83, 84, 85, 86, 87, -1, + -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, + -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, + 12, 13, 14, -1, 16, -1, -1, -1, 20, 21, + 22, -1, -1, -1, -1, -1, -1, 29, 30, 31, + 32, 33, 34, -1, 36, -1, -1, -1, 40, -1, + 42, 43, 44, -1, -1, 47, -1, -1, -1, 51, + -1, 53, -1, 55, -1, -1, -1, 59, -1, 61, + -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, -1, -1, 81, + 82, 83, 84, 85, 86, 87, -1, -1, -1, -1, + 92, -1, -1, -1, -1, -1, -1, -1, -1, - 3, 2, 15, 25, 25, 3, 25, 3, 2, 11, - 2, 15, 3, 13, 67, 3, 15, 104, 15, 2, - 15, 2, 4, 3, 35, 15, 15, 3, 21, 3, - 93, 15, 2, 2, 19, 13, 15, 96, 25, 25, - 15, 3, 15, 15, 15, 100, 3, 3, 15, 2, - 2, 15, 3, 21, 4, 15, 15, 15, 35, 2, - 21, 2, 2, 2, 98, 3, 2, 2, 2, 35, - 35, 4, 35, 2, 21, 3, 3, 3, 15, 2, - 35, 35, 3, 3, 3, 3, 35, 35, 2, 35, - 21, 35, -1, 35, -1, -1, 13, 2, 13, 44, - 2, 46, 3, 3, 36, -1, -1, -1, 3, -1, - -1, 15, -1, 35, 44, -1, 46, 13, 40, 44, - 44, 46, 46, -1, 41, 15, 41, -1, 44, 15, - 46, 44, 44, 46, 44, 44, 44, 44, 44, 49, - 49, 44, 49, 49, 35, 41, 49, 37, 60, 40, - 58, 44, 44, 46, 46, 44, 44, 44, 3, 44, - 49, 46, 50, 50, 31, 44, 44, 68, 35, 44, - 48, 50, 44, 68, 44, 50, 81, 49, 48, 81, - 44, 85, 44, 44, 44, 49, 48, 44, 49, 49, - 44, 44, 49, 44, 44, 49, 46, 44, 44, 52, - 46, 44, 44, 46, 46, 56, 44, 54, 46, 15, - 3, 44, 44, 99, 47, 47, 44, 44, 46, 46, - 44, 44, 46, 68, 15, 13, 49, 44, 44, 44, - 44, 44, 49, 49, 49, 49, 49, -1, 61, 53, - 28, 29, 55, -1, -1, -1, 37, 38, 44, 66, - 66, 66, 44, 49, 44, 51, -1, 49, 44, 49, - -1, 44, -1, 49, 44, -1, 49, 57, 44, 49, - 46, 51, 44, -1, 66, 68, 59, 49, 44, 51, - 66, 87, 5, 49, 13, 51, 13, 16, 5, 16, - 13, 20, 13, 20, -1, -1, 13, -1, -1, 20, - 21, 22, 23, 24, -1, 28, 29, -1, 35, -1, - -1, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 13, 15, 25, 3, 15, 15, 3, 25, 3, 15, + 2, 15, 2, 25, 3, 11, 19, 15, 67, 13, + 3, 104, 15, 4, 15, 3, 2, 15, 2, 15, + 3, 15, 3, 35, 21, 3, 15, 36, 3, 19, + 25, 2, 2, 25, 21, 15, 15, 98, 15, 15, + 2, 4, 15, 15, 2, 93, 3, 21, 2, 2, + 35, 3, 2, 35, 15, 3, 21, 3, 2, 15, + 15, 2, 2, 2, 15, 3, 35, 35, 35, 35, + 3, 35, 3, 3, 21, 35, 35, 96, 15, 3, + 2, 4, 3, 2, 2, 100, 35, 3, 3, 2, + 35, 2, -1, -1, -1, 15, -1, -1, -1, -1, + -1, 44, 44, 46, 46, 13, -1, -1, 44, 44, + 44, 46, 46, 15, 15, 44, 44, 44, 54, 44, + 49, 49, 49, 3, 49, 15, -1, 44, -1, -1, + 44, 48, 44, 41, 48, 44, 37, 46, 44, 44, + 35, 44, 35, 46, 49, 40, 58, 40, 44, 3, + 44, -1, 48, 68, 60, 49, 44, 44, 44, 44, + -1, 49, 49, 49, 49, 85, 44, 44, 81, 46, + 81, 44, 44, 46, 52, 44, 44, 46, 50, 44, + 31, 46, 50, 13, 35, 87, 44, 2, 68, 47, + 20, 44, 44, 46, 46, 44, 13, 44, 47, 46, + 44, 44, 46, 44, 44, 46, 49, 13, 44, 99, + 46, 44, 44, 46, 68, 44, 56, 44, 50, 46, + 49, 44, -1, 44, 41, 44, 15, 50, 49, -1, + 49, 13, 44, 13, 44, 41, 16, 49, 57, 49, + 20, -1, -1, -1, -1, 66, 28, 29, 37, 38, + 44, 61, -1, 44, 66, 49, 44, 51, 49, 44, + 51, 49, -1, 51, 49, 44, 44, 44, -1, 44, + 49, 49, 49, 13, 49, -1, 16, 55, 53, 44, + 20, 66, 59, 44, 49, 5, -1, 66, 49, 13, + 51, 3, 16, 13, -1, 13, 20, -1, -1, -1, + -1, 66, 20, 21, 22, 23, 24, -1, 28, 29, + -1, 35, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 68, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 13, -1, -1, 16, -1, -1, -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5, -1, -1, -1, -1, -1, + -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -934,6 +987,6 @@ const short QDeclarativeJSGrammar::action_check [] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1}; + -1, -1, -1, -1, -1}; QT_END_NAMESPACE diff --git a/src/declarative/qml/parser/qdeclarativejsgrammar_p.h b/src/declarative/qml/parser/qdeclarativejsgrammar_p.h index d6c3d6b..2b2e3d1 100644 --- a/src/declarative/qml/parser/qdeclarativejsgrammar_p.h +++ b/src/declarative/qml/parser/qdeclarativejsgrammar_p.h @@ -61,10 +61,10 @@ QT_BEGIN_NAMESPACE class QDeclarativeJSGrammar { public: - enum VariousConstants { + enum { EOF_SYMBOL = 0, - REDUCE_HERE = 99, - SHIFT_THERE = 98, + REDUCE_HERE = 100, + SHIFT_THERE = 99, T_AND = 1, T_AND_AND = 2, T_AND_EQ = 3, @@ -90,12 +90,12 @@ public: T_EQ_EQ = 18, T_EQ_EQ_EQ = 19, T_FALSE = 83, - T_FEED_JS_EXPRESSION = 95, - T_FEED_JS_PROGRAM = 97, - T_FEED_JS_SOURCE_ELEMENT = 96, - T_FEED_JS_STATEMENT = 94, - T_FEED_UI_OBJECT_MEMBER = 93, - T_FEED_UI_PROGRAM = 92, + T_FEED_JS_EXPRESSION = 96, + T_FEED_JS_PROGRAM = 98, + T_FEED_JS_SOURCE_ELEMENT = 97, + T_FEED_JS_STATEMENT = 95, + T_FEED_UI_OBJECT_MEMBER = 94, + T_FEED_UI_PROGRAM = 93, T_FINALLY = 20, T_FOR = 21, T_FUNCTION = 22, @@ -127,6 +127,7 @@ public: T_NOT_EQ_EQ = 46, T_NULL = 81, T_NUMERIC_LITERAL = 47, + T_ON = 92, T_OR = 48, T_OR_EQ = 49, T_OR_OR = 50, @@ -163,15 +164,15 @@ public: T_XOR = 79, T_XOR_EQ = 80, - ACCEPT_STATE = 635, - RULE_COUNT = 343, - STATE_COUNT = 636, - TERMINAL_COUNT = 100, + ACCEPT_STATE = 639, + RULE_COUNT = 345, + STATE_COUNT = 640, + TERMINAL_COUNT = 101, NON_TERMINAL_COUNT = 106, - GOTO_INDEX_OFFSET = 636, - GOTO_INFO_OFFSET = 2520, - GOTO_CHECK_OFFSET = 2520 + GOTO_INDEX_OFFSET = 640, + GOTO_INFO_OFFSET = 2699, + GOTO_CHECK_OFFSET = 2699 }; static const char *const spell []; diff --git a/src/declarative/qml/parser/qdeclarativejslexer.cpp b/src/declarative/qml/parser/qdeclarativejslexer.cpp index 384d00c..34163a4 100644 --- a/src/declarative/qml/parser/qdeclarativejslexer.cpp +++ b/src/declarative/qml/parser/qdeclarativejslexer.cpp @@ -166,6 +166,8 @@ int Lexer::findReservedWord(const QChar *c, int size) const return QDeclarativeJSGrammar::T_IN; else if (c[0] == QLatin1Char('a') && c[1] == QLatin1Char('s')) return QDeclarativeJSGrammar::T_AS; + else if (c[0] == QLatin1Char('o') && c[1] == QLatin1Char('n')) + return QDeclarativeJSGrammar::T_ON; } break; case 3: { diff --git a/src/declarative/qml/parser/qdeclarativejsparser.cpp b/src/declarative/qml/parser/qdeclarativejsparser.cpp index 4aa4960..fd9e690 100644 --- a/src/declarative/qml/parser/qdeclarativejsparser.cpp +++ b/src/declarative/qml/parser/qdeclarativejsparser.cpp @@ -356,7 +356,15 @@ case 32: { node->colonToken = loc(2); sym(1).Node = node; } break; -case 33:case 34:case 35:case 36: + +case 33: { + AST::UiObjectBinding *node = makeAstNode<AST::UiObjectBinding> (driver->nodePool(), + sym(3).UiQualifiedId, sym(1).UiQualifiedId, sym(4).UiObjectInitializer); + node->colonToken = loc(2); + node->hasOnToken = true; + sym(1).Node = node; +} break; +case 34:case 35:case 36:case 37: { AST::UiScriptBinding *node = makeAstNode<AST::UiScriptBinding> (driver->nodePool(), sym(1).UiQualifiedId, sym(3).Statement); @@ -364,35 +372,35 @@ case 33:case 34:case 35:case 36: sym(1).Node = node; } break; -case 37: +case 38: -case 38: { +case 39: { sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount()); break; } -case 40: { +case 41: { sym(1).Node = 0; } break; -case 41: { +case 42: { sym(1).Node = sym(1).UiParameterList->finish (); } break; -case 42: { +case 43: { AST::UiParameterList *node = makeAstNode<AST::UiParameterList> (driver->nodePool(), sym(1).sval, sym(2).sval); node->identifierToken = loc(2); sym(1).Node = node; } break; -case 43: { +case 44: { AST::UiParameterList *node = makeAstNode<AST::UiParameterList> (driver->nodePool(), sym(1).UiParameterList, sym(3).sval, sym(4).sval); node->commaToken = loc(2); node->identifierToken = loc(4); sym(1).Node = node; } break; -case 45: { +case 46: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), (NameId *)0, sym(2).sval); node->type = AST::UiPublicMember::Signal; node->propertyToken = loc(1); @@ -403,7 +411,7 @@ case 45: { sym(1).Node = node; } break; -case 47: { +case 48: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), (NameId *)0, sym(2).sval); node->type = AST::UiPublicMember::Signal; node->propertyToken = loc(1); @@ -413,7 +421,7 @@ case 47: { sym(1).Node = node; } break; -case 49: { +case 50: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(4).sval, sym(6).sval); node->typeModifier = sym(2).sval; node->propertyToken = loc(1); @@ -424,7 +432,7 @@ case 49: { sym(1).Node = node; } break; -case 51: { +case 52: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval); node->propertyToken = loc(1); node->typeToken = loc(2); @@ -433,7 +441,7 @@ case 51: { sym(1).Node = node; } break; -case 53: { +case 54: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval); node->isDefaultMember = true; node->defaultToken = loc(1); @@ -444,7 +452,7 @@ case 53: { sym(1).Node = node; } break; -case 55: { +case 56: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval, sym(5).Expression); node->propertyToken = loc(1); @@ -455,7 +463,7 @@ case 55: { sym(1).Node = node; } break; -case 57: { +case 58: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval, sym(6).Expression); node->isReadonlyMember = true; @@ -468,7 +476,7 @@ case 57: { sym(1).Node = node; } break; -case 59: { +case 60: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval, sym(6).Expression); node->isDefaultMember = true; @@ -481,75 +489,81 @@ case 59: { sym(1).Node = node; } break; -case 60: { +case 61: { sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node); } break; -case 61: { +case 62: { sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node); } break; -case 63: { +case 64: { QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_PROPERTY]); sym(1).sval = driver->intern(s.constData(), s.length()); break; } -case 64: { +case 65: { QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_SIGNAL]); sym(1).sval = driver->intern(s.constData(), s.length()); break; } -case 65: { +case 66: { QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_READONLY]); sym(1).sval = driver->intern(s.constData(), s.length()); break; } -case 66: { +case 67: { + QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_READONLY]); + sym(1).sval = driver->intern(s.constData(), s.length()); + break; +} + +case 68: { AST::ThisExpression *node = makeAstNode<AST::ThisExpression> (driver->nodePool()); node->thisToken = loc(1); sym(1).Node = node; } break; -case 67: { +case 69: { AST::IdentifierExpression *node = makeAstNode<AST::IdentifierExpression> (driver->nodePool(), sym(1).sval); node->identifierToken = loc(1); sym(1).Node = node; } break; -case 68: { +case 70: { AST::NullExpression *node = makeAstNode<AST::NullExpression> (driver->nodePool()); node->nullToken = loc(1); sym(1).Node = node; } break; -case 69: { +case 71: { AST::TrueLiteral *node = makeAstNode<AST::TrueLiteral> (driver->nodePool()); node->trueToken = loc(1); sym(1).Node = node; } break; -case 70: { +case 72: { AST::FalseLiteral *node = makeAstNode<AST::FalseLiteral> (driver->nodePool()); node->falseToken = loc(1); sym(1).Node = node; } break; -case 71: { +case 73: { AST::NumericLiteral *node = makeAstNode<AST::NumericLiteral> (driver->nodePool(), sym(1).dval); node->literalToken = loc(1); sym(1).Node = node; } break; -case 72: -case 73: { +case 74: +case 75: { AST::StringLiteral *node = makeAstNode<AST::StringLiteral> (driver->nodePool(), sym(1).sval); node->literalToken = loc(1); sym(1).Node = node; } break; -case 74: { +case 76: { bool rx = lexer->scanRegExp(Lexer::NoPrefix); if (!rx) { diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage())); @@ -560,7 +574,7 @@ case 74: { sym(1).Node = node; } break; -case 75: { +case 77: { bool rx = lexer->scanRegExp(Lexer::EqualPrefix); if (!rx) { diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage())); @@ -571,28 +585,28 @@ case 75: { sym(1).Node = node; } break; -case 76: { +case 78: { AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), (AST::Elision *) 0); node->lbracketToken = loc(1); node->rbracketToken = loc(2); sym(1).Node = node; } break; -case 77: { +case 79: { AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).Elision->finish()); node->lbracketToken = loc(1); node->rbracketToken = loc(3); sym(1).Node = node; } break; -case 78: { +case 80: { AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish ()); node->lbracketToken = loc(1); node->rbracketToken = loc(3); sym(1).Node = node; } break; -case 79: { +case 81: { AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (), (AST::Elision *) 0); node->lbracketToken = loc(1); @@ -601,7 +615,7 @@ case 79: { sym(1).Node = node; } break; -case 80: { +case 82: { AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (), sym(4).Elision->finish()); node->lbracketToken = loc(1); @@ -610,7 +624,7 @@ case 80: { sym(1).Node = node; } break; -case 81: { +case 83: { AST::ObjectLiteral *node = 0; if (sym(2).Node) node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(), @@ -622,7 +636,7 @@ case 81: { sym(1).Node = node; } break; -case 82: { +case 84: { AST::ObjectLiteral *node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(), sym(2).PropertyNameAndValueList->finish ()); node->lbraceToken = loc(1); @@ -630,14 +644,14 @@ case 82: { sym(1).Node = node; } break; -case 83: { +case 85: { AST::NestedExpression *node = makeAstNode<AST::NestedExpression>(driver->nodePool(), sym(2).Expression); node->lparenToken = loc(1); node->rparenToken = loc(3); sym(1).Node = node; } break; -case 84: { +case 86: { if (AST::ArrayMemberExpression *mem = AST::cast<AST::ArrayMemberExpression *>(sym(1).Expression)) { diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Warning, mem->lbracketToken, QLatin1String("Ignored annotation"))); @@ -657,48 +671,48 @@ case 84: { } } break; -case 85: { +case 87: { sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), (AST::Elision *) 0, sym(1).Expression); } break; -case 86: { +case 88: { sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).Elision->finish(), sym(2).Expression); } break; -case 87: { +case 89: { AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList, (AST::Elision *) 0, sym(3).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -case 88: { +case 90: { AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList, sym(3).Elision->finish(), sym(4).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -case 89: { +case 91: { AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool()); node->commaToken = loc(1); sym(1).Node = node; } break; -case 90: { +case 92: { AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool(), sym(1).Elision); node->commaToken = loc(2); sym(1).Node = node; } break; -case 91: { +case 93: { AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(), sym(1).PropertyName, sym(3).Expression); node->colonToken = loc(2); sym(1).Node = node; } break; -case 92: { +case 94: { AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(), sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression); node->commaToken = loc(2); @@ -706,40 +720,36 @@ case 92: { sym(1).Node = node; } break; -case 93: { +case 95: { AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval); node->propertyNameToken = loc(1); sym(1).Node = node; } break; -case 94: -case 95: { +case 96: +case 97: { AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount())); node->propertyNameToken = loc(1); sym(1).Node = node; } break; -case 96: { +case 98: { AST::StringLiteralPropertyName *node = makeAstNode<AST::StringLiteralPropertyName> (driver->nodePool(), sym(1).sval); node->propertyNameToken = loc(1); sym(1).Node = node; } break; -case 97: { +case 99: { AST::NumericLiteralPropertyName *node = makeAstNode<AST::NumericLiteralPropertyName> (driver->nodePool(), sym(1).dval); node->propertyNameToken = loc(1); sym(1).Node = node; } break; -case 98: { +case 100: { AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval); node->propertyNameToken = loc(1); sym(1).Node = node; } break; -case 99: - -case 100: - case 101: case 102: @@ -797,25 +807,29 @@ case 127: case 128: case 129: + +case 130: + +case 131: { sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount()); } break; -case 134: { +case 136: { AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression); node->lbracketToken = loc(2); node->rbracketToken = loc(4); sym(1).Node = node; } break; -case 135: { +case 137: { AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval); node->dotToken = loc(2); node->identifierToken = loc(3); sym(1).Node = node; } break; -case 136: { +case 138: { AST::NewMemberExpression *node = makeAstNode<AST::NewMemberExpression> (driver->nodePool(), sym(2).Expression, sym(4).ArgumentList); node->newToken = loc(1); node->lparenToken = loc(3); @@ -823,316 +837,309 @@ case 136: { sym(1).Node = node; } break; -case 138: { +case 140: { AST::NewExpression *node = makeAstNode<AST::NewExpression> (driver->nodePool(), sym(2).Expression); node->newToken = loc(1); sym(1).Node = node; } break; -case 139: { +case 141: { AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList); node->lparenToken = loc(2); node->rparenToken = loc(4); sym(1).Node = node; } break; -case 140: { +case 142: { AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList); node->lparenToken = loc(2); node->rparenToken = loc(4); sym(1).Node = node; } break; -case 141: { +case 143: { AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression); node->lbracketToken = loc(2); node->rbracketToken = loc(4); sym(1).Node = node; } break; -case 142: { +case 144: { AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval); node->dotToken = loc(2); node->identifierToken = loc(3); sym(1).Node = node; } break; -case 143: { +case 145: { sym(1).Node = 0; } break; -case 144: { +case 146: { sym(1).Node = sym(1).ArgumentList->finish(); } break; -case 145: { +case 147: { sym(1).Node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).Expression); } break; -case 146: { +case 148: { AST::ArgumentList *node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).ArgumentList, sym(3).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -case 150: { +case 152: { AST::PostIncrementExpression *node = makeAstNode<AST::PostIncrementExpression> (driver->nodePool(), sym(1).Expression); node->incrementToken = loc(2); sym(1).Node = node; } break; -case 151: { +case 153: { AST::PostDecrementExpression *node = makeAstNode<AST::PostDecrementExpression> (driver->nodePool(), sym(1).Expression); node->decrementToken = loc(2); sym(1).Node = node; } break; -case 153: { +case 155: { AST::DeleteExpression *node = makeAstNode<AST::DeleteExpression> (driver->nodePool(), sym(2).Expression); node->deleteToken = loc(1); sym(1).Node = node; } break; -case 154: { +case 156: { AST::VoidExpression *node = makeAstNode<AST::VoidExpression> (driver->nodePool(), sym(2).Expression); node->voidToken = loc(1); sym(1).Node = node; } break; -case 155: { +case 157: { AST::TypeOfExpression *node = makeAstNode<AST::TypeOfExpression> (driver->nodePool(), sym(2).Expression); node->typeofToken = loc(1); sym(1).Node = node; } break; -case 156: { +case 158: { AST::PreIncrementExpression *node = makeAstNode<AST::PreIncrementExpression> (driver->nodePool(), sym(2).Expression); node->incrementToken = loc(1); sym(1).Node = node; } break; -case 157: { +case 159: { AST::PreDecrementExpression *node = makeAstNode<AST::PreDecrementExpression> (driver->nodePool(), sym(2).Expression); node->decrementToken = loc(1); sym(1).Node = node; } break; -case 158: { +case 160: { AST::UnaryPlusExpression *node = makeAstNode<AST::UnaryPlusExpression> (driver->nodePool(), sym(2).Expression); node->plusToken = loc(1); sym(1).Node = node; } break; -case 159: { +case 161: { AST::UnaryMinusExpression *node = makeAstNode<AST::UnaryMinusExpression> (driver->nodePool(), sym(2).Expression); node->minusToken = loc(1); sym(1).Node = node; } break; -case 160: { +case 162: { AST::TildeExpression *node = makeAstNode<AST::TildeExpression> (driver->nodePool(), sym(2).Expression); node->tildeToken = loc(1); sym(1).Node = node; } break; -case 161: { +case 163: { AST::NotExpression *node = makeAstNode<AST::NotExpression> (driver->nodePool(), sym(2).Expression); node->notToken = loc(1); sym(1).Node = node; } break; -case 163: { +case 165: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Mul, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 164: { +case 166: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Div, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 165: { +case 167: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Mod, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 167: { +case 169: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Add, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 168: { +case 170: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Sub, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 170: { +case 172: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::LShift, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 171: { +case 173: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::RShift, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 172: { +case 174: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::URShift, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 174: { +case 176: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Lt, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 175: { +case 177: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Gt, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 176: { +case 178: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Le, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 177: { +case 179: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Ge, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 178: { +case 180: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::InstanceOf, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 179: { +case 181: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::In, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 181: { +case 183: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Lt, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 182: { +case 184: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Gt, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 183: { +case 185: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Le, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 184: { +case 186: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Ge, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 185: { +case 187: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::InstanceOf, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 187: { +case 189: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Equal, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 188: { +case 190: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::NotEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 189: { +case 191: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::StrictEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 190: { +case 192: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::StrictNotEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 192: { +case 194: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Equal, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 193: { +case 195: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::NotEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 194: { +case 196: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::StrictEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 195: { - AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, - QSOperator::StrictNotEqual, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; -} break; - case 197: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, - QSOperator::BitAnd, sym(3).Expression); + QSOperator::StrictNotEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; @@ -1146,7 +1153,7 @@ case 199: { case 201: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, - QSOperator::BitXor, sym(3).Expression); + QSOperator::BitAnd, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; @@ -1160,7 +1167,7 @@ case 203: { case 205: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, - QSOperator::BitOr, sym(3).Expression); + QSOperator::BitXor, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; @@ -1174,7 +1181,7 @@ case 207: { case 209: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, - QSOperator::And, sym(3).Expression); + QSOperator::BitOr, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; @@ -1188,7 +1195,7 @@ case 211: { case 213: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, - QSOperator::Or, sym(3).Expression); + QSOperator::And, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; @@ -1201,6 +1208,13 @@ case 215: { } break; case 217: { + AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, + QSOperator::Or, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; +} break; + +case 219: { AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression, sym(5).Expression); node->questionToken = loc(2); @@ -1208,7 +1222,7 @@ case 217: { sym(1).Node = node; } break; -case 219: { +case 221: { AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression, sym(5).Expression); node->questionToken = loc(2); @@ -1216,112 +1230,112 @@ case 219: { sym(1).Node = node; } break; -case 221: { +case 223: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, sym(2).ival, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 223: { +case 225: { AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, sym(2).ival, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 224: { +case 226: { sym(1).ival = QSOperator::Assign; } break; -case 225: { +case 227: { sym(1).ival = QSOperator::InplaceMul; } break; -case 226: { +case 228: { sym(1).ival = QSOperator::InplaceDiv; } break; -case 227: { +case 229: { sym(1).ival = QSOperator::InplaceMod; } break; -case 228: { +case 230: { sym(1).ival = QSOperator::InplaceAdd; } break; -case 229: { +case 231: { sym(1).ival = QSOperator::InplaceSub; } break; -case 230: { +case 232: { sym(1).ival = QSOperator::InplaceLeftShift; } break; -case 231: { +case 233: { sym(1).ival = QSOperator::InplaceRightShift; } break; -case 232: { +case 234: { sym(1).ival = QSOperator::InplaceURightShift; } break; -case 233: { +case 235: { sym(1).ival = QSOperator::InplaceAnd; } break; -case 234: { +case 236: { sym(1).ival = QSOperator::InplaceXor; } break; -case 235: { +case 237: { sym(1).ival = QSOperator::InplaceOr; } break; -case 237: { +case 239: { AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -case 238: { +case 240: { sym(1).Node = 0; } break; -case 241: { +case 243: { AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -case 242: { +case 244: { sym(1).Node = 0; } break; -case 259: { +case 261: { AST::Block *node = makeAstNode<AST::Block> (driver->nodePool(), sym(2).StatementList); node->lbraceToken = loc(1); node->rbraceToken = loc(3); sym(1).Node = node; } break; -case 260: { +case 262: { sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).Statement); } break; -case 261: { +case 263: { sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).StatementList, sym(2).Statement); } break; -case 262: { +case 264: { sym(1).Node = 0; } break; -case 263: { +case 265: { sym(1).Node = sym(1).StatementList->finish (); } break; -case 265: { +case 267: { AST::VariableStatement *node = makeAstNode<AST::VariableStatement> (driver->nodePool(), sym(2).VariableDeclarationList->finish (/*readOnly=*/sym(1).ival == T_CONST)); node->declarationKindToken = loc(1); @@ -1329,76 +1343,76 @@ case 265: { sym(1).Node = node; } break; -case 266: { +case 268: { sym(1).ival = T_CONST; } break; -case 267: { +case 269: { sym(1).ival = T_VAR; } break; -case 268: { +case 270: { sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration); } break; -case 269: { +case 271: { AST::VariableDeclarationList *node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration); node->commaToken = loc(2); sym(1).Node = node; } break; -case 270: { +case 272: { sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration); } break; -case 271: { +case 273: { sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration); } break; -case 272: { +case 274: { AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression); node->identifierToken = loc(1); sym(1).Node = node; } break; -case 273: { +case 275: { AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression); node->identifierToken = loc(1); sym(1).Node = node; } break; -case 274: { +case 276: { // ### TODO: AST for initializer sym(1) = sym(2); } break; -case 275: { +case 277: { sym(1).Node = 0; } break; -case 277: { +case 279: { // ### TODO: AST for initializer sym(1) = sym(2); } break; -case 278: { +case 280: { sym(1).Node = 0; } break; -case 280: { +case 282: { AST::EmptyStatement *node = makeAstNode<AST::EmptyStatement> (driver->nodePool()); node->semicolonToken = loc(1); sym(1).Node = node; } break; -case 282: { +case 284: { AST::ExpressionStatement *node = makeAstNode<AST::ExpressionStatement> (driver->nodePool(), sym(1).Expression); node->semicolonToken = loc(2); sym(1).Node = node; } break; -case 283: { +case 285: { AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement, sym(7).Statement); node->ifToken = loc(1); node->lparenToken = loc(2); @@ -1407,7 +1421,7 @@ case 283: { sym(1).Node = node; } break; -case 284: { +case 286: { AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement); node->ifToken = loc(1); node->lparenToken = loc(2); @@ -1415,7 +1429,7 @@ case 284: { sym(1).Node = node; } break; -case 286: { +case 288: { AST::DoWhileStatement *node = makeAstNode<AST::DoWhileStatement> (driver->nodePool(), sym(2).Statement, sym(5).Expression); node->doToken = loc(1); node->whileToken = loc(3); @@ -1425,7 +1439,7 @@ case 286: { sym(1).Node = node; } break; -case 287: { +case 289: { AST::WhileStatement *node = makeAstNode<AST::WhileStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement); node->whileToken = loc(1); node->lparenToken = loc(2); @@ -1433,7 +1447,7 @@ case 287: { sym(1).Node = node; } break; -case 288: { +case 290: { AST::ForStatement *node = makeAstNode<AST::ForStatement> (driver->nodePool(), sym(3).Expression, sym(5).Expression, sym(7).Expression, sym(9).Statement); node->forToken = loc(1); @@ -1444,7 +1458,7 @@ case 288: { sym(1).Node = node; } break; -case 289: { +case 291: { AST::LocalForStatement *node = makeAstNode<AST::LocalForStatement> (driver->nodePool(), sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression, sym(8).Expression, sym(10).Statement); @@ -1457,7 +1471,7 @@ case 289: { sym(1).Node = node; } break; -case 290: { +case 292: { AST:: ForEachStatement *node = makeAstNode<AST::ForEachStatement> (driver->nodePool(), sym(3).Expression, sym(5).Expression, sym(7).Statement); node->forToken = loc(1); @@ -1467,7 +1481,7 @@ case 290: { sym(1).Node = node; } break; -case 291: { +case 293: { AST::LocalForEachStatement *node = makeAstNode<AST::LocalForEachStatement> (driver->nodePool(), sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement); node->forToken = loc(1); @@ -1478,14 +1492,14 @@ case 291: { sym(1).Node = node; } break; -case 293: { +case 295: { AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool()); node->continueToken = loc(1); node->semicolonToken = loc(2); sym(1).Node = node; } break; -case 295: { +case 297: { AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool(), sym(2).sval); node->continueToken = loc(1); node->identifierToken = loc(2); @@ -1493,14 +1507,14 @@ case 295: { sym(1).Node = node; } break; -case 297: { +case 299: { AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool()); node->breakToken = loc(1); node->semicolonToken = loc(2); sym(1).Node = node; } break; -case 299: { +case 301: { AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool(), sym(2).sval); node->breakToken = loc(1); node->identifierToken = loc(2); @@ -1508,14 +1522,14 @@ case 299: { sym(1).Node = node; } break; -case 301: { +case 303: { AST::ReturnStatement *node = makeAstNode<AST::ReturnStatement> (driver->nodePool(), sym(2).Expression); node->returnToken = loc(1); node->semicolonToken = loc(3); sym(1).Node = node; } break; -case 302: { +case 304: { AST::WithStatement *node = makeAstNode<AST::WithStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement); node->withToken = loc(1); node->lparenToken = loc(2); @@ -1523,7 +1537,7 @@ case 302: { sym(1).Node = node; } break; -case 303: { +case 305: { AST::SwitchStatement *node = makeAstNode<AST::SwitchStatement> (driver->nodePool(), sym(3).Expression, sym(5).CaseBlock); node->switchToken = loc(1); node->lparenToken = loc(2); @@ -1531,90 +1545,90 @@ case 303: { sym(1).Node = node; } break; -case 304: { +case 306: { AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses); node->lbraceToken = loc(1); node->rbraceToken = loc(3); sym(1).Node = node; } break; -case 305: { +case 307: { AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses); node->lbraceToken = loc(1); node->rbraceToken = loc(5); sym(1).Node = node; } break; -case 306: { +case 308: { sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClause); } break; -case 307: { +case 309: { sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClauses, sym(2).CaseClause); } break; -case 308: { +case 310: { sym(1).Node = 0; } break; -case 309: { +case 311: { sym(1).Node = sym(1).CaseClauses->finish (); } break; -case 310: { +case 312: { AST::CaseClause *node = makeAstNode<AST::CaseClause> (driver->nodePool(), sym(2).Expression, sym(4).StatementList); node->caseToken = loc(1); node->colonToken = loc(3); sym(1).Node = node; } break; -case 311: { +case 313: { AST::DefaultClause *node = makeAstNode<AST::DefaultClause> (driver->nodePool(), sym(3).StatementList); node->defaultToken = loc(1); node->colonToken = loc(2); sym(1).Node = node; } break; -case 312: -case 313: { +case 314: +case 315: { AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()), sym(3).Statement); node->identifierToken = loc(1); node->colonToken = loc(2); sym(1).Node = node; } break; -case 314: { +case 316: { AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), sym(1).sval, sym(3).Statement); node->identifierToken = loc(1); node->colonToken = loc(2); sym(1).Node = node; } break; -case 316: { +case 318: { AST::ThrowStatement *node = makeAstNode<AST::ThrowStatement> (driver->nodePool(), sym(2).Expression); node->throwToken = loc(1); node->semicolonToken = loc(3); sym(1).Node = node; } break; -case 317: { +case 319: { AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch); node->tryToken = loc(1); sym(1).Node = node; } break; -case 318: { +case 320: { AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Finally); node->tryToken = loc(1); sym(1).Node = node; } break; -case 319: { +case 321: { AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch, sym(4).Finally); node->tryToken = loc(1); sym(1).Node = node; } break; -case 320: { +case 322: { AST::Catch *node = makeAstNode<AST::Catch> (driver->nodePool(), sym(3).sval, sym(5).Block); node->catchToken = loc(1); node->lparenToken = loc(2); @@ -1623,20 +1637,20 @@ case 320: { sym(1).Node = node; } break; -case 321: { +case 323: { AST::Finally *node = makeAstNode<AST::Finally> (driver->nodePool(), sym(2).Block); node->finallyToken = loc(1); sym(1).Node = node; } break; -case 323: { +case 325: { AST::DebuggerStatement *node = makeAstNode<AST::DebuggerStatement> (driver->nodePool()); node->debuggerToken = loc(1); node->semicolonToken = loc(2); sym(1).Node = node; } break; -case 324: { +case 326: { AST::FunctionDeclaration *node = makeAstNode<AST::FunctionDeclaration> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody); node->functionToken = loc(1); node->identifierToken = loc(2); @@ -1647,7 +1661,7 @@ case 324: { sym(1).Node = node; } break; -case 325: { +case 327: { AST::FunctionExpression *node = makeAstNode<AST::FunctionExpression> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody); node->functionToken = loc(1); if (sym(2).sval) @@ -1659,60 +1673,60 @@ case 325: { sym(1).Node = node; } break; -case 326: { +case 328: { AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).sval); node->identifierToken = loc(1); sym(1).Node = node; } break; -case 327: { +case 329: { AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).FormalParameterList, sym(3).sval); node->commaToken = loc(2); node->identifierToken = loc(3); sym(1).Node = node; } break; -case 328: { +case 330: { sym(1).Node = 0; } break; -case 329: { +case 331: { sym(1).Node = sym(1).FormalParameterList->finish (); } break; -case 330: { +case 332: { sym(1).Node = 0; } break; -case 332: { +case 334: { sym(1).Node = makeAstNode<AST::FunctionBody> (driver->nodePool(), sym(1).SourceElements->finish ()); } break; -case 333: { +case 335: { sym(1).Node = makeAstNode<AST::Program> (driver->nodePool(), sym(1).SourceElements->finish ()); } break; -case 334: { +case 336: { sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElement); } break; -case 335: { +case 337: { sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElements, sym(2).SourceElement); } break; -case 336: { +case 338: { sym(1).Node = makeAstNode<AST::StatementSourceElement> (driver->nodePool(), sym(1).Statement); } break; -case 337: { +case 339: { sym(1).Node = makeAstNode<AST::FunctionSourceElement> (driver->nodePool(), sym(1).FunctionDeclaration); } break; -case 338: { +case 340: { sym(1).sval = 0; } break; -case 340: { +case 342: { sym(1).Node = 0; } break; diff --git a/src/declarative/qml/parser/qdeclarativejsparser_p.h b/src/declarative/qml/parser/qdeclarativejsparser_p.h index c7e097a..3864398 100644 --- a/src/declarative/qml/parser/qdeclarativejsparser_p.h +++ b/src/declarative/qml/parser/qdeclarativejsparser_p.h @@ -235,9 +235,9 @@ protected: -#define J_SCRIPT_REGEXPLITERAL_RULE1 74 +#define J_SCRIPT_REGEXPLITERAL_RULE1 76 -#define J_SCRIPT_REGEXPLITERAL_RULE2 75 +#define J_SCRIPT_REGEXPLITERAL_RULE2 77 QT_QML_END_NAMESPACE diff --git a/src/declarative/qml/qdeclarativebinding.cpp b/src/declarative/qml/qdeclarativebinding.cpp index bde01ae..cecca65 100644 --- a/src/declarative/qml/qdeclarativebinding.cpp +++ b/src/declarative/qml/qdeclarativebinding.cpp @@ -97,7 +97,7 @@ QDeclarativeBinding::~QDeclarativeBinding() { } -void QDeclarativeBinding::setTarget(const QDeclarativeMetaProperty &prop) +void QDeclarativeBinding::setTarget(const QDeclarativeProperty &prop) { Q_D(QDeclarativeBinding); d->bindingData()->property = prop; @@ -105,13 +105,13 @@ void QDeclarativeBinding::setTarget(const QDeclarativeMetaProperty &prop) update(); } -QDeclarativeMetaProperty QDeclarativeBinding::property() const +QDeclarativeProperty QDeclarativeBinding::property() const { Q_D(const QDeclarativeBinding); return d->bindingData()->property; } -void QDeclarativeBinding::update(QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativeBinding::update(QDeclarativePropertyPrivate::WriteFlags flags) { Q_D(QDeclarativeBinding); @@ -161,7 +161,7 @@ void QDeclarativeBinding::update(QDeclarativeMetaProperty::WriteFlags flags) data->error.setDescription(QLatin1String("Unable to assign [undefined] to ") + QLatin1String(QMetaType::typeName(data->property.propertyType()))); } else if (!isUndefined && data->property.object() && - !data->property.write(value, flags)) { + !QDeclarativePropertyPrivate::write(data->property, value, flags)) { QUrl url = QUrl(data->url); int line = data->line; @@ -204,7 +204,7 @@ void QDeclarativeBindingPrivate::emitValueChanged() q->update(); } -void QDeclarativeBinding::setEnabled(bool e, QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativeBinding::setEnabled(bool e, QDeclarativePropertyPrivate::WriteFlags flags) { Q_D(QDeclarativeBinding); d->bindingData()->enabled = e; @@ -300,7 +300,7 @@ QString QDeclarativeAbstractBinding::expression() const return QLatin1String("<Unknown>"); } -void QDeclarativeAbstractBinding::setEnabled(bool e, QDeclarativeMetaProperty::WriteFlags) +void QDeclarativeAbstractBinding::setEnabled(bool e, QDeclarativePropertyPrivate::WriteFlags) { if (e) m_mePtr = 0; } diff --git a/src/declarative/qml/qdeclarativebinding_p.h b/src/declarative/qml/qdeclarativebinding_p.h index 7c79b8c..f66b9c7 100644 --- a/src/declarative/qml/qdeclarativebinding_p.h +++ b/src/declarative/qml/qdeclarativebinding_p.h @@ -56,7 +56,8 @@ #include "qdeclarative.h" #include "qdeclarativepropertyvaluesource.h" #include "qdeclarativeexpression.h" -#include "qdeclarativemetaproperty.h" +#include "qdeclarativeproperty.h" +#include "qdeclarativeproperty_p.h" #include <QtCore/QObject> #include <QtCore/QMetaProperty> @@ -73,12 +74,12 @@ public: virtual QString expression() const; - void setEnabled(bool e) { setEnabled(e, QDeclarativeMetaProperty::DontRemoveBinding); } - virtual void setEnabled(bool, QDeclarativeMetaProperty::WriteFlags) = 0; + void setEnabled(bool e) { setEnabled(e, QDeclarativePropertyPrivate::DontRemoveBinding); } + virtual void setEnabled(bool, QDeclarativePropertyPrivate::WriteFlags) = 0; virtual int propertyIndex() = 0; - void update() { update(QDeclarativeMetaProperty::DontRemoveBinding); } - virtual void update(QDeclarativeMetaProperty::WriteFlags) = 0; + void update() { update(QDeclarativePropertyPrivate::DontRemoveBinding); } + virtual void update(QDeclarativePropertyPrivate::WriteFlags) = 0; void addToObject(QObject *); void removeFromObject(); @@ -88,8 +89,8 @@ protected: private: friend class QDeclarativeDeclarativeData; - friend class QDeclarativeMetaProperty; - friend class QDeclarativeMetaPropertyPrivate; + friend class QDeclarativeProperty; + friend class QDeclarativePropertyPrivate; friend class QDeclarativeVME; QObject *m_object; @@ -109,19 +110,19 @@ public: QObject *parent); ~QDeclarativeBinding(); - void setTarget(const QDeclarativeMetaProperty &); - QDeclarativeMetaProperty property() const; + void setTarget(const QDeclarativeProperty &); + QDeclarativeProperty property() const; bool enabled() const; // Inherited from QDeclarativeAbstractBinding - virtual void setEnabled(bool, QDeclarativeMetaProperty::WriteFlags flags); + virtual void setEnabled(bool, QDeclarativePropertyPrivate::WriteFlags flags); virtual int propertyIndex(); - virtual void update(QDeclarativeMetaProperty::WriteFlags flags); + virtual void update(QDeclarativePropertyPrivate::WriteFlags flags); virtual QString expression() const; public Q_SLOTS: - void update() { update(QDeclarativeMetaProperty::DontRemoveBinding); } + void update() { update(QDeclarativePropertyPrivate::DontRemoveBinding); } protected: void emitValueChanged(); diff --git a/src/declarative/qml/qdeclarativebinding_p_p.h b/src/declarative/qml/qdeclarativebinding_p_p.h index ac88400..041103c 100644 --- a/src/declarative/qml/qdeclarativebinding_p_p.h +++ b/src/declarative/qml/qdeclarativebinding_p_p.h @@ -55,7 +55,7 @@ #include "qdeclarativebinding_p.h" -#include "qdeclarativemetaproperty.h" +#include "qdeclarativeproperty.h" #include "qdeclarativeexpression_p.h" QT_BEGIN_NAMESPACE @@ -69,7 +69,7 @@ public: bool updating:1; bool enabled:1; - QDeclarativeMetaProperty property; + QDeclarativeProperty property; virtual void refresh(); }; diff --git a/src/declarative/qml/qdeclarativecompiledbindings.cpp b/src/declarative/qml/qdeclarativecompiledbindings.cpp index face22c..17937fd 100644 --- a/src/declarative/qml/qdeclarativecompiledbindings.cpp +++ b/src/declarative/qml/qdeclarativecompiledbindings.cpp @@ -109,9 +109,9 @@ public: scope(0), target(0), parent(0) {} // Inherited from QDeclarativeAbstractBinding - virtual void setEnabled(bool, QDeclarativeMetaProperty::WriteFlags flags); + virtual void setEnabled(bool, QDeclarativePropertyPrivate::WriteFlags flags); virtual int propertyIndex(); - virtual void update(QDeclarativeMetaProperty::WriteFlags flags); + virtual void update(QDeclarativePropertyPrivate::WriteFlags flags); virtual void destroy(); int index:30; @@ -244,7 +244,7 @@ QDeclarativeAbstractBinding *QDeclarativeCompiledBindings::configBinding(int ind return rv; } -void QDeclarativeCompiledBindingsPrivate::Binding::setEnabled(bool e, QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativeCompiledBindingsPrivate::Binding::setEnabled(bool e, QDeclarativePropertyPrivate::WriteFlags flags) { if (e) { addToObject(target); @@ -267,7 +267,7 @@ int QDeclarativeCompiledBindingsPrivate::Binding::propertyIndex() return property & 0xFFFF; } -void QDeclarativeCompiledBindingsPrivate::Binding::update(QDeclarativeMetaProperty::WriteFlags) +void QDeclarativeCompiledBindingsPrivate::Binding::update(QDeclarativePropertyPrivate::WriteFlags) { parent->run(this); } @@ -324,7 +324,7 @@ void QDeclarativeCompiledBindingsPrivate::run(Binding *binding) run(binding->index, cp, binding, binding->scope, target); vt->write(binding->target, binding->property & 0xFFFF, - QDeclarativeMetaProperty::DontRemoveBinding); + QDeclarativePropertyPrivate::DontRemoveBinding); } else { run(binding->index, cp, binding, binding->scope, binding->target); } @@ -1701,7 +1701,7 @@ bool QDeclarativeBindingCompilerPrivate::compile(QDeclarativeJS::AST::Node *node const QMetaObject *from = type.metaObject; const QMetaObject *to = engine->rawMetaObjectForType(destination->type); - if (QDeclarativeMetaPropertyPrivate::canConvert(from, to)) + if (QDeclarativePropertyPrivate::canConvert(from, to)) type.type = destination->type; } diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index d9a0c74..5da207d 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -58,7 +58,7 @@ #include "parser/qdeclarativejsast_p.h" #include "qdeclarativevmemetaobject_p.h" #include "qdeclarativeexpression_p.h" -#include "qdeclarativemetaproperty_p.h" +#include "qdeclarativeproperty_p.h" #include "qdeclarativerewrite_p.h" #include "qdeclarativescriptstring.h" #include "qdeclarativeglobal_p.h" @@ -2040,7 +2040,7 @@ bool QDeclarativeCompiler::buildPropertyObjectAssignment(QDeclarativeParser::Pro if (propertyMetaObject) { const QMetaObject *c = v->object->metatype; while(c) { - isAssignable |= (QDeclarativeMetaPropertyPrivate::equal(c, propertyMetaObject)); + isAssignable |= (QDeclarativePropertyPrivate::equal(c, propertyMetaObject)); c = c->superClass(); } } @@ -2623,7 +2623,7 @@ int QDeclarativeCompiler::genValueTypeData(QDeclarativeParser::Property *valueTy QDeclarativeParser::Property *prop) { QByteArray data = - QDeclarativeMetaPropertyPrivate::saveValueType(prop->parent->metaObject(), prop->index, + QDeclarativePropertyPrivate::saveValueType(prop->parent->metaObject(), prop->index, QDeclarativeEnginePrivate::get(engine)->valueTypes[prop->type]->metaObject(), valueTypeProp->index); // valueTypeProp->index, valueTypeProp->type); @@ -2633,7 +2633,7 @@ int QDeclarativeCompiler::genValueTypeData(QDeclarativeParser::Property *valueTy int QDeclarativeCompiler::genPropertyData(QDeclarativeParser::Property *prop) { - return output->indexForByteArray(QDeclarativeMetaPropertyPrivate::saveProperty(prop->parent->metaObject(), prop->index)); + return output->indexForByteArray(QDeclarativePropertyPrivate::saveProperty(prop->parent->metaObject(), prop->index)); } bool QDeclarativeCompiler::completeComponentBuild() @@ -2739,7 +2739,7 @@ bool QDeclarativeCompiler::canCoerce(int to, QDeclarativeParser::Object *from) const QMetaObject *fromMo = from->metaObject(); while (fromMo) { - if (QDeclarativeMetaPropertyPrivate::equal(fromMo, toMo)) + if (QDeclarativePropertyPrivate::equal(fromMo, toMo)) return true; fromMo = fromMo->superClass(); } @@ -2758,7 +2758,7 @@ bool QDeclarativeCompiler::canCoerce(int to, int from) QDeclarativeEnginePrivate::get(engine)->rawMetaObjectForType(from); while (fromMo) { - if (QDeclarativeMetaPropertyPrivate::equal(fromMo, toMo)) + if (QDeclarativePropertyPrivate::equal(fromMo, toMo)) return true; fromMo = fromMo->superClass(); } diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index beaba4a..fe63ad2 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -698,8 +698,8 @@ void QDeclarativeComponentPrivate::complete(QDeclarativeEnginePrivate *enginePri state->bindValues.at(ii); for (int jj = 0; jj < bv.count; ++jj) { if(bv.at(jj)) - bv.at(jj)->setEnabled(true, QDeclarativeMetaProperty::BypassInterceptor | - QDeclarativeMetaProperty::DontRemoveBinding); + bv.at(jj)->setEnabled(true, QDeclarativePropertyPrivate::BypassInterceptor | + QDeclarativePropertyPrivate::DontRemoveBinding); } QDeclarativeEnginePrivate::clear(bv); } diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 4435a5b..af75e98 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -49,7 +49,6 @@ #include "qdeclarativecontext.h" #include "qdeclarativeexpression.h" #include "qdeclarativecomponent.h" -#include "qdeclarativemetaproperty_p.h" #include "qdeclarativebinding_p_p.h" #include "qdeclarativevme_p.h" #include "qdeclarativeenginedebug_p.h" @@ -110,7 +109,7 @@ #define CSIDL_APPDATA 0x001a // <username>\Application Data #endif -Q_DECLARE_METATYPE(QDeclarativeMetaProperty) +Q_DECLARE_METATYPE(QDeclarativeProperty) QT_BEGIN_NAMESPACE @@ -337,6 +336,7 @@ void QDeclarativeEnginePrivate::clear(SimpleList<QDeclarativeParserStatus> &pss) } Q_GLOBAL_STATIC(QDeclarativeEngineDebugServer, qmlEngineDebugServer); +Q_GLOBAL_STATIC(QSet<QString>, qmlEnginePluginsWithRegisteredTypes); void QDeclarativeEnginePrivate::init() { @@ -1409,7 +1409,7 @@ public: qmldirParser.parse(); foreach (const QDeclarativeDirParser::Plugin &plugin, qmldirParser.plugins()) { - QString resolvedFilePath = QDeclarativeEnginePrivate::get(engine)->resolvePlugin(dir + QDir::separator() + plugin.path, + QString resolvedFilePath = QDeclarativeEnginePrivate::get(engine)->resolvePlugin(QDir(dir + QDir::separator() + plugin.path), plugin.name); if (!resolvedFilePath.isEmpty()) @@ -1622,10 +1622,32 @@ void QDeclarativeEngine::addImportPath(const QString& path) */ bool QDeclarativeEngine::importExtension(const QString &fileName, const QString &uri) { - QPluginLoader loader(fileName); + QFileInfo fileInfo(fileName); + const QString absoluteFilePath = fileInfo.absoluteFilePath(); + QPluginLoader loader(absoluteFilePath); if (QDeclarativeExtensionInterface *iface = qobject_cast<QDeclarativeExtensionInterface *>(loader.instance())) { - iface->initialize(this, uri.toUtf8().constData()); + const QByteArray bytes = uri.toUtf8(); + const char *moduleId = bytes.constData(); + + // ### this code should probably be protected with a mutex. + if (! qmlEnginePluginsWithRegisteredTypes()->contains(absoluteFilePath)) { + // types should only be registered once (they're global). + + qmlEnginePluginsWithRegisteredTypes()->insert(absoluteFilePath); + iface->registerTypes(moduleId); + } + + QDeclarativeEnginePrivate *d = QDeclarativeEnginePrivate::get(this); + + if (! d->initializedPlugins.contains(absoluteFilePath)) { + // things on the engine (eg. adding new global objects) have to be done for every engine. + + // protect against double initialization + d->initializedPlugins.insert(absoluteFilePath); + iface->initializeEngine(this, moduleId); + } + return true; } @@ -1670,7 +1692,6 @@ QString QDeclarativeEnginePrivate::resolvePlugin(const QDir &dir, const QString const QStringList &suffixes, const QString &prefix) { - qWarning() << baseName; foreach (const QString &suffix, suffixes) { QString pluginFileName = prefix; diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h index c4a40c5..0359f98 100644 --- a/src/declarative/qml/qdeclarativeengine_p.h +++ b/src/declarative/qml/qdeclarativeengine_p.h @@ -62,7 +62,7 @@ #include "qdeclarativevaluetype_p.h" #include "qdeclarativecontext.h" #include "qdeclarativeexpression.h" -#include "qdeclarativemetaproperty_p.h" +#include "qdeclarativeproperty_p.h" #include "qdeclarativepropertycache_p.h" #include "qdeclarativeobjectscriptclass_p.h" #include "qdeclarativecontextscriptclass_p.h" @@ -267,6 +267,7 @@ public: QStringList environmentImportPath; + QSet<QString> initializedPlugins; QString resolvePlugin(const QDir &dir, const QString &baseName, const QStringList &suffixes, diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp index 2ae0b54..09882cb 100644 --- a/src/declarative/qml/qdeclarativeenginedebug.cpp +++ b/src/declarative/qml/qdeclarativeenginedebug.cpp @@ -44,8 +44,8 @@ #include "qdeclarativeboundsignal_p.h" #include "qdeclarativeengine.h" #include "qdeclarativemetatype_p.h" -#include "qdeclarativemetaproperty.h" -#include "qdeclarativemetaproperty_p.h" +#include "qdeclarativeproperty.h" +#include "qdeclarativeproperty_p.h" #include "qdeclarativebinding_p.h" #include "qdeclarativecontext_p.h" #include "qdeclarativewatcher_p.h" @@ -110,7 +110,7 @@ QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) rv.name = QString::fromUtf8(prop.name()); rv.hasNotifySignal = prop.hasNotifySignal(); QDeclarativeAbstractBinding *binding = - QDeclarativeMetaPropertyPrivate::binding(QDeclarativeMetaProperty(obj, rv.name)); + QDeclarativePropertyPrivate::binding(QDeclarativeProperty(obj, rv.name)); if (binding) rv.binding = binding->expression(); diff --git a/src/declarative/qml/qdeclarativeextensioninterface.h b/src/declarative/qml/qdeclarativeextensioninterface.h index a8ae064..0fabd6d 100644 --- a/src/declarative/qml/qdeclarativeextensioninterface.h +++ b/src/declarative/qml/qdeclarativeextensioninterface.h @@ -55,7 +55,8 @@ class QDeclarativeEngine; struct Q_DECLARATIVE_EXPORT QDeclarativeExtensionInterface { virtual ~QDeclarativeExtensionInterface() {} - virtual void initialize(QDeclarativeEngine *engine, const char *uri) = 0; + virtual void registerTypes(const char *uri) = 0; + virtual void initializeEngine(QDeclarativeEngine *engine, const char *uri) = 0; }; Q_DECLARE_INTERFACE(QDeclarativeExtensionInterface, "com.trolltech.Qt.QDeclarativeExtensionInterface/1.0") diff --git a/src/declarative/qml/qdeclarativeextensionplugin.cpp b/src/declarative/qml/qdeclarativeextensionplugin.cpp index 6af3a6d..3d44d63 100644 --- a/src/declarative/qml/qdeclarativeextensionplugin.cpp +++ b/src/declarative/qml/qdeclarativeextensionplugin.cpp @@ -63,9 +63,9 @@ QT_BEGIN_NAMESPACE */ /*! - \fn void QDeclarativeExtensionPlugin::initialize(QDeclarativeEngine *engine) + \fn void QDeclarativeExtensionPlugin::registerTypes(const char *uri) - Initializes the extension specified in the given \a engine. + Registers the QML types in the given \a uri. */ /*! @@ -84,4 +84,16 @@ QDeclarativeExtensionPlugin::~QDeclarativeExtensionPlugin() { } +/*! + \fn void QDeclarativeExtensionPlugin::initializeEngine(QDeclarativeEngine *engine, const char *uri) + + Initializes the extension specified in the given \a engine. +*/ + +void QDeclarativeExtensionPlugin::initializeEngine(QDeclarativeEngine *engine, const char *uri) +{ + Q_UNUSED(engine); + Q_UNUSED(uri); +} + QT_END_NAMESPACE diff --git a/src/declarative/qml/qdeclarativeextensionplugin.h b/src/declarative/qml/qdeclarativeextensionplugin.h index 79df52b..c2ad798 100644 --- a/src/declarative/qml/qdeclarativeextensionplugin.h +++ b/src/declarative/qml/qdeclarativeextensionplugin.h @@ -62,7 +62,8 @@ public: explicit QDeclarativeExtensionPlugin(QObject *parent = 0); ~QDeclarativeExtensionPlugin(); - virtual void initialize(QDeclarativeEngine *engine, const char *uri) = 0; + virtual void registerTypes(const char *uri) = 0; + virtual void initializeEngine(QDeclarativeEngine *engine, const char *uri); }; QT_END_NAMESPACE diff --git a/src/declarative/qml/qdeclarativelist.cpp b/src/declarative/qml/qdeclarativelist.cpp index 4c9586c..af720d7 100644 --- a/src/declarative/qml/qdeclarativelist.cpp +++ b/src/declarative/qml/qdeclarativelist.cpp @@ -42,7 +42,7 @@ #include "qdeclarativelist.h" #include "qdeclarativelist_p.h" #include "qdeclarativeengine_p.h" -#include "qdeclarativemetaproperty_p.h" +#include "qdeclarativeproperty_p.h" QT_BEGIN_NAMESPACE @@ -174,7 +174,7 @@ bool QDeclarativeListReference::append(QObject *o) const { if (!canAppend()) return false; - if (o && !QDeclarativeMetaPropertyPrivate::canConvert(o->metaObject(), d->elementType)) + if (o && !QDeclarativePropertyPrivate::canConvert(o->metaObject(), d->elementType)) return false; d->property.append(&d->property, o); diff --git a/src/declarative/qml/qdeclarativemetatype.cpp b/src/declarative/qml/qdeclarativemetatype.cpp index e87f8ba..abbb9d6 100644 --- a/src/declarative/qml/qdeclarativemetatype.cpp +++ b/src/declarative/qml/qdeclarativemetatype.cpp @@ -619,7 +619,7 @@ QDeclarativeType *QDeclarativeMetaType::qmlType(const QByteArray &name, int vers QList<QDeclarativeType*> types = data->nameToType.values(name); foreach (QDeclarativeType *t, types) { - // XXX version_major<0 just a kludge for QDeclarativeMetaPropertyPrivate::initProperty + // XXX version_major<0 just a kludge for QDeclarativePropertyPrivate::initProperty if (version_major<0 || t->availableInVersion(version_major,version_minor)) return t; } diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp index 50fe5c0..542f417 100644 --- a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp +++ b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp @@ -338,7 +338,7 @@ void QDeclarativeObjectScriptClass::setProperty(QObject *obj, } } - QDeclarativeAbstractBinding *delBinding = QDeclarativeMetaPropertyPrivate::setBinding(obj, *lastData, 0); + QDeclarativeAbstractBinding *delBinding = QDeclarativePropertyPrivate::setBinding(obj, *lastData, 0); if (delBinding) delBinding->destroy(); @@ -348,7 +348,7 @@ void QDeclarativeObjectScriptClass::setProperty(QObject *obj, } else { // ### Can well known types be optimized? QVariant v = QDeclarativeScriptClass::toVariant(engine, value); - QDeclarativeMetaPropertyPrivate::write(obj, *lastData, v, evalContext); + QDeclarativePropertyPrivate::write(obj, *lastData, v, evalContext); } } diff --git a/src/declarative/qml/qdeclarativemetaproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp index 00f37b9..7ead1b5 100644 --- a/src/declarative/qml/qdeclarativemetaproperty.cpp +++ b/src/declarative/qml/qdeclarativeproperty.cpp @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#include "qdeclarativemetaproperty.h" -#include "qdeclarativemetaproperty_p.h" +#include "qdeclarativeproperty.h" +#include "qdeclarativeproperty_p.h" #include "qdeclarativecompositetypedata_p.h" #include "qdeclarative.h" @@ -63,32 +63,32 @@ QT_BEGIN_NAMESPACE /*! - \class QDeclarativeMetaProperty - \brief The QDeclarativeMetaProperty class abstracts accessing QML properties. + \class QDeclarativeProperty + \brief The QDeclarativeProperty class abstracts accessing QML properties. \internal */ /*! - Create an invalid QDeclarativeMetaProperty. + Create an invalid QDeclarativeProperty. */ -QDeclarativeMetaProperty::QDeclarativeMetaProperty() -: d(new QDeclarativeMetaPropertyPrivate) +QDeclarativeProperty::QDeclarativeProperty() +: d(new QDeclarativePropertyPrivate) { d->q = this; } /*! \internal */ -QDeclarativeMetaProperty::~QDeclarativeMetaProperty() +QDeclarativeProperty::~QDeclarativeProperty() { delete d; d = 0; } /*! - Creates a QDeclarativeMetaProperty for the default property of \a obj. If there is no - default property, an invalid QDeclarativeMetaProperty will be created. + Creates a QDeclarativeProperty for the default property of \a obj. If there is no + default property, an invalid QDeclarativeProperty will be created. */ -QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj) -: d(new QDeclarativeMetaPropertyPrivate) +QDeclarativeProperty::QDeclarativeProperty(QObject *obj) +: d(new QDeclarativePropertyPrivate) { d->q = this; d->initDefault(obj); @@ -96,11 +96,11 @@ QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj) /*! \internal - Creates a QDeclarativeMetaProperty for the default property of \a obj. If there is no - default property, an invalid QDeclarativeMetaProperty will be created. + Creates a QDeclarativeProperty for the default property of \a obj. If there is no + default property, an invalid QDeclarativeProperty will be created. */ -QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj, QDeclarativeContext *ctxt) -: d(new QDeclarativeMetaPropertyPrivate) +QDeclarativeProperty::QDeclarativeProperty(QObject *obj, QDeclarativeContext *ctxt) +: d(new QDeclarativePropertyPrivate) { d->q = this; d->context = ctxt; @@ -110,7 +110,7 @@ QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj, QDeclarativeCon /*! Initialize from the default property of \a obj */ -void QDeclarativeMetaPropertyPrivate::initDefault(QObject *obj) +void QDeclarativePropertyPrivate::initDefault(QObject *obj) { if (!obj) return; @@ -124,10 +124,10 @@ void QDeclarativeMetaPropertyPrivate::initDefault(QObject *obj) } /*! - Creates a QDeclarativeMetaProperty for the property \a name of \a obj. + Creates a QDeclarativeProperty for the property \a name of \a obj. */ -QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj, const QString &name) -: d(new QDeclarativeMetaPropertyPrivate) +QDeclarativeProperty::QDeclarativeProperty(QObject *obj, const QString &name) +: d(new QDeclarativePropertyPrivate) { d->q = this; d->initProperty(obj, name); @@ -136,10 +136,10 @@ QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj, const QString & /*! \internal - Creates a QDeclarativeMetaProperty for the property \a name of \a obj. + Creates a QDeclarativeProperty for the property \a name of \a obj. */ -QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj, const QString &name, QDeclarativeContext *ctxt) -: d(new QDeclarativeMetaPropertyPrivate) +QDeclarativeProperty::QDeclarativeProperty(QObject *obj, const QString &name, QDeclarativeContext *ctxt) +: d(new QDeclarativePropertyPrivate) { d->q = this; d->context = ctxt; @@ -149,7 +149,7 @@ QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj, const QString & Q_GLOBAL_STATIC(QDeclarativeValueTypeFactory, qmlValueTypes); -void QDeclarativeMetaPropertyPrivate::initProperty(QObject *obj, const QString &name) +void QDeclarativePropertyPrivate::initProperty(QObject *obj, const QString &name) { if (!obj) return; @@ -257,14 +257,14 @@ void QDeclarativeMetaPropertyPrivate::initProperty(QObject *obj, const QString & /*! Create a copy of \a other. */ -QDeclarativeMetaProperty::QDeclarativeMetaProperty(const QDeclarativeMetaProperty &other) -: d(new QDeclarativeMetaPropertyPrivate(*other.d)) +QDeclarativeProperty::QDeclarativeProperty(const QDeclarativeProperty &other) +: d(new QDeclarativePropertyPrivate(*other.d)) { d->q = this; } /*! - \enum QDeclarativeMetaProperty::PropertyTypeCategory + \enum QDeclarativeProperty::PropertyTypeCategory This enum specifies a category of QML property. @@ -275,7 +275,7 @@ QDeclarativeMetaProperty::QDeclarativeMetaProperty(const QDeclarativeMetaPropert */ /*! - \enum QDeclarativeMetaProperty::Type + \enum QDeclarativeProperty::Type This enum specifies a type of QML property. @@ -288,32 +288,32 @@ QDeclarativeMetaProperty::QDeclarativeMetaProperty(const QDeclarativeMetaPropert /*! Returns the property category. */ -QDeclarativeMetaProperty::PropertyTypeCategory QDeclarativeMetaProperty::propertyTypeCategory() const +QDeclarativeProperty::PropertyTypeCategory QDeclarativeProperty::propertyTypeCategory() const { return d->propertyTypeCategory(); } -QDeclarativeMetaProperty::PropertyTypeCategory -QDeclarativeMetaPropertyPrivate::propertyTypeCategory() const +QDeclarativeProperty::PropertyTypeCategory +QDeclarativePropertyPrivate::propertyTypeCategory() const { uint type = q->type(); - if (type & QDeclarativeMetaProperty::ValueTypeProperty) { - return QDeclarativeMetaProperty::Normal; - } else if (type & QDeclarativeMetaProperty::Property) { + if (type & QDeclarativeProperty::ValueTypeProperty) { + return QDeclarativeProperty::Normal; + } else if (type & QDeclarativeProperty::Property) { int type = propertyType(); if (type == QVariant::Invalid) - return QDeclarativeMetaProperty::InvalidCategory; + return QDeclarativeProperty::InvalidCategory; else if ((uint)type < QVariant::UserType) - return QDeclarativeMetaProperty::Normal; + return QDeclarativeProperty::Normal; else if (core.flags & QDeclarativePropertyCache::Data::IsQObjectDerived) - return QDeclarativeMetaProperty::Object; + return QDeclarativeProperty::Object; else if (core.flags & QDeclarativePropertyCache::Data::IsQList) - return QDeclarativeMetaProperty::List; + return QDeclarativeProperty::List; else - return QDeclarativeMetaProperty::Normal; + return QDeclarativeProperty::Normal; } else { - return QDeclarativeMetaProperty::InvalidCategory; + return QDeclarativeProperty::InvalidCategory; } } @@ -321,7 +321,7 @@ QDeclarativeMetaPropertyPrivate::propertyTypeCategory() const Returns the type name of the property, or 0 if the property has no type name. */ -const char *QDeclarativeMetaProperty::propertyTypeName() const +const char *QDeclarativeProperty::propertyTypeName() const { if (type() & ValueTypeProperty) { @@ -344,10 +344,10 @@ const char *QDeclarativeMetaProperty::propertyTypeName() const } /*! - Returns true if \a other and this QDeclarativeMetaProperty represent the same + Returns true if \a other and this QDeclarativeProperty represent the same property. */ -bool QDeclarativeMetaProperty::operator==(const QDeclarativeMetaProperty &other) const +bool QDeclarativeProperty::operator==(const QDeclarativeProperty &other) const { // category is intentially omitted here as it is generated // from the other members @@ -360,17 +360,17 @@ bool QDeclarativeMetaProperty::operator==(const QDeclarativeMetaProperty &other) Returns the QVariant type of the property, or QVariant::Invalid if the property has no QVariant type. */ -int QDeclarativeMetaProperty::propertyType() const +int QDeclarativeProperty::propertyType() const { return d->propertyType(); } -int QDeclarativeMetaPropertyPrivate::propertyType() const +int QDeclarativePropertyPrivate::propertyType() const { uint type = q->type(); - if (type & QDeclarativeMetaProperty::ValueTypeProperty) { + if (type & QDeclarativeProperty::ValueTypeProperty) { return valueType.valueTypePropType; - } else if (type & QDeclarativeMetaProperty::Property) { + } else if (type & QDeclarativeProperty::Property) { if (core.propType == (int)QVariant::LastType) return qMetaTypeId<QVariant>(); else @@ -383,7 +383,7 @@ int QDeclarativeMetaPropertyPrivate::propertyType() const /*! Returns the type of the property. */ -QDeclarativeMetaProperty::Type QDeclarativeMetaProperty::type() const +QDeclarativeProperty::Type QDeclarativeProperty::type() const { if (d->core.flags & QDeclarativePropertyCache::Data::IsFunction) return SignalProperty; @@ -396,33 +396,33 @@ QDeclarativeMetaProperty::Type QDeclarativeMetaProperty::type() const } /*! - Returns true if this QDeclarativeMetaProperty represents a regular Qt property. + Returns true if this QDeclarativeProperty represents a regular Qt property. */ -bool QDeclarativeMetaProperty::isProperty() const +bool QDeclarativeProperty::isProperty() const { return type() & Property; } /*! - Returns true if this QDeclarativeMetaProperty represents a default property. + Returns true if this QDeclarativeProperty represents a default property. */ -bool QDeclarativeMetaProperty::isDefault() const +bool QDeclarativeProperty::isDefault() const { return type() & Default; } /*! - Returns the QDeclarativeMetaProperty's QObject. + Returns the QDeclarativeProperty's QObject. */ -QObject *QDeclarativeMetaProperty::object() const +QObject *QDeclarativeProperty::object() const { return d->object; } /*! - Assign \a other to this QDeclarativeMetaProperty. + Assign \a other to this QDeclarativeProperty. */ -QDeclarativeMetaProperty &QDeclarativeMetaProperty::operator=(const QDeclarativeMetaProperty &other) +QDeclarativeProperty &QDeclarativeProperty::operator=(const QDeclarativeProperty &other) { d->context = other.d->context; d->object = other.d->object; @@ -440,9 +440,9 @@ QDeclarativeMetaProperty &QDeclarativeMetaProperty::operator=(const QDeclarative /*! Returns true if the property is writable, otherwise false. */ -bool QDeclarativeMetaProperty::isWritable() const +bool QDeclarativeProperty::isWritable() const { - QDeclarativeMetaProperty::PropertyTypeCategory category = propertyTypeCategory(); + QDeclarativeProperty::PropertyTypeCategory category = propertyTypeCategory(); if (!d->object) return false; @@ -459,7 +459,7 @@ bool QDeclarativeMetaProperty::isWritable() const /*! Returns true if the property is designable, otherwise false. */ -bool QDeclarativeMetaProperty::isDesignable() const +bool QDeclarativeProperty::isDesignable() const { if (type() & Property && d->core.isValid() && d->object) return d->object->metaObject()->property(d->core.coreIndex).isDesignable(); @@ -470,7 +470,7 @@ bool QDeclarativeMetaProperty::isDesignable() const /*! Returns true if the property is resettable, otherwise false. */ -bool QDeclarativeMetaProperty::isResettable() const +bool QDeclarativeProperty::isResettable() const { if (type() & Property && d->core.isValid() && d->object) return d->core.flags & QDeclarativePropertyCache::Data::IsResettable; @@ -479,10 +479,10 @@ bool QDeclarativeMetaProperty::isResettable() const } /*! - Returns true if the QDeclarativeMetaProperty refers to a valid property, otherwise + Returns true if the QDeclarativeProperty refers to a valid property, otherwise false. */ -bool QDeclarativeMetaProperty::isValid() const +bool QDeclarativeProperty::isValid() const { return type() != Invalid; } @@ -490,7 +490,7 @@ bool QDeclarativeMetaProperty::isValid() const /*! Return the name of this QML property. */ -QString QDeclarativeMetaProperty::name() const +QString QDeclarativeProperty::name() const { if (!d->isNameCached) { // ### @@ -526,7 +526,7 @@ QString QDeclarativeMetaProperty::name() const Returns the \l{QMetaProperty} {Qt property} associated with this QML property. */ -QMetaProperty QDeclarativeMetaProperty::property() const +QMetaProperty QDeclarativeProperty::property() const { if (type() & Property && d->core.isValid() && d->object) return d->object->metaObject()->property(d->core.coreIndex); @@ -538,7 +538,7 @@ QMetaProperty QDeclarativeMetaProperty::property() const Return the QMetaMethod for this property if it is a SignalProperty, otherwise returns an invalid QMetaMethod. */ -QMetaMethod QDeclarativeMetaProperty::method() const +QMetaMethod QDeclarativeProperty::method() const { if (type() & SignalProperty && d->object) return d->object->metaObject()->method(d->core.coreIndex); @@ -552,7 +552,7 @@ QMetaMethod QDeclarativeMetaProperty::method() const exists. */ QDeclarativeAbstractBinding * -QDeclarativeMetaPropertyPrivate::binding(const QDeclarativeMetaProperty &that) +QDeclarativePropertyPrivate::binding(const QDeclarativeProperty &that) { if (!that.isProperty() || !that.d->object) return 0; @@ -588,9 +588,9 @@ QDeclarativeMetaPropertyPrivate::binding(const QDeclarativeMetaProperty &that) the binding sets the intial value, it will use these flags for the write). */ QDeclarativeAbstractBinding * -QDeclarativeMetaPropertyPrivate::setBinding(const QDeclarativeMetaProperty &that, +QDeclarativePropertyPrivate::setBinding(const QDeclarativeProperty &that, QDeclarativeAbstractBinding *newBinding, - QDeclarativeMetaProperty::WriteFlags flags) + WriteFlags flags) { if (!that.isProperty() || !that.d->object) { if (newBinding) @@ -602,8 +602,8 @@ QDeclarativeMetaPropertyPrivate::setBinding(const QDeclarativeMetaProperty &that } QDeclarativeAbstractBinding * -QDeclarativeMetaPropertyPrivate::setBinding(QObject *object, const QDeclarativePropertyCache::Data &core, - QDeclarativeAbstractBinding *newBinding, QDeclarativeMetaProperty::WriteFlags flags) +QDeclarativePropertyPrivate::setBinding(QObject *object, const QDeclarativePropertyCache::Data &core, + QDeclarativeAbstractBinding *newBinding, WriteFlags flags) { QDeclarativeDeclarativeData *data = QDeclarativeDeclarativeData::get(object, 0 != newBinding); @@ -635,9 +635,9 @@ QDeclarativeMetaPropertyPrivate::setBinding(QObject *object, const QDeclarativeP signal expression exists. */ QDeclarativeExpression * -QDeclarativeMetaPropertyPrivate::signalExpression(const QDeclarativeMetaProperty &that) +QDeclarativePropertyPrivate::signalExpression(const QDeclarativeProperty &that) { - if (!(that.type() & QDeclarativeMetaProperty::SignalProperty)) + if (!(that.type() & QDeclarativeProperty::SignalProperty)) return 0; const QObjectList &children = that.d->object->children(); @@ -661,10 +661,10 @@ QDeclarativeMetaPropertyPrivate::signalExpression(const QDeclarativeMetaProperty assumed by the caller. */ QDeclarativeExpression * -QDeclarativeMetaPropertyPrivate::setSignalExpression(const QDeclarativeMetaProperty &that, +QDeclarativePropertyPrivate::setSignalExpression(const QDeclarativeProperty &that, QDeclarativeExpression *expr) { - if (!(that.type() & QDeclarativeMetaProperty::SignalProperty)) { + if (!(that.type() & QDeclarativeProperty::SignalProperty)) { delete expr; return 0; } @@ -690,7 +690,7 @@ QDeclarativeMetaPropertyPrivate::setSignalExpression(const QDeclarativeMetaPrope /*! Returns the property value. */ -QVariant QDeclarativeMetaProperty::read() const +QVariant QDeclarativeProperty::read() const { if (!d->object) return QVariant(); @@ -707,10 +707,10 @@ QVariant QDeclarativeMetaProperty::read() const return QVariant(); } -QVariant QDeclarativeMetaPropertyPrivate::readValueProperty() +QVariant QDeclarativePropertyPrivate::readValueProperty() { uint type = q->type(); - if(type & QDeclarativeMetaProperty::ValueTypeProperty) { + if(type & QDeclarativeProperty::ValueTypeProperty) { QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(context); QDeclarativeValueType *valueType = 0; @@ -743,7 +743,7 @@ QVariant QDeclarativeMetaPropertyPrivate::readValueProperty() //### //writeEnumProperty MIRRORS the relelvant bit of QMetaProperty::write AND MUST BE KEPT IN SYNC! //### -bool QDeclarativeMetaPropertyPrivate::writeEnumProperty(const QMetaProperty &prop, int idx, QObject *object, const QVariant &value, int flags) +bool QDeclarativePropertyPrivate::writeEnumProperty(const QMetaProperty &prop, int idx, QObject *object, const QVariant &value, int flags) { if (!object || !prop.isWritable()) return false; @@ -780,18 +780,17 @@ bool QDeclarativeMetaPropertyPrivate::writeEnumProperty(const QMetaProperty &pro return status; } -bool QDeclarativeMetaPropertyPrivate::writeValueProperty(const QVariant &value, - QDeclarativeMetaProperty::WriteFlags flags) +bool QDeclarativePropertyPrivate::writeValueProperty(const QVariant &value, WriteFlags flags) { // Remove any existing bindings on this property - if (!(flags & QDeclarativeMetaProperty::DontRemoveBinding)) { + if (!(flags & DontRemoveBinding)) { QDeclarativeAbstractBinding *binding = setBinding(*q, 0); if (binding) binding->destroy(); } bool rv = false; uint type = q->type(); - if (type & QDeclarativeMetaProperty::ValueTypeProperty) { + if (type & QDeclarativeProperty::ValueTypeProperty) { QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(context); QDeclarativeValueType *writeBack = 0; @@ -821,9 +820,9 @@ bool QDeclarativeMetaPropertyPrivate::writeValueProperty(const QVariant &value, return rv; } -bool QDeclarativeMetaPropertyPrivate::write(QObject *object, const QDeclarativePropertyCache::Data &property, - const QVariant &value, QDeclarativeContext *context, - QDeclarativeMetaProperty::WriteFlags flags) +bool QDeclarativePropertyPrivate::write(QObject *object, const QDeclarativePropertyCache::Data &property, + const QVariant &value, QDeclarativeContext *context, + WriteFlags flags) { int coreIdx = property.coreIndex; int status = -1; //for dbus @@ -976,7 +975,7 @@ bool QDeclarativeMetaPropertyPrivate::write(QObject *object, const QDeclarativeP return true; } -const QMetaObject *QDeclarativeMetaPropertyPrivate::rawMetaObjectForType(QDeclarativeEnginePrivate *engine, int userType) +const QMetaObject *QDeclarativePropertyPrivate::rawMetaObjectForType(QDeclarativeEnginePrivate *engine, int userType) { if (engine) { return engine->rawMetaObjectForType(userType); @@ -989,15 +988,15 @@ const QMetaObject *QDeclarativeMetaPropertyPrivate::rawMetaObjectForType(QDeclar /*! Set the property value to \a value. */ -bool QDeclarativeMetaProperty::write(const QVariant &value) const +bool QDeclarativeProperty::write(const QVariant &value) const { - return write(value, 0); + return QDeclarativePropertyPrivate::write(*this, value, 0); } /*! Resets the property value. */ -bool QDeclarativeMetaProperty::reset() const +bool QDeclarativeProperty::reset() const { if (isResettable()) { void *args[] = { 0 }; @@ -1008,10 +1007,12 @@ bool QDeclarativeMetaProperty::reset() const } } -bool QDeclarativeMetaProperty::write(const QVariant &value, QDeclarativeMetaProperty::WriteFlags flags) const +bool QDeclarativePropertyPrivate::write(const QDeclarativeProperty &that, + const QVariant &value, WriteFlags flags) { - if (d->object && type() & Property && d->core.isValid() && isWritable()) - return d->writeValueProperty(value, flags); + if (that.d->object && that.type() & QDeclarativeProperty::Property && + that.d->core.isValid() && that.isWritable()) + return that.d->writeValueProperty(value, flags); else return false; } @@ -1019,7 +1020,7 @@ bool QDeclarativeMetaProperty::write(const QVariant &value, QDeclarativeMetaProp /*! Returns true if the property has a change notifier signal, otherwise false. */ -bool QDeclarativeMetaProperty::hasChangedNotifier() const +bool QDeclarativeProperty::hasChangedNotifier() const { if (type() & Property && d->object) { return d->object->metaObject()->property(d->core.coreIndex).hasNotifySignal(); @@ -1034,7 +1035,7 @@ bool QDeclarativeMetaProperty::hasChangedNotifier() const Some properties, such as attached properties or those whose value never changes, do not require a change notifier. */ -bool QDeclarativeMetaProperty::needsChangedNotifier() const +bool QDeclarativeProperty::needsChangedNotifier() const { return type() & Property && !property().isConstant(); } @@ -1047,7 +1048,7 @@ bool QDeclarativeMetaProperty::needsChangedNotifier() const change notifier signal, or if the \a dest object does not have the specified \a method. */ -bool QDeclarativeMetaProperty::connectNotifier(QObject *dest, int method) const +bool QDeclarativeProperty::connectNotifier(QObject *dest, int method) const { if (!(type() & Property) || !d->object) return false; @@ -1068,7 +1069,7 @@ bool QDeclarativeMetaProperty::connectNotifier(QObject *dest, int method) const change notifier signal, or if the \a dest object does not have the specified \a slot. */ -bool QDeclarativeMetaProperty::connectNotifier(QObject *dest, const char *slot) const +bool QDeclarativeProperty::connectNotifier(QObject *dest, const char *slot) const { if (!(type() & Property) || !d->object) return false; @@ -1085,20 +1086,18 @@ bool QDeclarativeMetaProperty::connectNotifier(QObject *dest, const char *slot) /*! Return the Qt metaobject index of the property. */ -int QDeclarativeMetaProperty::coreIndex() const +int QDeclarativeProperty::coreIndex() const { return d->core.coreIndex; } -/*! \internal */ -int QDeclarativeMetaProperty::valueTypeCoreIndex() const +int QDeclarativePropertyPrivate::valueTypeCoreIndex(const QDeclarativeProperty &that) { - return d->valueType.valueTypeCoreIdx; + return that.d->valueType.valueTypeCoreIdx; } - struct SerializedData { - QDeclarativeMetaProperty::Type type; + QDeclarativeProperty::Type type; QDeclarativePropertyCache::Data core; }; @@ -1106,14 +1105,14 @@ struct ValueTypeSerializedData : public SerializedData { QDeclarativePropertyCache::ValueTypeData valueType; }; -QByteArray QDeclarativeMetaPropertyPrivate::saveValueType(const QMetaObject *metaObject, int index, +QByteArray QDeclarativePropertyPrivate::saveValueType(const QMetaObject *metaObject, int index, const QMetaObject *subObject, int subIndex) { QMetaProperty prop = metaObject->property(index); QMetaProperty subProp = subObject->property(subIndex); ValueTypeSerializedData sd; - sd.type = QDeclarativeMetaProperty::ValueTypeProperty; + sd.type = QDeclarativeProperty::ValueTypeProperty; sd.core.load(metaObject->property(index)); sd.valueType.flags = QDeclarativePropertyCache::Data::flagsForProperty(subProp); sd.valueType.valueTypeCoreIdx = subIndex; @@ -1124,20 +1123,20 @@ QByteArray QDeclarativeMetaPropertyPrivate::saveValueType(const QMetaObject *met return rv; } -QByteArray QDeclarativeMetaPropertyPrivate::saveProperty(const QMetaObject *metaObject, int index) +QByteArray QDeclarativePropertyPrivate::saveProperty(const QMetaObject *metaObject, int index) { SerializedData sd; - sd.type = QDeclarativeMetaProperty::Property; + sd.type = QDeclarativeProperty::Property; sd.core.load(metaObject->property(index)); QByteArray rv((const char *)&sd, sizeof(sd)); return rv; } -QDeclarativeMetaProperty -QDeclarativeMetaPropertyPrivate::restore(const QByteArray &data, QObject *object, QDeclarativeContext *ctxt) +QDeclarativeProperty +QDeclarativePropertyPrivate::restore(const QByteArray &data, QObject *object, QDeclarativeContext *ctxt) { - QDeclarativeMetaProperty prop; + QDeclarativeProperty prop; if (data.isEmpty()) return prop; @@ -1146,9 +1145,9 @@ QDeclarativeMetaPropertyPrivate::restore(const QByteArray &data, QObject *object prop.d->context = ctxt; const SerializedData *sd = (const SerializedData *)data.constData(); - if (sd->type == QDeclarativeMetaProperty::Property) { + if (sd->type == QDeclarativeProperty::Property) { prop.d->core = sd->core; - } else if(sd->type == QDeclarativeMetaProperty::ValueTypeProperty) { + } else if(sd->type == QDeclarativeProperty::ValueTypeProperty) { const ValueTypeSerializedData *vt = (const ValueTypeSerializedData *)sd; prop.d->core = vt->core; prop.d->valueType = vt->valueType; @@ -1160,7 +1159,7 @@ QDeclarativeMetaPropertyPrivate::restore(const QByteArray &data, QObject *object /*! Returns true if lhs and rhs refer to the same metaobject data */ -bool QDeclarativeMetaPropertyPrivate::equal(const QMetaObject *lhs, const QMetaObject *rhs) +bool QDeclarativePropertyPrivate::equal(const QMetaObject *lhs, const QMetaObject *rhs) { return lhs == rhs || (1 && lhs && rhs && lhs->d.stringdata == rhs->d.stringdata); } @@ -1168,7 +1167,7 @@ bool QDeclarativeMetaPropertyPrivate::equal(const QMetaObject *lhs, const QMetaO /*! Returns true if from inherits to. */ -bool QDeclarativeMetaPropertyPrivate::canConvert(const QMetaObject *from, const QMetaObject *to) +bool QDeclarativePropertyPrivate::canConvert(const QMetaObject *from, const QMetaObject *to) { if (from && to == &QObject::staticMetaObject) return true; diff --git a/src/declarative/qml/qdeclarativemetaproperty.h b/src/declarative/qml/qdeclarativeproperty.h index 900d1cd..be1065e 100644 --- a/src/declarative/qml/qdeclarativemetaproperty.h +++ b/src/declarative/qml/qdeclarativeproperty.h @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#ifndef QDECLARATIVEMETAPROPERTY_H -#define QDECLARATIVEMETAPROPERTY_H +#ifndef QDECLARATIVEPROPERTY_H +#define QDECLARATIVEPROPERTY_H #include <QtCore/qmetaobject.h> @@ -59,8 +59,8 @@ struct QMetaObject; class QDeclarativeContext; class QDeclarativeEngine; -class QDeclarativeMetaPropertyPrivate; -class Q_DECLARATIVE_EXPORT QDeclarativeMetaProperty +class QDeclarativePropertyPrivate; +class Q_DECLARATIVE_EXPORT QDeclarativeProperty { public: enum PropertyTypeCategory { @@ -77,25 +77,22 @@ public: ValueTypeProperty = 0x10 }; - QDeclarativeMetaProperty(); - ~QDeclarativeMetaProperty(); + QDeclarativeProperty(); + ~QDeclarativeProperty(); - QDeclarativeMetaProperty(QObject *); - QDeclarativeMetaProperty(QObject *, QDeclarativeContext *); + QDeclarativeProperty(QObject *); + QDeclarativeProperty(QObject *, QDeclarativeContext *); - QDeclarativeMetaProperty(QObject *, const QString &); - QDeclarativeMetaProperty(QObject *, const QString &, QDeclarativeContext *); + QDeclarativeProperty(QObject *, const QString &); + QDeclarativeProperty(QObject *, const QString &, QDeclarativeContext *); - QDeclarativeMetaProperty(const QDeclarativeMetaProperty &); - QDeclarativeMetaProperty &operator=(const QDeclarativeMetaProperty &); + QDeclarativeProperty(const QDeclarativeProperty &); + QDeclarativeProperty &operator=(const QDeclarativeProperty &); QString name() const; QVariant read() const; bool write(const QVariant &) const; - enum WriteFlag { BypassInterceptor = 0x01, DontRemoveBinding = 0x02 }; - Q_DECLARE_FLAGS(WriteFlags, WriteFlag) - bool write(const QVariant &, QDeclarativeMetaProperty::WriteFlags) const; bool reset() const; bool hasChangedNotifier() const; @@ -103,8 +100,6 @@ public: bool connectNotifier(QObject *dest, const char *slot) const; bool connectNotifier(QObject *dest, int method) const; - QMetaMethod method() const; - Type type() const; bool isProperty() const; bool isDefault() const; @@ -118,22 +113,21 @@ public: PropertyTypeCategory propertyTypeCategory() const; const char *propertyTypeName() const; - bool operator==(const QDeclarativeMetaProperty &) const; + bool operator==(const QDeclarativeProperty &) const; + int coreIndex() const; QMetaProperty property() const; + QMetaMethod method() const; - int coreIndex() const; - int valueTypeCoreIndex() const; private: friend class QDeclarativeEnginePrivate; - friend class QDeclarativeMetaPropertyPrivate; - QDeclarativeMetaPropertyPrivate *d; + friend class QDeclarativePropertyPrivate; + QDeclarativePropertyPrivate *d; }; -typedef QList<QDeclarativeMetaProperty> QDeclarativeMetaProperties; - Q_DECLARE_OPERATORS_FOR_FLAGS(QDeclarativeMetaProperty::WriteFlags) +typedef QList<QDeclarativeProperty> QDeclarativeProperties; QT_END_NAMESPACE QT_END_HEADER -#endif // QDECLARATIVEMETAPROPERTY_H +#endif // QDECLARATIVEPROPERTY_H diff --git a/src/declarative/qml/qdeclarativemetaproperty_p.h b/src/declarative/qml/qdeclarativeproperty_p.h index 937cfd7..d0ad09c 100644 --- a/src/declarative/qml/qdeclarativemetaproperty_p.h +++ b/src/declarative/qml/qdeclarativeproperty_p.h @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#ifndef QDECLARATIVEMETAPROPERTY_P_H -#define QDECLARATIVEMETAPROPERTY_P_H +#ifndef QDECLARATIVEPROPERTY_P_H +#define QDECLARATIVEPROPERTY_P_H // // W A R N I N G @@ -53,7 +53,7 @@ // We mean it. // -#include "qdeclarativemetaproperty.h" +#include "qdeclarativeproperty.h" #include "qdeclarativepropertycache_p.h" #include "qdeclarativeguard_p.h" @@ -64,20 +64,23 @@ QT_BEGIN_NAMESPACE class QDeclarativeContext; class QDeclarativeEnginePrivate; -class Q_AUTOTEST_EXPORT QDeclarativeMetaPropertyPrivate +class Q_AUTOTEST_EXPORT QDeclarativePropertyPrivate { public: - QDeclarativeMetaPropertyPrivate() + enum WriteFlag { BypassInterceptor = 0x01, DontRemoveBinding = 0x02 }; + Q_DECLARE_FLAGS(WriteFlags, WriteFlag) + + QDeclarativePropertyPrivate() : q(0), context(0), object(0), isDefaultProperty(false), isNameCached(false) {} - QDeclarativeMetaPropertyPrivate(const QDeclarativeMetaPropertyPrivate &other) + QDeclarativePropertyPrivate(const QDeclarativePropertyPrivate &other) : q(0), context(other.context), object(other.object), isDefaultProperty(other.isDefaultProperty), isNameCached(other.isNameCached), core(other.core), nameCache(other.nameCache), valueType(other.valueType) {} - QDeclarativeMetaProperty *q; + QDeclarativeProperty *q; QDeclarativeContext *context; QDeclarativeGuard<QObject> object; @@ -95,40 +98,43 @@ public: QMetaMethod findSignal(QObject *, const QString &); int propertyType() const; - QDeclarativeMetaProperty::PropertyTypeCategory propertyTypeCategory() const; + QDeclarativeProperty::PropertyTypeCategory propertyTypeCategory() const; QVariant readValueProperty(); - bool writeValueProperty(const QVariant &, QDeclarativeMetaProperty::WriteFlags); + bool writeValueProperty(const QVariant &, WriteFlags); static const QMetaObject *rawMetaObjectForType(QDeclarativeEnginePrivate *, int); static bool writeEnumProperty(const QMetaProperty &prop, int idx, QObject *object, const QVariant &value, int flags); static bool write(QObject *, const QDeclarativePropertyCache::Data &, const QVariant &, - QDeclarativeContext *, QDeclarativeMetaProperty::WriteFlags flags = 0); + QDeclarativeContext *, WriteFlags flags = 0); static QDeclarativeAbstractBinding *setBinding(QObject *, const QDeclarativePropertyCache::Data &, QDeclarativeAbstractBinding *, - QDeclarativeMetaProperty::WriteFlags flags = QDeclarativeMetaProperty::DontRemoveBinding); + WriteFlags flags = DontRemoveBinding); static QByteArray saveValueType(const QMetaObject *, int, const QMetaObject *, int); static QByteArray saveProperty(const QMetaObject *, int); - static QDeclarativeMetaProperty restore(const QByteArray &, QObject *, QDeclarativeContext *); + static QDeclarativeProperty restore(const QByteArray &, QObject *, QDeclarativeContext *); static bool equal(const QMetaObject *, const QMetaObject *); static bool canConvert(const QMetaObject *from, const QMetaObject *to); // "Public" (to QML) methods - static QDeclarativeAbstractBinding *binding(const QDeclarativeMetaProperty &that); - static QDeclarativeAbstractBinding *setBinding(const QDeclarativeMetaProperty &that, + static QDeclarativeAbstractBinding *binding(const QDeclarativeProperty &that); + static QDeclarativeAbstractBinding *setBinding(const QDeclarativeProperty &that, QDeclarativeAbstractBinding *, - QDeclarativeMetaProperty::WriteFlags flags = QDeclarativeMetaProperty::DontRemoveBinding); - static QDeclarativeExpression *signalExpression(const QDeclarativeMetaProperty &that); - static QDeclarativeExpression *setSignalExpression(const QDeclarativeMetaProperty &that, + WriteFlags flags = DontRemoveBinding); + static QDeclarativeExpression *signalExpression(const QDeclarativeProperty &that); + static QDeclarativeExpression *setSignalExpression(const QDeclarativeProperty &that, QDeclarativeExpression *) ; - + static bool write(const QDeclarativeProperty &that, const QVariant &, WriteFlags); + static int valueTypeCoreIndex(const QDeclarativeProperty &that); }; +Q_DECLARE_OPERATORS_FOR_FLAGS(QDeclarativePropertyPrivate::WriteFlags) + QT_END_NAMESPACE -#endif // QDECLARATIVEMETAPROPERTY_P_H +#endif // QDECLARATIVEPROPERTY_P_H diff --git a/src/declarative/qml/qdeclarativepropertyvalueinterceptor.cpp b/src/declarative/qml/qdeclarativepropertyvalueinterceptor.cpp index 7626d56..3f6d805 100644 --- a/src/declarative/qml/qdeclarativepropertyvalueinterceptor.cpp +++ b/src/declarative/qml/qdeclarativepropertyvalueinterceptor.cpp @@ -66,7 +66,7 @@ QDeclarativePropertyValueInterceptor::~QDeclarativePropertyValueInterceptor() } /*! - \fn void QDeclarativePropertyValueInterceptor::setTarget(const QDeclarativeMetaProperty &property) + \fn void QDeclarativePropertyValueInterceptor::setTarget(const QDeclarativeProperty &property) Set the target \a property for the value interceptor. This method will be called by the QML engine when assigning a value interceptor. */ diff --git a/src/declarative/qml/qdeclarativepropertyvalueinterceptor.h b/src/declarative/qml/qdeclarativepropertyvalueinterceptor.h index 2a29d5b..3de5abc 100644 --- a/src/declarative/qml/qdeclarativepropertyvalueinterceptor.h +++ b/src/declarative/qml/qdeclarativepropertyvalueinterceptor.h @@ -50,13 +50,13 @@ QT_BEGIN_NAMESPACE QT_MODULE(Declarative) -class QDeclarativeMetaProperty; +class QDeclarativeProperty; class Q_DECLARATIVE_EXPORT QDeclarativePropertyValueInterceptor { public: QDeclarativePropertyValueInterceptor(); virtual ~QDeclarativePropertyValueInterceptor(); - virtual void setTarget(const QDeclarativeMetaProperty &property) = 0; + virtual void setTarget(const QDeclarativeProperty &property) = 0; virtual void write(const QVariant &value) = 0; }; Q_DECLARE_INTERFACE(QDeclarativePropertyValueInterceptor, "com.trolltech.qml.QDeclarativePropertyValueInterceptor") diff --git a/src/declarative/qml/qdeclarativepropertyvaluesource.cpp b/src/declarative/qml/qdeclarativepropertyvaluesource.cpp index 626e391..b106d4f 100644 --- a/src/declarative/qml/qdeclarativepropertyvaluesource.cpp +++ b/src/declarative/qml/qdeclarativepropertyvaluesource.cpp @@ -63,7 +63,7 @@ QDeclarativePropertyValueSource::~QDeclarativePropertyValueSource() } /*! - \fn void QDeclarativePropertyValueSource::setTarget(const QDeclarativeMetaProperty &property) + \fn void QDeclarativePropertyValueSource::setTarget(const QDeclarativeProperty &property) Set the target \a property for the value source. This method will be called by the QML engine when assigning a value source. */ diff --git a/src/declarative/qml/qdeclarativepropertyvaluesource.h b/src/declarative/qml/qdeclarativepropertyvaluesource.h index 99c80af..70d2c03 100644 --- a/src/declarative/qml/qdeclarativepropertyvaluesource.h +++ b/src/declarative/qml/qdeclarativepropertyvaluesource.h @@ -50,13 +50,13 @@ QT_BEGIN_NAMESPACE QT_MODULE(Declarative) -class QDeclarativeMetaProperty; +class QDeclarativeProperty; class Q_DECLARATIVE_EXPORT QDeclarativePropertyValueSource { public: QDeclarativePropertyValueSource(); virtual ~QDeclarativePropertyValueSource(); - virtual void setTarget(const QDeclarativeMetaProperty &) = 0; + virtual void setTarget(const QDeclarativeProperty &) = 0; }; Q_DECLARE_INTERFACE(QDeclarativePropertyValueSource, "com.trolltech.qml.QDeclarativePropertyValueSource") diff --git a/src/declarative/qml/qdeclarativevaluetype.cpp b/src/declarative/qml/qdeclarativevaluetype.cpp index df83fa4..01fa214 100644 --- a/src/declarative/qml/qdeclarativevaluetype.cpp +++ b/src/declarative/qml/qdeclarativevaluetype.cpp @@ -100,7 +100,7 @@ void QDeclarativePointFValueType::read(QObject *obj, int idx) QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a); } -void QDeclarativePointFValueType::write(QObject *obj, int idx, QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativePointFValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags) { int status = -1; void *a[] = { &point, 0, &status, &flags }; @@ -148,7 +148,7 @@ void QDeclarativePointValueType::read(QObject *obj, int idx) QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a); } -void QDeclarativePointValueType::write(QObject *obj, int idx, QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativePointValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags) { int status = -1; void *a[] = { &point, 0, &status, &flags }; @@ -196,7 +196,7 @@ void QDeclarativeSizeFValueType::read(QObject *obj, int idx) QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a); } -void QDeclarativeSizeFValueType::write(QObject *obj, int idx, QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativeSizeFValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags) { int status = -1; void *a[] = { &size, 0, &status, &flags }; @@ -244,7 +244,7 @@ void QDeclarativeSizeValueType::read(QObject *obj, int idx) QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a); } -void QDeclarativeSizeValueType::write(QObject *obj, int idx, QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativeSizeValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags) { int status = -1; void *a[] = { &size, 0, &status, &flags }; @@ -292,7 +292,7 @@ void QDeclarativeRectFValueType::read(QObject *obj, int idx) QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a); } -void QDeclarativeRectFValueType::write(QObject *obj, int idx, QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativeRectFValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags) { int status = -1; void *a[] = { &rect, 0, &status, &flags }; @@ -360,7 +360,7 @@ void QDeclarativeRectValueType::read(QObject *obj, int idx) QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a); } -void QDeclarativeRectValueType::write(QObject *obj, int idx, QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativeRectValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags) { int status = -1; void *a[] = { &rect, 0, &status, &flags }; @@ -428,7 +428,7 @@ void QDeclarativeVector3DValueType::read(QObject *obj, int idx) QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a); } -void QDeclarativeVector3DValueType::write(QObject *obj, int idx, QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativeVector3DValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags) { int status = -1; void *a[] = { &vector, 0, &status, &flags }; @@ -486,7 +486,7 @@ void QDeclarativeEasingValueType::read(QObject *obj, int idx) QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a); } -void QDeclarativeEasingValueType::write(QObject *obj, int idx, QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativeEasingValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags) { int status = -1; void *a[] = { &easing, 0, &status, &flags }; @@ -554,7 +554,7 @@ void QDeclarativeFontValueType::read(QObject *obj, int idx) QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a); } -void QDeclarativeFontValueType::write(QObject *obj, int idx, QDeclarativeMetaProperty::WriteFlags flags) +void QDeclarativeFontValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags) { int status = -1; void *a[] = { &font, 0, &status, &flags }; diff --git a/src/declarative/qml/qdeclarativevaluetype_p.h b/src/declarative/qml/qdeclarativevaluetype_p.h index 995433b..cb153be 100644 --- a/src/declarative/qml/qdeclarativevaluetype_p.h +++ b/src/declarative/qml/qdeclarativevaluetype_p.h @@ -53,7 +53,8 @@ // We mean it. // -#include "qdeclarativemetaproperty.h" +#include "qdeclarativeproperty.h" +#include "qdeclarativeproperty_p.h" #include <QtCore/qobject.h> #include <QtCore/qrect.h> @@ -70,7 +71,7 @@ class Q_DECLARATIVE_EXPORT QDeclarativeValueType : public QObject public: QDeclarativeValueType(QObject *parent = 0); virtual void read(QObject *, int) = 0; - virtual void write(QObject *, int, QDeclarativeMetaProperty::WriteFlags flags) = 0; + virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags flags) = 0; virtual QVariant value() = 0; virtual void setValue(QVariant) = 0; }; @@ -95,7 +96,7 @@ public: QDeclarativePointFValueType(QObject *parent = 0); virtual void read(QObject *, int); - virtual void write(QObject *, int, QDeclarativeMetaProperty::WriteFlags); + virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); virtual QVariant value(); virtual void setValue(QVariant value); @@ -117,7 +118,7 @@ public: QDeclarativePointValueType(QObject *parent = 0); virtual void read(QObject *, int); - virtual void write(QObject *, int, QDeclarativeMetaProperty::WriteFlags); + virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); virtual QVariant value(); virtual void setValue(QVariant value); @@ -139,7 +140,7 @@ public: QDeclarativeSizeFValueType(QObject *parent = 0); virtual void read(QObject *, int); - virtual void write(QObject *, int, QDeclarativeMetaProperty::WriteFlags); + virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); virtual QVariant value(); virtual void setValue(QVariant value); @@ -161,7 +162,7 @@ public: QDeclarativeSizeValueType(QObject *parent = 0); virtual void read(QObject *, int); - virtual void write(QObject *, int, QDeclarativeMetaProperty::WriteFlags); + virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); virtual QVariant value(); virtual void setValue(QVariant value); @@ -185,7 +186,7 @@ public: QDeclarativeRectFValueType(QObject *parent = 0); virtual void read(QObject *, int); - virtual void write(QObject *, int, QDeclarativeMetaProperty::WriteFlags); + virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); virtual QVariant value(); virtual void setValue(QVariant value); @@ -214,7 +215,7 @@ public: QDeclarativeRectValueType(QObject *parent = 0); virtual void read(QObject *, int); - virtual void write(QObject *, int, QDeclarativeMetaProperty::WriteFlags); + virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); virtual QVariant value(); virtual void setValue(QVariant value); @@ -242,7 +243,7 @@ public: QDeclarativeVector3DValueType(QObject *parent = 0); virtual void read(QObject *, int); - virtual void write(QObject *, int, QDeclarativeMetaProperty::WriteFlags); + virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); virtual QVariant value(); virtual void setValue(QVariant value); @@ -296,7 +297,7 @@ public: QDeclarativeEasingValueType(QObject *parent = 0); virtual void read(QObject *, int); - virtual void write(QObject *, int, QDeclarativeMetaProperty::WriteFlags); + virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); virtual QVariant value(); virtual void setValue(QVariant value); @@ -347,7 +348,7 @@ public: QDeclarativeFontValueType(QObject *parent = 0); virtual void read(QObject *, int); - virtual void write(QObject *, int, QDeclarativeMetaProperty::WriteFlags); + virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); virtual QVariant value(); virtual void setValue(QVariant value); diff --git a/src/declarative/qml/qdeclarativevme.cpp b/src/declarative/qml/qdeclarativevme.cpp index d1140a6..baa98bd 100644 --- a/src/declarative/qml/qdeclarativevme.cpp +++ b/src/declarative/qml/qdeclarativevme.cpp @@ -156,7 +156,7 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati QDeclarativeContextPrivate *cp = (QDeclarativeContextPrivate *)QObjectPrivate::get(ctxt); int status = -1; //for dbus - QDeclarativeMetaProperty::WriteFlags flags = QDeclarativeMetaProperty::BypassInterceptor; + QDeclarativePropertyPrivate::WriteFlags flags = QDeclarativePropertyPrivate::BypassInterceptor; for (int ii = start; !isError() && ii < (start + count); ++ii) { const QDeclarativeInstruction &instr = comp->bytecode.at(ii); @@ -515,8 +515,8 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati int sigIdx = instr.assignSignalObject.signal; const QByteArray &pr = datas.at(sigIdx); - QDeclarativeMetaProperty prop(target, QString::fromUtf8(pr)); - if (prop.type() & QDeclarativeMetaProperty::SignalProperty) { + QDeclarativeProperty prop(target, QString::fromUtf8(pr)); + if (prop.type() & QDeclarativeProperty::SignalProperty) { QMetaMethod method = QDeclarativeMetaType::defaultMethod(assign); if (method.signature() == 0) @@ -590,8 +590,8 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati QObject *context = stack.at(stack.count() - 1 - instr.assignBinding.context); - QDeclarativeMetaProperty mp = - QDeclarativeMetaPropertyPrivate::restore(datas.at(instr.assignBinding.property), target, ctxt); + QDeclarativeProperty mp = + QDeclarativePropertyPrivate::restore(datas.at(instr.assignBinding.property), target, ctxt); int coreIndex = mp.coreIndex(); @@ -631,8 +631,8 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati QDeclarativePropertyValueSource *vs = reinterpret_cast<QDeclarativePropertyValueSource *>(reinterpret_cast<char *>(obj) + instr.assignValueSource.castValue); QObject *target = stack.at(stack.count() - 1 - instr.assignValueSource.owner); - QDeclarativeMetaProperty prop = - QDeclarativeMetaPropertyPrivate::restore(datas.at(instr.assignValueSource.property), target, ctxt); + QDeclarativeProperty prop = + QDeclarativePropertyPrivate::restore(datas.at(instr.assignValueSource.property), target, ctxt); obj->setParent(target); vs->setTarget(prop); } @@ -643,12 +643,12 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati QObject *obj = stack.pop(); QDeclarativePropertyValueInterceptor *vi = reinterpret_cast<QDeclarativePropertyValueInterceptor *>(reinterpret_cast<char *>(obj) + instr.assignValueInterceptor.castValue); QObject *target = stack.at(stack.count() - 1 - instr.assignValueInterceptor.owner); - QDeclarativeMetaProperty prop = - QDeclarativeMetaPropertyPrivate::restore(datas.at(instr.assignValueInterceptor.property), target, ctxt); + QDeclarativeProperty prop = + QDeclarativePropertyPrivate::restore(datas.at(instr.assignValueInterceptor.property), target, ctxt); obj->setParent(target); vi->setTarget(prop); QDeclarativeVMEMetaObject *mo = static_cast<QDeclarativeVMEMetaObject *>((QMetaObject*)target->metaObject()); - mo->registerInterceptor(prop.coreIndex(), prop.valueTypeCoreIndex(), vi); + mo->registerInterceptor(prop.coreIndex(), QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), vi); } break; @@ -806,7 +806,8 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati QDeclarativeValueType *valueHandler = static_cast<QDeclarativeValueType *>(stack.pop()); QObject *target = stack.top(); - valueHandler->write(target, instr.fetchValue.property, QDeclarativeMetaProperty::BypassInterceptor); + valueHandler->write(target, instr.fetchValue.property, + QDeclarativePropertyPrivate::BypassInterceptor); } break; diff --git a/src/declarative/qml/qdeclarativevmemetaobject.cpp b/src/declarative/qml/qdeclarativevmemetaobject.cpp index 6811e13..d67c834 100644 --- a/src/declarative/qml/qdeclarativevmemetaobject.cpp +++ b/src/declarative/qml/qdeclarativevmemetaobject.cpp @@ -105,7 +105,7 @@ int QDeclarativeVMEMetaObject::metaCall(QMetaObject::Call c, int _id, void **a) int id = _id; if(c == QMetaObject::WriteProperty) { int flags = *reinterpret_cast<int*>(a[3]); - if (!(flags & QDeclarativeMetaProperty::BypassInterceptor) + if (!(flags & QDeclarativePropertyPrivate::BypassInterceptor) && !aInterceptors.isEmpty() && aInterceptors.testBit(id)) { QPair<int, QDeclarativePropertyValueInterceptor*> pair = interceptors.value(id); diff --git a/src/declarative/qml/qml.pri b/src/declarative/qml/qml.pri index 8a43cec..aa1a34b 100644 --- a/src/declarative/qml/qml.pri +++ b/src/declarative/qml/qml.pri @@ -6,7 +6,7 @@ SOURCES += \ $$PWD/qdeclarativeengine.cpp \ $$PWD/qdeclarativeexpression.cpp \ $$PWD/qdeclarativebinding.cpp \ - $$PWD/qdeclarativemetaproperty.cpp \ + $$PWD/qdeclarativeproperty.cpp \ $$PWD/qdeclarativecomponent.cpp \ $$PWD/qdeclarativecontext.cpp \ $$PWD/qdeclarativecustomparser.cpp \ @@ -62,7 +62,7 @@ HEADERS += \ $$PWD/qdeclarative.h \ $$PWD/qdeclarativebinding_p.h \ $$PWD/qdeclarativebinding_p_p.h \ - $$PWD/qdeclarativemetaproperty.h \ + $$PWD/qdeclarativeproperty.h \ $$PWD/qdeclarativecomponent.h \ $$PWD/qdeclarativecomponent_p.h \ $$PWD/qdeclarativecustomparser_p.h \ @@ -87,7 +87,7 @@ HEADERS += \ $$PWD/qdeclarativestringconverters_p.h \ $$PWD/qdeclarativeclassfactory_p.h \ $$PWD/qdeclarativeinfo.h \ - $$PWD/qdeclarativemetaproperty_p.h \ + $$PWD/qdeclarativeproperty_p.h \ $$PWD/qdeclarativecontext_p.h \ $$PWD/qdeclarativecompositetypedata_p.h \ $$PWD/qdeclarativecompositetypemanager_p.h \ diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index 9e777a0..264b88c 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -52,6 +52,7 @@ #include <qdeclarativestringconverters_p.h> #include <qdeclarativeglobal_p.h> #include <qdeclarativemetatype_p.h> +#include <qdeclarativeproperty_p.h> #include <qvariant.h> #include <qcolor.h> @@ -144,7 +145,7 @@ void QDeclarativeAbstractAnimationPrivate::commence() Q_Q(QDeclarativeAbstractAnimation); QDeclarativeStateActions actions; - QDeclarativeMetaProperties properties; + QDeclarativeProperties properties; q->transition(actions, properties, QDeclarativeAbstractAnimation::Forward); q->qtAnimation()->start(); @@ -154,15 +155,15 @@ void QDeclarativeAbstractAnimationPrivate::commence() } } -QDeclarativeMetaProperty QDeclarativeAbstractAnimationPrivate::createProperty(QObject *obj, const QString &str, QObject *infoObj) +QDeclarativeProperty QDeclarativeAbstractAnimationPrivate::createProperty(QObject *obj, const QString &str, QObject *infoObj) { - QDeclarativeMetaProperty prop(obj, str, qmlContext(infoObj)); + QDeclarativeProperty prop(obj, str, qmlContext(infoObj)); if (!prop.isValid()) { qmlInfo(infoObj) << QDeclarativeAbstractAnimation::tr("Cannot animate non-existent property \"%1\"").arg(str); - return QDeclarativeMetaProperty(); + return QDeclarativeProperty(); } else if (!prop.isWritable()) { qmlInfo(infoObj) << QDeclarativeAbstractAnimation::tr("Cannot animate read-only property \"%1\"").arg(str); - return QDeclarativeMetaProperty(); + return QDeclarativeProperty(); } return prop; } @@ -465,7 +466,7 @@ void QDeclarativeAbstractAnimation::complete() } } -void QDeclarativeAbstractAnimation::setTarget(const QDeclarativeMetaProperty &p) +void QDeclarativeAbstractAnimation::setTarget(const QDeclarativeProperty &p) { Q_D(QDeclarativeAbstractAnimation); d->defaultProperty = p; @@ -479,7 +480,7 @@ void QDeclarativeAbstractAnimation::setTarget(const QDeclarativeMetaProperty &p) so this function allows us to do the same thing as setTarget without that assumption */ -void QDeclarativeAbstractAnimation::setDefaultTarget(const QDeclarativeMetaProperty &p) +void QDeclarativeAbstractAnimation::setDefaultTarget(const QDeclarativeProperty &p) { Q_D(QDeclarativeAbstractAnimation); d->defaultProperty = p; @@ -497,7 +498,7 @@ void QDeclarativeAbstractAnimation::setDisableUserControl() } void QDeclarativeAbstractAnimation::transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction) { Q_UNUSED(actions); @@ -728,7 +729,7 @@ void QDeclarativeScriptActionPrivate::execute() } void QDeclarativeScriptAction::transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction) { Q_D(QDeclarativeScriptAction); @@ -911,7 +912,7 @@ QAbstractAnimation *QDeclarativePropertyAction::qtAnimation() } void QDeclarativePropertyAction::transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction) { Q_D(QDeclarativePropertyAction); @@ -924,7 +925,7 @@ void QDeclarativePropertyAction::transition(QDeclarativeStateActions &actions, { for (int ii = 0; ii < actions.count(); ++ii) { const QDeclarativeAction &action = actions.at(ii); - action.property.write(action.toValue, QDeclarativeMetaProperty::BypassInterceptor | QDeclarativeMetaProperty::DontRemoveBinding); + QDeclarativePropertyPrivate::write(action.property, action.toValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); } } }; @@ -1132,7 +1133,7 @@ QAbstractAnimation *QDeclarativeParentAction::qtAnimation() } void QDeclarativeParentAction::transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction) { Q_D(QDeclarativeParentAction); @@ -1581,7 +1582,7 @@ QAbstractAnimation *QDeclarativeSequentialAnimation::qtAnimation() } void QDeclarativeSequentialAnimation::transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction) { Q_D(QDeclarativeAnimationGroup); @@ -1646,7 +1647,7 @@ QAbstractAnimation *QDeclarativeParallelAnimation::qtAnimation() } void QDeclarativeParallelAnimation::transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction) { Q_D(QDeclarativeAnimationGroup); @@ -2230,7 +2231,7 @@ struct PropertyUpdater : public QDeclarativeTimeLineValue QDeclarativeAction &action = actions[ii]; if (v == 1.) - action.property.write(action.toValue, QDeclarativeMetaProperty::BypassInterceptor | QDeclarativeMetaProperty::DontRemoveBinding); + QDeclarativePropertyPrivate::write(action.property, action.toValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); else { if (!fromSourced && !fromDefined) { action.fromValue = action.property.read(); @@ -2245,7 +2246,7 @@ struct PropertyUpdater : public QDeclarativeTimeLineValue } } if (interpolator) - action.property.write(interpolator(action.fromValue.constData(), action.toValue.constData(), v), QDeclarativeMetaProperty::BypassInterceptor | QDeclarativeMetaProperty::DontRemoveBinding); + QDeclarativePropertyPrivate::write(action.property, interpolator(action.fromValue.constData(), action.toValue.constData(), v), QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); } if (deleted) return; @@ -2256,7 +2257,7 @@ struct PropertyUpdater : public QDeclarativeTimeLineValue }; void QDeclarativePropertyAnimation::transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction) { Q_D(QDeclarativePropertyAnimation); diff --git a/src/declarative/util/qdeclarativeanimation_p.h b/src/declarative/util/qdeclarativeanimation_p.h index 02dacb3..53afbb5 100644 --- a/src/declarative/util/qdeclarativeanimation_p.h +++ b/src/declarative/util/qdeclarativeanimation_p.h @@ -95,7 +95,7 @@ public: QDeclarativeAnimationGroup *group() const; void setGroup(QDeclarativeAnimationGroup *); - void setDefaultTarget(const QDeclarativeMetaProperty &); + void setDefaultTarget(const QDeclarativeProperty &); void setDisableUserControl(); void classBegin(); @@ -123,7 +123,7 @@ protected: public: enum TransitionDirection { Forward, Backward }; virtual void transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction); virtual QAbstractAnimation *qtAnimation() = 0; @@ -131,7 +131,7 @@ private Q_SLOTS: void timelineComplete(); private: - virtual void setTarget(const QDeclarativeMetaProperty &); + virtual void setTarget(const QDeclarativeProperty &); }; class QDeclarativePauseAnimationPrivate; @@ -177,7 +177,7 @@ public: protected: virtual void transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction); virtual QAbstractAnimation *qtAnimation(); }; @@ -221,7 +221,7 @@ Q_SIGNALS: protected: virtual void transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction); virtual QAbstractAnimation *qtAnimation(); }; @@ -248,7 +248,7 @@ public: protected: virtual void transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction); virtual QAbstractAnimation *qtAnimation(); }; @@ -300,7 +300,7 @@ public: protected: QDeclarativePropertyAnimation(QDeclarativePropertyAnimationPrivate &dd, QObject *parent); virtual void transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction); virtual QAbstractAnimation *qtAnimation(); @@ -426,7 +426,7 @@ public: protected: virtual void transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction); virtual QAbstractAnimation *qtAnimation(); }; @@ -442,7 +442,7 @@ public: protected: virtual void transition(QDeclarativeStateActions &actions, - QDeclarativeMetaProperties &modified, + QDeclarativeProperties &modified, TransitionDirection direction); virtual QAbstractAnimation *qtAnimation(); }; diff --git a/src/declarative/util/qdeclarativeanimation_p_p.h b/src/declarative/util/qdeclarativeanimation_p_p.h index 65c9807..fc4e6e6 100644 --- a/src/declarative/util/qdeclarativeanimation_p_p.h +++ b/src/declarative/util/qdeclarativeanimation_p_p.h @@ -226,11 +226,11 @@ public: void commence(); - QDeclarativeMetaProperty defaultProperty; + QDeclarativeProperty defaultProperty; QDeclarativeAnimationGroup *group; - static QDeclarativeMetaProperty createProperty(QObject *obj, const QString &str, QObject *infoObj); + static QDeclarativeProperty createProperty(QObject *obj, const QString &str, QObject *infoObj); }; class QDeclarativePauseAnimationPrivate : public QDeclarativeAbstractAnimationPrivate diff --git a/src/declarative/util/qdeclarativebehavior.cpp b/src/declarative/util/qdeclarativebehavior.cpp index 303018d..e0189dc 100644 --- a/src/declarative/util/qdeclarativebehavior.cpp +++ b/src/declarative/util/qdeclarativebehavior.cpp @@ -46,6 +46,7 @@ #include <qdeclarativecontext.h> #include <qdeclarativeinfo.h> +#include <qdeclarativeproperty_p.h> #include <QtCore/qparallelanimationgroup.h> @@ -61,7 +62,7 @@ class QDeclarativeBehaviorPrivate : public QObjectPrivate public: QDeclarativeBehaviorPrivate() : animation(0), enabled(true) {} - QDeclarativeMetaProperty property; + QDeclarativeProperty property; QVariant currentValue; QDeclarativeAbstractAnimation *animation; bool enabled; @@ -156,7 +157,7 @@ void QDeclarativeBehavior::write(const QVariant &value) { Q_D(QDeclarativeBehavior); if (!d->animation || !d->enabled) { - d->property.write(value, QDeclarativeMetaProperty::BypassInterceptor | QDeclarativeMetaProperty::DontRemoveBinding); + QDeclarativePropertyPrivate::write(d->property, value, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); return; } @@ -171,15 +172,15 @@ void QDeclarativeBehavior::write(const QVariant &value) action.toValue = value; actions << action; - QList<QDeclarativeMetaProperty> after; + QList<QDeclarativeProperty> after; if (d->animation) d->animation->transition(actions, after, QDeclarativeAbstractAnimation::Forward); d->animation->qtAnimation()->start(); if (!after.contains(d->property)) - d->property.write(value, QDeclarativeMetaProperty::BypassInterceptor | QDeclarativeMetaProperty::DontRemoveBinding); + QDeclarativePropertyPrivate::write(d->property, value, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); } -void QDeclarativeBehavior::setTarget(const QDeclarativeMetaProperty &property) +void QDeclarativeBehavior::setTarget(const QDeclarativeProperty &property) { Q_D(QDeclarativeBehavior); d->property = property; diff --git a/src/declarative/util/qdeclarativebehavior_p.h b/src/declarative/util/qdeclarativebehavior_p.h index fbc19f8..a633b55 100644 --- a/src/declarative/util/qdeclarativebehavior_p.h +++ b/src/declarative/util/qdeclarativebehavior_p.h @@ -70,7 +70,7 @@ public: QDeclarativeBehavior(QObject *parent=0); ~QDeclarativeBehavior(); - virtual void setTarget(const QDeclarativeMetaProperty &); + virtual void setTarget(const QDeclarativeProperty &); virtual void write(const QVariant &value); QDeclarativeAbstractAnimation *animation(); diff --git a/src/declarative/util/qdeclarativebind.cpp b/src/declarative/util/qdeclarativebind.cpp index d75e98d..e95a03e 100644 --- a/src/declarative/util/qdeclarativebind.cpp +++ b/src/declarative/util/qdeclarativebind.cpp @@ -45,7 +45,7 @@ #include <qdeclarativeengine.h> #include <qdeclarativecontext.h> -#include <qdeclarativemetaproperty.h> +#include <qdeclarativeproperty.h> #include <QtCore/qfile.h> #include <QtCore/qdebug.h> @@ -196,7 +196,7 @@ void QDeclarativeBind::eval() if (!d->obj || d->value.isNull || !d->when || !d->componentComplete) return; - QDeclarativeMetaProperty prop(d->obj, d->prop); + QDeclarativeProperty prop(d->obj, d->prop); prop.write(d->value.value); } diff --git a/src/declarative/util/qdeclarativeconnection.cpp b/src/declarative/util/qdeclarativeconnection.cpp index a7cfc79..e9ae74b 100644 --- a/src/declarative/util/qdeclarativeconnection.cpp +++ b/src/declarative/util/qdeclarativeconnection.cpp @@ -105,7 +105,7 @@ public: \endqml More generally, the Connection object can be a child of some other object than - the sender of the signal, and the script is the default attribute: + the sender of the signal: \qml MouseArea { @@ -226,8 +226,6 @@ void QDeclarativeConnection::componentComplete() /*! \qmlproperty script Connection::script This property holds the JavaScript executed whenever the signal is sent. - - This is the default attribute of Connection. */ QDeclarativeScriptString QDeclarativeConnection::script() const { diff --git a/src/declarative/util/qdeclarativeeasefollow.cpp b/src/declarative/util/qdeclarativeeasefollow.cpp index 0430a0b..232dc90 100644 --- a/src/declarative/util/qdeclarativeeasefollow.cpp +++ b/src/declarative/util/qdeclarativeeasefollow.cpp @@ -43,7 +43,7 @@ #include "qdeclarativeanimation_p_p.h" -#include <qdeclarativemetaproperty.h> +#include <qdeclarativeproperty.h> #include <QtCore/qdebug.h> @@ -77,7 +77,7 @@ public: qreal trackVelocity; - QDeclarativeMetaProperty target; + QDeclarativeProperty target; int clockOffset; int lastTick; @@ -500,7 +500,7 @@ void QDeclarativeEaseFollow::setEnabled(bool enabled) emit enabledChanged(); } -void QDeclarativeEaseFollow::setTarget(const QDeclarativeMetaProperty &t) +void QDeclarativeEaseFollow::setTarget(const QDeclarativeProperty &t) { Q_D(QDeclarativeEaseFollow); d->target = t; diff --git a/src/declarative/util/qdeclarativeeasefollow_p.h b/src/declarative/util/qdeclarativeeasefollow_p.h index 6d14eb5..83d1eff 100644 --- a/src/declarative/util/qdeclarativeeasefollow_p.h +++ b/src/declarative/util/qdeclarativeeasefollow_p.h @@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE QT_MODULE(Declarative) -class QDeclarativeMetaProperty; +class QDeclarativeProperty; class QDeclarativeEaseFollowPrivate; class Q_DECLARATIVE_EXPORT QDeclarativeEaseFollow : public QObject, public QDeclarativePropertyValueSource @@ -94,7 +94,7 @@ public: qreal maximumEasingTime() const; void setMaximumEasingTime(qreal); - virtual void setTarget(const QDeclarativeMetaProperty &); + virtual void setTarget(const QDeclarativeProperty &); Q_SIGNALS: void sourceChanged(); diff --git a/src/declarative/util/qdeclarativepropertychanges.cpp b/src/declarative/util/qdeclarativepropertychanges.cpp index 6c2e256..9c2b1e6 100644 --- a/src/declarative/util/qdeclarativepropertychanges.cpp +++ b/src/declarative/util/qdeclarativepropertychanges.cpp @@ -50,7 +50,7 @@ #include <qdeclarativebinding_p.h> #include <qdeclarativecontext.h> #include <qdeclarativeguard_p.h> -#include <qdeclarativemetaproperty_p.h> +#include <qdeclarativeproperty_p.h> #include <QtCore/qdebug.h> @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass PropertyChanges QDeclarativePropertyChanges - \since 4.7 + \since 4.7 \brief The PropertyChanges element describes new property values for a state. PropertyChanges provides a state change that modifies the properties of an item. @@ -98,6 +98,33 @@ QT_BEGIN_NAMESPACE } \endqml + You can reset a property in a state change by assigning \c undefined. In the following + example we reset \c theText's width when we enter state1. This will give the text its + natural width (which is the whole string on one line). + + \qml + import Qt 4.6 + + Rectangle { + width: 640 + height: 480 + Text { + id: theText + width: 50 + wrap: true + text: "a text string that is longer than 50 pixels" + } + + states: State { + name: "state1" + PropertyChanges { + target: theText + width: undefined + } + } + } + \endqml + Changes to an Item's parent or anchors should be done using the associated change elements (ParentChange and AnchorChanges, respectively) rather than PropertyChanges. @@ -126,19 +153,19 @@ public: virtual QString typeName() const { return QLatin1String("ReplaceSignalHandler"); } - QDeclarativeMetaProperty property; + QDeclarativeProperty property; QDeclarativeExpression *expression; QDeclarativeExpression *reverseExpression; QDeclarativeExpression *rewindExpression; QDeclarativeGuard<QDeclarativeExpression> ownedExpression; virtual void execute() { - ownedExpression = QDeclarativeMetaPropertyPrivate::setSignalExpression(property, expression); + ownedExpression = QDeclarativePropertyPrivate::setSignalExpression(property, expression); } virtual bool isReversable() { return true; } virtual void reverse() { - ownedExpression = QDeclarativeMetaPropertyPrivate::setSignalExpression(property, reverseExpression); + ownedExpression = QDeclarativePropertyPrivate::setSignalExpression(property, reverseExpression); } virtual void saveOriginals() { @@ -147,10 +174,10 @@ public: } virtual void rewind() { - ownedExpression = QDeclarativeMetaPropertyPrivate::setSignalExpression(property, rewindExpression); + ownedExpression = QDeclarativePropertyPrivate::setSignalExpression(property, rewindExpression); } virtual void saveCurrentValues() { - rewindExpression = QDeclarativeMetaPropertyPrivate::signalExpression(property); + rewindExpression = QDeclarativePropertyPrivate::signalExpression(property); } virtual bool override(QDeclarativeActionEvent*other) { @@ -185,7 +212,7 @@ public: QList<QPair<QByteArray, QDeclarativeExpression *> > expressions; QList<QDeclarativeReplaceSignalHandler*> signalReplacements; - QDeclarativeMetaProperty property(const QByteArray &); + QDeclarativeProperty property(const QByteArray &); }; void @@ -269,8 +296,8 @@ void QDeclarativePropertyChangesPrivate::decode() ds >> isScript; ds >> data; - QDeclarativeMetaProperty prop = property(name); //### better way to check for signal property? - if (prop.type() & QDeclarativeMetaProperty::SignalProperty) { + QDeclarativeProperty prop = property(name); //### better way to check for signal property? + if (prop.type() & QDeclarativeProperty::SignalProperty) { QDeclarativeExpression *expression = new QDeclarativeExpression(qmlContext(q), data.toString(), object); QDeclarativeReplaceSignalHandler *handler = new QDeclarativeReplaceSignalHandler; handler->property = prop; @@ -344,17 +371,17 @@ void QDeclarativePropertyChanges::setRestoreEntryValues(bool v) d->restore = v; } -QDeclarativeMetaProperty +QDeclarativeProperty QDeclarativePropertyChangesPrivate::property(const QByteArray &property) { Q_Q(QDeclarativePropertyChanges); - QDeclarativeMetaProperty prop(object, QString::fromUtf8(property)); + QDeclarativeProperty prop(object, QString::fromUtf8(property)); if (!prop.isValid()) { qmlInfo(q) << QDeclarativePropertyChanges::tr("Cannot assign to non-existent property \"%1\"").arg(QString::fromUtf8(property)); - return QDeclarativeMetaProperty(); - } else if (!(prop.type() & QDeclarativeMetaProperty::SignalProperty) && !prop.isWritable()) { + return QDeclarativeProperty(); + } else if (!(prop.type() & QDeclarativeProperty::SignalProperty) && !prop.isWritable()) { qmlInfo(q) << QDeclarativePropertyChanges::tr("Cannot assign to read-only property \"%1\"").arg(QString::fromUtf8(property)); - return QDeclarativeMetaProperty(); + return QDeclarativeProperty(); } return prop; } @@ -399,7 +426,7 @@ QDeclarativePropertyChanges::ActionList QDeclarativePropertyChanges::actions() for (int ii = 0; ii < d->expressions.count(); ++ii) { QByteArray property = d->expressions.at(ii).first; - QDeclarativeMetaProperty prop = d->property(property); + QDeclarativeProperty prop = d->property(property); if (prop.isValid()) { QDeclarativeAction a; diff --git a/src/declarative/util/qdeclarativespringfollow.cpp b/src/declarative/util/qdeclarativespringfollow.cpp index b26a7e2..012e6a0 100644 --- a/src/declarative/util/qdeclarativespringfollow.cpp +++ b/src/declarative/util/qdeclarativespringfollow.cpp @@ -63,7 +63,7 @@ public: , mass(1.0), spring(0.), damping(0.), velocity(0), epsilon(0.01) , modulus(0.0), useMass(false), haveModulus(false), enabled(true), mode(Track), clock(this) {} - QDeclarativeMetaProperty property; + QDeclarativeProperty property; qreal currentValue; qreal sourceValue; qreal maxVelocity; @@ -254,7 +254,7 @@ QDeclarativeSpringFollow::~QDeclarativeSpringFollow() { } -void QDeclarativeSpringFollow::setTarget(const QDeclarativeMetaProperty &property) +void QDeclarativeSpringFollow::setTarget(const QDeclarativeProperty &property) { Q_D(QDeclarativeSpringFollow); d->property = property; diff --git a/src/declarative/util/qdeclarativespringfollow_p.h b/src/declarative/util/qdeclarativespringfollow_p.h index 63d38a4..2ac0d82 100644 --- a/src/declarative/util/qdeclarativespringfollow_p.h +++ b/src/declarative/util/qdeclarativespringfollow_p.h @@ -74,7 +74,7 @@ public: QDeclarativeSpringFollow(QObject *parent=0); ~QDeclarativeSpringFollow(); - virtual void setTarget(const QDeclarativeMetaProperty &); + virtual void setTarget(const QDeclarativeProperty &); qreal sourceValue() const; void setSourceValue(qreal value); diff --git a/src/declarative/util/qdeclarativestate.cpp b/src/declarative/util/qdeclarativestate.cpp index 3b06e33..1d70d33 100644 --- a/src/declarative/util/qdeclarativestate.cpp +++ b/src/declarative/util/qdeclarativestate.cpp @@ -334,7 +334,7 @@ void QDeclarativeState::cancel() void QDeclarativeAction::deleteFromBinding() { if (fromBinding) { - QDeclarativeMetaPropertyPrivate::setBinding(property, 0); + QDeclarativePropertyPrivate::setBinding(property, 0); fromBinding->destroy(); fromBinding = 0; } @@ -388,7 +388,7 @@ void QDeclarativeState::apply(QDeclarativeStateGroup *group, QDeclarativeTransit else if (action.event->isRewindable()) action.event->saveCurrentValues(); } else { - action.fromBinding = QDeclarativeMetaPropertyPrivate::binding(action.property); + action.fromBinding = QDeclarativePropertyPrivate::binding(action.property); for (jj = 0; jj < d->revertList.count(); ++jj) { if (d->revertList.at(jj).property == action.property) { @@ -437,7 +437,7 @@ void QDeclarativeState::apply(QDeclarativeStateGroup *group, QDeclarativeTransit if (!found) { QVariant cur = d->revertList.at(ii).property.read(); QDeclarativeAbstractBinding *delBinding = - QDeclarativeMetaPropertyPrivate::setBinding(d->revertList.at(ii).property, 0); + QDeclarativePropertyPrivate::setBinding(d->revertList.at(ii).property, 0); if (delBinding) delBinding->destroy(); diff --git a/src/declarative/util/qdeclarativestate_p.h b/src/declarative/util/qdeclarativestate_p.h index 4a62481..abdbec5 100644 --- a/src/declarative/util/qdeclarativestate_p.h +++ b/src/declarative/util/qdeclarativestate_p.h @@ -43,7 +43,7 @@ #define QDECLARATIVESTATE_H #include <qdeclarative.h> -#include <qdeclarativemetaproperty.h> +#include <qdeclarativeproperty.h> #include <QtCore/qobject.h> QT_BEGIN_HEADER @@ -65,7 +65,7 @@ public: bool reverseEvent:1; bool deletableToBinding:1; - QDeclarativeMetaProperty property; + QDeclarativeProperty property; QVariant fromValue; QVariant toValue; diff --git a/src/declarative/util/qdeclarativestate_p_p.h b/src/declarative/util/qdeclarativestate_p_p.h index 6b32f04..6f52219 100644 --- a/src/declarative/util/qdeclarativestate_p_p.h +++ b/src/declarative/util/qdeclarativestate_p_p.h @@ -58,7 +58,7 @@ #include "qdeclarativeanimation_p_p.h" #include "qdeclarativetransitionmanager_p_p.h" -#include <qdeclarativemetaproperty_p.h> +#include <qdeclarativeproperty_p.h> #include <qdeclarativeguard_p.h> #include <private/qobject_p.h> @@ -77,7 +77,7 @@ public: event = a.event; if (state == StartState) { value = a.fromValue; - binding = QDeclarativeMetaPropertyPrivate::binding(property); + binding = QDeclarativePropertyPrivate::binding(property); reverseEvent = true; } else { value = a.toValue; @@ -86,7 +86,7 @@ public: } } - QDeclarativeMetaProperty property; + QDeclarativeProperty property; QVariant value; QDeclarativeAbstractBinding *binding; QObject *specifiedObject; @@ -139,7 +139,7 @@ public: QDeclarativeTransitionManager transitionManager; SimpleActionList revertList; - QList<QDeclarativeMetaProperty> reverting; + QList<QDeclarativeProperty> reverting; QString extends; mutable bool inState; QDeclarativeStateGroup *group; diff --git a/src/declarative/util/qdeclarativestateoperations.cpp b/src/declarative/util/qdeclarativestateoperations.cpp index 6001a84..9df8658 100644 --- a/src/declarative/util/qdeclarativestateoperations.cpp +++ b/src/declarative/util/qdeclarativestateoperations.cpp @@ -80,7 +80,7 @@ void QDeclarativeParentChangePrivate::doChange(QDeclarativeItem *targetParent, Q //### for backwards direction, can we just restore original x, y, scale, rotation Q_Q(QDeclarativeParentChange); bool ok; - const QTransform &transform = target->itemTransform(targetParent, &ok); + const QTransform &transform = target->parentItem()->itemTransform(targetParent, &ok); if (transform.type() >= QTransform::TxShear || !ok) { qmlInfo(q) << QDeclarativeParentChange::tr("Unable to preserve appearance under complex transform"); ok = false; @@ -111,8 +111,9 @@ void QDeclarativeParentChangePrivate::doChange(QDeclarativeItem *targetParent, Q } } - qreal xt = transform.dx(); - qreal yt = transform.dy(); + const QPointF &point = transform.map(QPointF(target->x(),target->y())); + qreal x = point.x(); + qreal y = point.y(); if (ok && target->transformOrigin() != QDeclarativeItem::TopLeft) { qreal tempxt = target->transformOriginPoint().x(); qreal tempyt = target->transformOriginPoint().y(); @@ -121,18 +122,18 @@ void QDeclarativeParentChangePrivate::doChange(QDeclarativeItem *targetParent, Q t.rotate(rotation); t.scale(scale, scale); t.translate(tempxt, tempyt); - QPointF offset = t.map(QPointF(0,0)); - xt += offset.x(); - yt += offset.y(); + const QPointF &offset = t.map(QPointF(0,0)); + x += offset.x(); + y += offset.y(); } target->setParentItem(targetParent); if (ok) { - //qDebug() << xt << yt << rotation << scale; - target->setX(xt); - target->setY(yt); - target->setRotation(rotation); - target->setScale(scale); + //qDebug() << x << y << rotation << scale; + target->setX(x); + target->setY(y); + target->setRotation(target->rotation() + rotation); + target->setScale(target->scale() * scale); } } else if (target) { target->setParentItem(targetParent); @@ -660,19 +661,19 @@ QList<QDeclarativeAction> QDeclarativeAnchorChanges::extraActions() if (d->target) { QDeclarativeAction a; a.fromValue = d->fromX; - a.property = QDeclarativeMetaProperty(d->target, QLatin1String("x")); + a.property = QDeclarativeProperty(d->target, QLatin1String("x")); extra << a; a.fromValue = d->fromY; - a.property = QDeclarativeMetaProperty(d->target, QLatin1String("y")); + a.property = QDeclarativeProperty(d->target, QLatin1String("y")); extra << a; a.fromValue = d->fromWidth; - a.property = QDeclarativeMetaProperty(d->target, QLatin1String("width")); + a.property = QDeclarativeProperty(d->target, QLatin1String("width")); extra << a; a.fromValue = d->fromHeight; - a.property = QDeclarativeMetaProperty(d->target, QLatin1String("height")); + a.property = QDeclarativeProperty(d->target, QLatin1String("height")); extra << a; } diff --git a/src/declarative/util/qdeclarativetransition.cpp b/src/declarative/util/qdeclarativetransition.cpp index 3482814..ac07b10 100644 --- a/src/declarative/util/qdeclarativetransition.cpp +++ b/src/declarative/util/qdeclarativetransition.cpp @@ -148,7 +148,7 @@ void QDeclarativeTransition::setReversed(bool r) } void QDeclarativeTransition::prepare(QDeclarativeStateOperation::ActionList &actions, - QList<QDeclarativeMetaProperty> &after, + QList<QDeclarativeProperty> &after, QDeclarativeTransitionManager *endState) { Q_D(QDeclarativeTransition); diff --git a/src/declarative/util/qdeclarativetransition_p.h b/src/declarative/util/qdeclarativetransition_p.h index 96448b8..861111a 100644 --- a/src/declarative/util/qdeclarativetransition_p.h +++ b/src/declarative/util/qdeclarativetransition_p.h @@ -85,7 +85,7 @@ public: QDeclarativeListProperty<QDeclarativeAbstractAnimation> animations(); void prepare(QDeclarativeStateOperation::ActionList &actions, - QList<QDeclarativeMetaProperty> &after, + QList<QDeclarativeProperty> &after, QDeclarativeTransitionManager *end); void setReversed(bool r); diff --git a/src/declarative/util/qdeclarativetransitionmanager.cpp b/src/declarative/util/qdeclarativetransitionmanager.cpp index 9fa1488..e1143fa 100644 --- a/src/declarative/util/qdeclarativetransitionmanager.cpp +++ b/src/declarative/util/qdeclarativetransitionmanager.cpp @@ -45,6 +45,7 @@ #include <qdeclarativebinding_p.h> #include <qdeclarativeglobal_p.h> +#include <qdeclarativeproperty_p.h> QT_BEGIN_NAMESPACE @@ -84,7 +85,7 @@ void QDeclarativeTransitionManager::complete() d->applyBindings(); for (int ii = 0; ii < d->completeList.count(); ++ii) { - const QDeclarativeMetaProperty &prop = d->completeList.at(ii).property; + const QDeclarativeProperty &prop = d->completeList.at(ii).property; prop.write(d->completeList.at(ii).value); } @@ -98,7 +99,7 @@ void QDeclarativeTransitionManagerPrivate::applyBindings() { foreach(const QDeclarativeAction &action, bindingsList) { if (action.toBinding) { - QDeclarativeMetaPropertyPrivate::setBinding(action.property, action.toBinding); + QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding); } else if (action.event) { if (action.reverseEvent) action.event->reverse(); @@ -122,7 +123,7 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> & if (action.toBinding) d->bindingsList << action; if (action.fromBinding) - QDeclarativeMetaPropertyPrivate::setBinding(action.property, 0); // Disable current binding + QDeclarativePropertyPrivate::setBinding(action.property, 0); // Disable current binding if (action.event && action.event->changesBindings()) { //### assume isReversable()? d->bindingsList << action; if (action.reverseEvent) @@ -149,9 +150,9 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> & for (int ii = 0; ii < applyList.size(); ++ii) { const QDeclarativeAction &action = applyList.at(ii); if (action.toBinding) { - QDeclarativeMetaPropertyPrivate::setBinding(action.property, action.toBinding, QDeclarativeMetaProperty::BypassInterceptor | QDeclarativeMetaProperty::DontRemoveBinding); + QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); } else if (!action.event) { - action.property.write(action.toValue, QDeclarativeMetaProperty::BypassInterceptor | QDeclarativeMetaProperty::DontRemoveBinding); + QDeclarativePropertyPrivate::write(action.property, action.toValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); } else if (action.event->isReversable()) { if (action.reverseEvent) action.event->reverse(); @@ -166,7 +167,7 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> & QDeclarativeAction *action = &applyList[ii]; if (action->event) continue; - const QDeclarativeMetaProperty &prop = action->property; + const QDeclarativeProperty &prop = action->property; if (action->toBinding || !action->toValue.isValid()) { //### is this always right (used for exta actions) action->toValue = prop.read(); } @@ -190,14 +191,14 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> & } if (action.toBinding) - QDeclarativeMetaPropertyPrivate::setBinding(action.property, 0); // Make sure this is disabled during the transition + QDeclarativePropertyPrivate::setBinding(action.property, 0); // Make sure this is disabled during the transition - action.property.write(action.fromValue, QDeclarativeMetaProperty::BypassInterceptor | QDeclarativeMetaProperty::DontRemoveBinding); + QDeclarativePropertyPrivate::write(action.property, action.fromValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); } } if (transition) { - QList<QDeclarativeMetaProperty> touched; + QList<QDeclarativeProperty> touched; d->transition = transition; d->transition->prepare(applyList, touched, this); @@ -266,7 +267,7 @@ void QDeclarativeTransitionManager::cancel() for(int i = 0; i < d->bindingsList.count(); ++i) { QDeclarativeAction action = d->bindingsList[i]; if (action.toBinding && action.deletableToBinding) { - QDeclarativeMetaPropertyPrivate::setBinding(action.property, 0); + QDeclarativePropertyPrivate::setBinding(action.property, 0); action.toBinding->destroy(); action.toBinding = 0; action.deletableToBinding = false; diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h index a059a77..4c4bfaf 100644 --- a/src/gui/graphicsview/qgraphicsitem_p.h +++ b/src/gui/graphicsview/qgraphicsitem_p.h @@ -156,8 +156,8 @@ public: needSortChildren(0), allChildrenDirty(0), fullUpdatePending(0), - flags(0), dirtyChildrenBoundingRect(1), + flags(0), paintedViewBoundingRectsNeedRepaint(0), dirtySceneTransform(1), geometryChanged(1), @@ -474,11 +474,11 @@ public: quint32 inSetPosHelper : 1; quint32 needSortChildren : 1; quint32 allChildrenDirty : 1; + quint32 fullUpdatePending : 1; + quint32 dirtyChildrenBoundingRect : 1; // Packed 32 bits - quint32 fullUpdatePending : 1; quint32 flags : 17; - quint32 dirtyChildrenBoundingRect : 1; quint32 paintedViewBoundingRectsNeedRepaint : 1; quint32 dirtySceneTransform : 1; quint32 geometryChanged : 1; @@ -492,10 +492,10 @@ public: quint32 sceneTransformTranslateOnly : 1; quint32 notifyBoundingRectChanged : 1; quint32 notifyInvalidated : 1; - - // New 32 bits quint32 mouseSetsFocus : 1; quint32 explicitActivate : 1; + + // New 32 bits quint32 wantsActive : 1; quint32 holesInSiblingIndex : 1; quint32 sequentialOrdering : 1; @@ -503,6 +503,7 @@ public: quint32 scenePosDescendants : 1; quint32 pendingPolish : 1; quint32 mayHaveChildWithGraphicsEffect : 1; + quint32 padding : 25; // Optional stacking order int globalStackingOrder; diff --git a/src/gui/image/qpaintengine_pic.cpp b/src/gui/image/qpaintengine_pic.cpp index 1aeb524..029154b 100644 --- a/src/gui/image/qpaintengine_pic.cpp +++ b/src/gui/image/qpaintengine_pic.cpp @@ -486,8 +486,11 @@ void QPicturePaintEngine::drawTextItem(const QPointF &p , const QTextItem &ti) qDebug() << " -> drawTextItem():" << p << ti.text(); #endif + const QTextItemInt &si = static_cast<const QTextItemInt &>(ti); + if (si.chars == 0) + QPaintEngine::drawTextItem(p, ti); // Draw as path + if (d->pic_d->formatMajor >= 9) { - const QTextItemInt &si = static_cast<const QTextItemInt &>(ti); int pos; SERIALIZE_CMD(QPicturePrivate::PdcDrawTextItem); QFont fnt = ti.font(); diff --git a/src/gui/itemviews/qheaderview.cpp b/src/gui/itemviews/qheaderview.cpp index 1c26e51..5128b64 100644 --- a/src/gui/itemviews/qheaderview.cpp +++ b/src/gui/itemviews/qheaderview.cpp @@ -2221,7 +2221,8 @@ void QHeaderView::mouseMoveEvent(QMouseEvent *e) return; } case QHeaderViewPrivate::MoveSection: { - if (qAbs(pos - d->firstPos) >= QApplication::startDragDistance()) { + if (qAbs(pos - d->firstPos) >= QApplication::startDragDistance() + || !d->sectionIndicator->isHidden()) { int indicatorCenter = (d->orientation == Qt::Horizontal ? d->sectionIndicator->width() : d->sectionIndicator->height()) / 2; @@ -2233,12 +2234,6 @@ void QHeaderView::mouseMoveEvent(QMouseEvent *e) return; d->target = d->logicalIndex(visual); d->updateSectionIndicator(d->section, pos); - } else { - int visual = visualIndexAt(d->firstPos); - if (visual == -1) - return; - d->target = d->logicalIndex(visual); - d->updateSectionIndicator(d->section, d->firstPos); } return; } diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp index e73013c..c63a07b 100644 --- a/src/gui/itemviews/qsortfilterproxymodel.cpp +++ b/src/gui/itemviews/qsortfilterproxymodel.cpp @@ -563,7 +563,7 @@ QVector<QPair<int, QVector<int > > > QSortFilterProxyModelPrivate::proxy_interva int proxy_item = 0; int source_items_index = 0; QVector<int> source_items_in_interval; - bool compare = (orient == Qt::Vertical && source_sort_column >= 0); + bool compare = (orient == Qt::Vertical && source_sort_column >= 0 && dynamic_sortfilter); while (source_items_index < source_items.size()) { source_items_in_interval.clear(); int first_new_source_item = source_items.at(source_items_index); @@ -1244,7 +1244,7 @@ void QSortFilterProxyModelPrivate::_q_sourceRowsInserted( const QModelIndex &source_parent, int start, int end) { source_items_inserted(source_parent, start, end, Qt::Vertical); - if (update_source_sort_column()) //previous call to update_source_sort_column may fail if the model has no column. + if (update_source_sort_column() && dynamic_sortfilter) //previous call to update_source_sort_column may fail if the model has no column. sort(); // now it should succeed so we need to make sure to sort again } @@ -1281,8 +1281,8 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsInserted( if (source_parent.isValid()) return; //we sort according to the root column only if (source_sort_column == -1) { - //we update the source_sort_column depending on the prox_sort_column - if (update_source_sort_column()) + //we update the source_sort_column depending on the proxy_sort_column + if (update_source_sort_column() && dynamic_sortfilter) sort(); } else { if (start <= source_sort_column) diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp index 706d2a8..37168eb 100644 --- a/src/gui/itemviews/qtreeview.cpp +++ b/src/gui/itemviews/qtreeview.cpp @@ -3770,10 +3770,15 @@ void QTreeViewPrivate::rowsRemoved(const QModelIndex &parent, if (previousSibiling != -1 && after && model->rowCount(parent) == start) viewItems[previousSibiling].hasMoreSiblings = false; - - updateChildCount(parentItem, -removedCount); - if (parentItem != -1 && viewItems.at(parentItem).total == 0) - viewItems[parentItem].hasChildren = false; //every children have been removed; + if (parentItem != -1) { + if (viewItems.at(parentItem).expanded) { + updateChildCount(parentItem, -removedCount); + if (viewItems.at(parentItem).total == 0) + viewItems[parentItem].hasChildren = false; //every children have been removed; + } else if (viewItems[parentItem].hasChildren && !hasVisibleChildren(parent)) { + viewItems[parentItem].hasChildren = false; + } + } if (after) { q->updateGeometries(); viewport->update(); diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index c6e192b..3c2c743 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -2221,30 +2221,60 @@ void qt_init(QApplicationPrivate *priv, int, int format; unsigned long length, after; uchar *data = 0; + int rc; + + do { + if (!qgetenv("KDE_FULL_SESSION").isEmpty()) { + X11->desktopEnvironment = DE_KDE; + X11->desktopVersion = qgetenv("KDE_SESSION_VERSION").toInt(); + break; + } + + if (qgetenv("DESKTOP_SESSION") == "gnome") { + X11->desktopEnvironment = DE_GNOME; + break; + } + + // GNOME_DESKTOP_SESSION_ID is deprecated for some reason, but still check it + if (!qgetenv("GNOME_DESKTOP_SESSION_ID").isEmpty()) { + X11->desktopEnvironment = DE_GNOME; + break; + } + + rc = XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(_DT_SAVE_MODE), + 0, 2, False, XA_STRING, &type, &format, &length, + &after, &data); + if (rc == Success && length) { + if (!strcmp(reinterpret_cast<char *>(data), "xfce4")) { + // Pretend that xfce4 is gnome, as it uses the same libraries. + // The detection above is stolen from xdg-open. + X11->desktopEnvironment = DE_GNOME; + break; + } + + // We got the property but it wasn't xfce4. Free data before it gets overwritten. + XFree(data); + data = 0; + } + + rc = XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(DTWM_IS_RUNNING), + 0, 1, False, AnyPropertyType, &type, &format, &length, + &after, &data); + if (rc == Success && length) { + // DTWM is running, meaning most likely CDE is running... + X11->desktopEnvironment = DE_CDE; + break; + } + + rc = XGetWindowProperty(X11->display, QX11Info::appRootWindow(), + ATOM(_SGI_DESKS_MANAGER), 0, 1, False, XA_WINDOW, + &type, &format, &length, &after, &data); + if (rc == Success && length) { + X11->desktopEnvironment = DE_4DWM; + break; + } + } while(0); - if (!qgetenv("KDE_FULL_SESSION").isEmpty()) { - X11->desktopEnvironment = DE_KDE; - X11->desktopVersion = qgetenv("KDE_SESSION_VERSION").toInt(); - } else if (!qgetenv("GNOME_DESKTOP_SESSION_ID").isEmpty() // Deprecated for some reason. - || qgetenv("DESKTOP_SESSION") == "gnome") { // De-facto-standardized by GNOME. - X11->desktopEnvironment = DE_GNOME; - } else if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(_DT_SAVE_MODE), - 0, 2, False, XA_STRING, &type, &format, &length, - &after, &data) == Success - && !strcmp(reinterpret_cast<char *>(data), "xfce4")) { - // Pretend that xfce4 is gnome, as it uses the same libraries. - // The detection above is stolen from xdg-open. - X11->desktopEnvironment = DE_GNOME; - } else if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(DTWM_IS_RUNNING), - 0, 1, False, AnyPropertyType, &type, &format, &length, - &after, &data) == Success && length) { - // DTWM is running, meaning most likely CDE is running... - X11->desktopEnvironment = DE_CDE; - } else if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(_SGI_DESKS_MANAGER), - 0, 1, False, XA_WINDOW, &type, &format, &length, &after, &data) == Success - && length) { - X11->desktopEnvironment = DE_4DWM; - } if (data) XFree((char *)data); diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm index 455176e..c347410 100644 --- a/src/gui/kernel/qcocoaview_mac.mm +++ b/src/gui/kernel/qcocoaview_mac.mm @@ -462,8 +462,9 @@ extern "C" { if (QApplicationPrivate::graphicsSystem() != 0) { if (QWidgetBackingStore *bs = qwidgetprivate->maybeBackingStore()) { // Drawing is handled on the window level - // See qcocoasharedwindowmethods_mac_p. - return; + // See qcocoasharedwindowmethods_mac_p.h + if (!qwidget->testAttribute(Qt::WA_PaintOnScreen)) + return; } } CGContextRef cg = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; diff --git a/src/gui/kernel/qkeymapper_win.cpp b/src/gui/kernel/qkeymapper_win.cpp index 578f32a..e555c5c 100644 --- a/src/gui/kernel/qkeymapper_win.cpp +++ b/src/gui/kernel/qkeymapper_win.cpp @@ -619,7 +619,7 @@ void QKeyMapperPrivate::clearMappings() /* MAKELCID()'s first argument is a WORD, and GetKeyboardLayout() * returns a DWORD. */ - LCID newLCID = MAKELCID((DWORD)GetKeyboardLayout(0), SORT_DEFAULT); + LCID newLCID = MAKELCID((quintptr)GetKeyboardLayout(0), SORT_DEFAULT); // keyboardInputLocale = qt_localeFromLCID(newLCID); bool bidi = false; diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 070491d..fae26e0 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -3700,7 +3700,7 @@ template <> Q_STATIC_TEMPLATE_SPECIALIZATION inline quint32 alpha_4(const qargb8555 *src) { - Q_ASSERT((long(src) & 0x3) == 0); + Q_ASSERT((quintptr(src) & 0x3) == 0); const quint8 *src8 = reinterpret_cast<const quint8*>(src); return src8[0] << 24 | src8[3] << 16 | src8[6] << 8 | src8[9]; } @@ -4026,8 +4026,8 @@ template <> inline void interpolate_pixel_4(qargb8565 *dest, const qargb8565 *src, quint32 alpha) { - Q_ASSERT((long(dest) & 0x3) == 0); - Q_ASSERT((long(src) & 0x3) == 0); + Q_ASSERT((quintptr(dest) & 0x3) == 0); + Q_ASSERT((quintptr(src) & 0x3) == 0); const quint32 a = eff_alpha_4(alpha, dest); const quint32 ia = eff_ialpha_4(alpha, dest); @@ -4122,8 +4122,8 @@ template <> inline void interpolate_pixel_4(qargb8555 *dest, const qargb8555 *src, quint32 alpha) { - Q_ASSERT((long(dest) & 0x3) == 0); - Q_ASSERT((long(src) & 0x3) == 0); + Q_ASSERT((quintptr(dest) & 0x3) == 0); + Q_ASSERT((quintptr(src) & 0x3) == 0); const quint32 a = eff_alpha_4(alpha, dest); @@ -4218,8 +4218,8 @@ template <> inline void interpolate_pixel_4(qrgb888 *dest, const qrgb888 *src, quint32 alpha) { - Q_ASSERT((long(dest) & 0x3) == 0); - Q_ASSERT((long(src) & 0x3) == 0); + Q_ASSERT((quintptr(dest) & 0x3) == 0); + Q_ASSERT((quintptr(src) & 0x3) == 0); const quint32 a = eff_alpha_4(alpha, dest); const quint32 ia = eff_ialpha_4(alpha, dest); @@ -4291,8 +4291,8 @@ template <class DST, class SRC> inline void interpolate_pixel_4(DST *dest, quint8 a, const SRC *src, quint8 b) { - Q_ASSERT((long(dest) & 0x3) == 0); - Q_ASSERT((long(src) & 0x3) == 0); + Q_ASSERT((quintptr(dest) & 0x3) == 0); + Q_ASSERT((quintptr(src) & 0x3) == 0); dest[0] = dest[0].byte_mul(a) + DST(src[0]).byte_mul(b); dest[1] = dest[1].byte_mul(a) + DST(src[1]).byte_mul(b); @@ -4303,8 +4303,8 @@ inline void interpolate_pixel_4(DST *dest, quint8 a, template <class DST, class SRC> inline void blend_sourceOver_4(DST *dest, const SRC *src) { - Q_ASSERT((long(dest) & 0x3) == 0); - Q_ASSERT((long(src) & 0x3) == 0); + Q_ASSERT((quintptr(dest) & 0x3) == 0); + Q_ASSERT((quintptr(src) & 0x3) == 0); const quint32 a = alpha_4(src); if (a == 0xffffffff) { @@ -4319,8 +4319,8 @@ inline void blend_sourceOver_4(DST *dest, const SRC *src) template <> inline void blend_sourceOver_4(qargb8565 *dest, const qargb8565 *src) { - Q_ASSERT((long(dest) & 0x3) == 0); - Q_ASSERT((long(src) & 0x3) == 0); + Q_ASSERT((quintptr(dest) & 0x3) == 0); + Q_ASSERT((quintptr(src) & 0x3) == 0); const quint32 a = alpha_4(src); if (a == 0xffffffff) { @@ -4333,8 +4333,8 @@ inline void blend_sourceOver_4(qargb8565 *dest, const qargb8565 *src) template <> inline void blend_sourceOver_4(qargb8555 *dest, const qargb8555 *src) { - Q_ASSERT((long(dest) & 0x3) == 0); - Q_ASSERT((long(src) & 0x3) == 0); + Q_ASSERT((quintptr(dest) & 0x3) == 0); + Q_ASSERT((quintptr(src) & 0x3) == 0); const quint32 a = alpha_4(src); if (a == 0xffffffff) { @@ -4347,8 +4347,8 @@ inline void blend_sourceOver_4(qargb8555 *dest, const qargb8555 *src) template <> inline void blend_sourceOver_4(qargb6666 *dest, const qargb6666 *src) { - Q_ASSERT((long(dest) & 0x3) == 0); - Q_ASSERT((long(src) & 0x3) == 0); + Q_ASSERT((quintptr(dest) & 0x3) == 0); + Q_ASSERT((quintptr(src) & 0x3) == 0); const quint32 a = alpha_4(src); if (a == 0xffffffff) { diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h index cb0db4f..2f78b00 100644 --- a/src/gui/painting/qdrawhelper_p.h +++ b/src/gui/painting/qdrawhelper_p.h @@ -1649,7 +1649,7 @@ inline void qt_memconvert(qrgb666 *dest, const quint32 *src, int count) return; } - const int align = (long(dest) & 3); + const int align = (quintptr(dest) & 3); switch (align) { case 1: *dest++ = qrgb666(*src++); --count; case 2: *dest++ = qrgb666(*src++); --count; diff --git a/src/gui/painting/qdrawutil.cpp b/src/gui/painting/qdrawutil.cpp index 5619a2e..d76c709 100644 --- a/src/gui/painting/qdrawutil.cpp +++ b/src/gui/painting/qdrawutil.cpp @@ -1081,7 +1081,7 @@ void qDrawItem(QPainter *p, Qt::GUIStyle gs, according to the \a margins structure. */ -typedef QVarLengthArray<QDrawPixmaps::Data, 16> QDrawPixmapsDataArray; +typedef QVarLengthArray<QPainter::Fragment, 16> QPixmapFragmentsArray; /*! \since 4.6 @@ -1102,12 +1102,12 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin const QPixmap &pixmap, const QRect &sourceRect,const QMargins &sourceMargins, const QTileRules &rules, QDrawBorderPixmap::DrawingHints hints) { - QDrawPixmaps::Data d; + QPainter::Fragment d; d.opacity = 1.0; d.rotation = 0.0; - QDrawPixmapsDataArray opaqueData; - QDrawPixmapsDataArray translucentData; + QPixmapFragmentsArray opaqueData; + QPixmapFragmentsArray translucentData; // source center const int sourceCenterTop = sourceRect.top() + sourceMargins.top(); @@ -1182,44 +1182,56 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin // corners if (targetMargins.top() > 0 && targetMargins.left() > 0 && sourceMargins.top() > 0 && sourceMargins.left() > 0) { // top left - d.point.setX(0.5 * (xTarget[1] + xTarget[0])); - d.point.setY(0.5 * (yTarget[1] + yTarget[0])); - d.source = QRectF(sourceRect.left(), sourceRect.top(), sourceMargins.left(), sourceMargins.top()); - d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.source.width(); - d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.source.height(); + d.x = (0.5 * (xTarget[1] + xTarget[0])); + d.y = (0.5 * (yTarget[1] + yTarget[0])); + d.sourceLeft = sourceRect.left(); + d.sourceTop = sourceRect.top(); + d.width = sourceMargins.left(); + d.height = sourceMargins.top(); + d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width; + d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height; if (hints & QDrawBorderPixmap::OpaqueTopLeft) opaqueData.append(d); else translucentData.append(d); } if (targetMargins.top() > 0 && targetMargins.right() > 0 && sourceMargins.top() > 0 && sourceMargins.right() > 0) { // top right - d.point.setX(0.5 * (xTarget[columns] + xTarget[columns - 1])); - d.point.setY(0.5 * (yTarget[1] + yTarget[0])); - d.source = QRectF(sourceCenterRight, sourceRect.top(), sourceMargins.right(), sourceMargins.top()); - d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.source.width(); - d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.source.height(); + d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1])); + d.y = (0.5 * (yTarget[1] + yTarget[0])); + d.sourceLeft = sourceCenterRight; + d.sourceTop = sourceRect.top(); + d.width = sourceMargins.right(); + d.height = sourceMargins.top(); + d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width; + d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height; if (hints & QDrawBorderPixmap::OpaqueTopRight) opaqueData.append(d); else translucentData.append(d); } if (targetMargins.bottom() > 0 && targetMargins.left() > 0 && sourceMargins.bottom() > 0 && sourceMargins.left() > 0) { // bottom left - d.point.setX(0.5 * (xTarget[1] + xTarget[0])); - d.point.setY(0.5 * (yTarget[rows] + yTarget[rows - 1])); - d.source = QRectF(sourceRect.left(), sourceCenterBottom, sourceMargins.left(), sourceMargins.bottom()); - d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.source.width(); - d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.source.height(); + d.x = (0.5 * (xTarget[1] + xTarget[0])); + d.y =(0.5 * (yTarget[rows] + yTarget[rows - 1])); + d.sourceLeft = sourceRect.left(); + d.sourceTop = sourceCenterBottom; + d.width = sourceMargins.left(); + d.height = sourceMargins.bottom(); + d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width; + d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height; if (hints & QDrawBorderPixmap::OpaqueBottomLeft) opaqueData.append(d); else translucentData.append(d); } if (targetMargins.bottom() > 0 && targetMargins.right() > 0 && sourceMargins.bottom() > 0 && sourceMargins.right() > 0) { // bottom right - d.point.setX(0.5 * (xTarget[columns] + xTarget[columns - 1])); - d.point.setY(0.5 * (yTarget[rows] + yTarget[rows - 1])); - d.source = QRectF(sourceCenterRight, sourceCenterBottom, sourceMargins.right(), sourceMargins.bottom()); - d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.source.width(); - d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.source.height(); + d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1])); + d.y = (0.5 * (yTarget[rows] + yTarget[rows - 1])); + d.sourceLeft = sourceCenterRight; + d.sourceTop = sourceCenterBottom; + d.width = sourceMargins.right(); + d.height = sourceMargins.bottom(); + d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width; + d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height; if (hints & QDrawBorderPixmap::OpaqueBottomRight) opaqueData.append(d); else @@ -1229,151 +1241,107 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin // horizontal edges if (targetCenterWidth > 0 && sourceCenterWidth > 0) { if (targetMargins.top() > 0 && sourceMargins.top() > 0) { // top - QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueTop ? opaqueData : translucentData; - d.source = QRectF(sourceCenterLeft, sourceRect.top(), sourceCenterWidth, sourceMargins.top()); - d.point.setY(0.5 * (yTarget[1] + yTarget[0])); - d.scaleX = dx / d.source.width(); - d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.source.height(); + QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueTop ? opaqueData : translucentData; + d.sourceLeft = sourceCenterLeft; + d.sourceTop = sourceRect.top(); + d.width = sourceCenterWidth; + d.height = sourceMargins.top(); + d.y = (0.5 * (yTarget[1] + yTarget[0])); + d.scaleX = dx / d.width; + d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height; for (int i = 1; i < columns - 1; ++i) { - d.point.setX(0.5 * (xTarget[i + 1] + xTarget[i])); + d.x = (0.5 * (xTarget[i + 1] + xTarget[i])); data.append(d); } if (rules.horizontal == Qt::RepeatTile) - data[data.size() - 1].source.setWidth((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX); + data[data.size() - 1].width = ((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX); } if (targetMargins.bottom() > 0 && sourceMargins.bottom() > 0) { // bottom - QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueBottom ? opaqueData : translucentData; - d.source = QRectF(sourceCenterLeft, sourceCenterBottom, sourceCenterWidth, sourceMargins.bottom());; - d.point.setY(0.5 * (yTarget[rows] + yTarget[rows - 1])); - d.scaleX = dx / d.source.width(); - d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.source.height(); + QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueBottom ? opaqueData : translucentData; + d.sourceLeft = sourceCenterLeft; + d.sourceTop = sourceCenterBottom; + d.width = sourceCenterWidth; + d.height = sourceMargins.bottom(); + d.y = (0.5 * (yTarget[rows] + yTarget[rows - 1])); + d.scaleX = dx / d.width; + d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height; for (int i = 1; i < columns - 1; ++i) { - d.point.setX(0.5 * (xTarget[i + 1] + xTarget[i])); + d.x = (0.5 * (xTarget[i + 1] + xTarget[i])); data.append(d); } if (rules.horizontal == Qt::RepeatTile) - data[data.size() - 1].source.setWidth((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX); + data[data.size() - 1].width = ((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX); } } // vertical edges if (targetCenterHeight > 0 && sourceCenterHeight > 0) { if (targetMargins.left() > 0 && sourceMargins.left() > 0) { // left - QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueLeft ? opaqueData : translucentData; - d.source = QRectF(sourceRect.left(), sourceCenterTop, sourceMargins.left(), sourceCenterHeight); - d.point.setX(0.5 * (xTarget[1] + xTarget[0])); - d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.source.width(); - d.scaleY = dy / d.source.height(); + QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueLeft ? opaqueData : translucentData; + d.sourceLeft = sourceRect.left(); + d.sourceTop = sourceCenterTop; + d.width = sourceMargins.left(); + d.height = sourceCenterHeight; + d.x = (0.5 * (xTarget[1] + xTarget[0])); + d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width; + d.scaleY = dy / d.height; for (int i = 1; i < rows - 1; ++i) { - d.point.setY(0.5 * (yTarget[i + 1] + yTarget[i])); + d.y = (0.5 * (yTarget[i + 1] + yTarget[i])); data.append(d); } if (rules.vertical == Qt::RepeatTile) - data[data.size() - 1].source.setHeight((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY); + data[data.size() - 1].height = ((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY); } if (targetMargins.right() > 0 && sourceMargins.right() > 0) { // right - QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueRight ? opaqueData : translucentData; - d.source = QRectF(sourceCenterRight, sourceCenterTop, sourceMargins.right(), sourceCenterHeight); - d.point.setX(0.5 * (xTarget[columns] + xTarget[columns - 1])); - d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.source.width(); - d.scaleY = dy / d.source.height(); + QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueRight ? opaqueData : translucentData; + d.sourceLeft = sourceCenterRight; + d.sourceTop = sourceCenterTop; + d.width = sourceMargins.right(); + d.height = sourceCenterHeight; + d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1])); + d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width; + d.scaleY = dy / d.height; for (int i = 1; i < rows - 1; ++i) { - d.point.setY(0.5 * (yTarget[i + 1] + yTarget[i])); + d.y = (0.5 * (yTarget[i + 1] + yTarget[i])); data.append(d); } if (rules.vertical == Qt::RepeatTile) - data[data.size() - 1].source.setHeight((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY); + data[data.size() - 1].height = ((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY); } } // center if (targetCenterWidth > 0 && targetCenterHeight > 0 && sourceCenterWidth > 0 && sourceCenterHeight > 0) { - QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueCenter ? opaqueData : translucentData; - d.source = QRectF(sourceCenterLeft, sourceCenterTop, sourceCenterWidth, sourceCenterHeight); - d.scaleX = dx / d.source.width(); - d.scaleY = dy / d.source.height(); + QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueCenter ? opaqueData : translucentData; + d.sourceLeft = sourceCenterLeft; + d.sourceTop = sourceCenterTop; + d.width = sourceCenterWidth; + d.height = sourceCenterHeight; + d.scaleX = dx / d.width; + d.scaleY = dy / d.height; qreal repeatWidth = (xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX; qreal repeatHeight = (yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY; for (int j = 1; j < rows - 1; ++j) { - d.point.setY(0.5 * (yTarget[j + 1] + yTarget[j])); + d.y = (0.5 * (yTarget[j + 1] + yTarget[j])); for (int i = 1; i < columns - 1; ++i) { - d.point.setX(0.5 * (xTarget[i + 1] + xTarget[i])); + d.x = (0.5 * (xTarget[i + 1] + xTarget[i])); data.append(d); } if (rules.horizontal == Qt::RepeatTile) - data[data.size() - 1].source.setWidth(repeatWidth); + data[data.size() - 1].width = repeatWidth; } if (rules.vertical == Qt::RepeatTile) { for (int i = 1; i < columns - 1; ++i) - data[data.size() - i].source.setHeight(repeatHeight); + data[data.size() - i].height = repeatHeight; } } if (opaqueData.size()) - qDrawPixmaps(painter, opaqueData.data(), opaqueData.size(), pixmap, QDrawPixmaps::OpaqueHint); + painter->drawPixmapFragments(opaqueData.data(), opaqueData.size(), pixmap, QPainter::OpaqueHint); if (translucentData.size()) - qDrawPixmaps(painter, translucentData.data(), translucentData.size(), pixmap); -} - -/*! - \class QDrawPixmaps::Data - \since 4.6 - \internal - - This structure is used with the qDrawPixmaps() function. - - QPointF point: Specifies the center of the target rectangle. - QRectF source: Specifies the source rectangle in the pixmap passed into the qDrawPixmaps() call. - qreal scaleX: Specifies the horizontal scale of the target rectangle. - qreal scaleY: Specifies the vertical scale of the target rectangle. - qreal rotation: Specifies the rotation of the target rectangle in degrees. - The target rectangle is rotated after scaling. - qreal opacity: Specifies the opacity of the rectangle. -*/ - -/*! - \enum QDrawPixmaps::DrawingHint - \internal -*/ - -/*! - \internal - \since 4.6 - - This function is used to draw \a pixmap, or a sub-rectangle of \a pixmap, at multiple positions - with different scale, rotation and opacity on \a painter. \a drawingData is an array of \a - dataCount elements specifying the parameters used to draw each pixmap instance. - This can be used for example to implement a particle system. -*/ -void qDrawPixmaps(QPainter *painter, const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints) -{ - QPaintEngine *engine = painter->paintEngine(); - if (!engine) - return; - - if (engine->isExtended()) { - static_cast<QPaintEngineEx *>(engine)->drawPixmaps(drawingData, dataCount, pixmap, hints); - } else { - qreal oldOpacity = painter->opacity(); - QTransform oldTransform = painter->transform(); - - for (int i = 0; i < dataCount; ++i) { - QTransform transform = oldTransform; - transform.translate(drawingData[i].point.x(), drawingData[i].point.y()); - transform.rotate(drawingData[i].rotation); - painter->setOpacity(oldOpacity * drawingData[i].opacity); - painter->setTransform(transform); - - qreal w = drawingData[i].scaleX * drawingData[i].source.width(); - qreal h = drawingData[i].scaleY * drawingData[i].source.height(); - painter->drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, drawingData[i].source); - } - - painter->setOpacity(oldOpacity); - painter->setTransform(oldTransform); - } + painter->drawPixmapFragments(translucentData.data(), translucentData.size(), pixmap); } QT_END_NAMESPACE diff --git a/src/gui/painting/qdrawutil.h b/src/gui/painting/qdrawutil.h index 2801b2f..31e352f 100644 --- a/src/gui/painting/qdrawutil.h +++ b/src/gui/painting/qdrawutil.h @@ -188,31 +188,6 @@ inline void qDrawBorderPixmap(QPainter *painter, qDrawBorderPixmap(painter, target, margins, pixmap, pixmap.rect(), margins); } -// For internal use only. -namespace QDrawPixmaps -{ - struct Data - { - QPointF point; - QRectF source; - qreal scaleX; - qreal scaleY; - qreal rotation; - qreal opacity; - }; - - enum DrawingHint - { - OpaqueHint = 0x01 - }; - - Q_DECLARE_FLAGS(DrawingHints, DrawingHint) -} - -// This function is private and may change without notice. Do not use outside Qt!!! -Q_GUI_EXPORT void qDrawPixmaps(QPainter *painter, const QDrawPixmaps::Data *drawingData, - int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints = 0); - QT_END_NAMESPACE QT_END_HEADER diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp index 4f2fffa..98762f0 100644 --- a/src/gui/painting/qpaintengineex.cpp +++ b/src/gui/painting/qpaintengineex.cpp @@ -893,7 +893,7 @@ void QPaintEngineEx::drawPoints(const QPoint *points, int pointCount) for (int i=0; i<count; ++i) { pts[++oset] = points[i].x(); pts[++oset] = points[i].y(); - pts[++oset] = points[i].x() + 1/63; + pts[++oset] = points[i].x() + 1/63.; pts[++oset] = points[i].y(); } QVectorPath path(pts, count * 2, qpaintengineex_line_types_16, QVectorPath::LinesHint); @@ -970,23 +970,26 @@ void QPaintEngineEx::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, con fill(path, brush); } -void QPaintEngineEx::drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints /*hints*/) +void QPaintEngineEx::drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, + const QPixmap &pixmap, QPainter::FragmentHints /*hints*/) { qreal oldOpacity = state()->opacity; QTransform oldTransform = state()->matrix; - for (int i = 0; i < dataCount; ++i) { + for (int i = 0; i < fragmentCount; ++i) { QTransform transform = oldTransform; - transform.translate(drawingData[i].point.x(), drawingData[i].point.y()); - transform.rotate(drawingData[i].rotation); - state()->opacity = oldOpacity * drawingData[i].opacity; + transform.translate(fragments[i].x, fragments[i].y); + transform.rotate(fragments[i].rotation); + state()->opacity = oldOpacity * fragments[i].opacity; state()->matrix = transform; opacityChanged(); transformChanged(); - qreal w = drawingData[i].scaleX * drawingData[i].source.width(); - qreal h = drawingData[i].scaleY * drawingData[i].source.height(); - drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, drawingData[i].source); + qreal w = fragments[i].scaleX * fragments[i].width; + qreal h = fragments[i].scaleY * fragments[i].height; + QRectF sourceRect(fragments[i].sourceLeft, fragments[i].sourceTop, + fragments[i].width, fragments[i].height); + drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, sourceRect); } state()->opacity = oldOpacity; diff --git a/src/gui/painting/qpaintengineex_p.h b/src/gui/painting/qpaintengineex_p.h index 90c4f9f..2401b94 100644 --- a/src/gui/painting/qpaintengineex_p.h +++ b/src/gui/painting/qpaintengineex_p.h @@ -197,7 +197,7 @@ public: virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s); - virtual void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QFlags<QDrawPixmaps::DrawingHint> hints); + virtual void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QFlags<QPainter::FragmentHint> hints); virtual void updateState(const QPaintEngineState &state); diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 4f532c0..dc96c17 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -5700,6 +5700,61 @@ void QPainter::drawImage(const QRectF &targetRect, const QImage &image, const QR d->engine->drawImage(QRectF(x, y, w, h), image, QRectF(sx, sy, sw, sh), flags); } + +void qt_draw_glyphs(QPainter *painter, const quint32 *glyphArray, const QPointF *positionArray, + int glyphCount) +{ + QPainterPrivate *painter_d = QPainterPrivate::get(painter); + painter_d->drawGlyphs(glyphArray, positionArray, glyphCount); +} + +void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, const QPointF *positionArray, + int glyphCount) +{ + updateState(state); + + QFontEngine *fontEngine = state->font.d->engineForScript(QUnicodeTables::Common); + + QVarLengthArray<QFixedPoint, 128> positions; + for (int i=0; i<glyphCount; ++i) { + QFixedPoint fp = QFixedPoint::fromPointF(positionArray[i]); + positions.append(fp); + } + + if (extended != 0) { + QStaticTextItem staticTextItem; + staticTextItem.color = state->pen.color(); + staticTextItem.font = state->font; + staticTextItem.fontEngine = fontEngine; + staticTextItem.numGlyphs = glyphCount; + staticTextItem.glyphs = reinterpret_cast<glyph_t *>(const_cast<glyph_t *>(glyphArray)); + staticTextItem.glyphPositions = positions.data(); + + extended->drawStaticTextItem(&staticTextItem); + } else { + QTextItemInt textItem; + textItem.f = &state->font; + textItem.fontEngine = fontEngine; + + QVarLengthArray<QFixed, 128> advances(glyphCount); + QVarLengthArray<QGlyphJustification, 128> glyphJustifications(glyphCount); + QVarLengthArray<HB_GlyphAttributes, 128> glyphAttributes(glyphCount); + qMemSet(glyphAttributes.data(), 0, glyphAttributes.size() * sizeof(HB_GlyphAttributes)); + qMemSet(advances.data(), 0, advances.size() * sizeof(QFixed)); + qMemSet(glyphJustifications.data(), 0, glyphJustifications.size() * sizeof(QGlyphJustification)); + + textItem.glyphs.numGlyphs = glyphCount; + textItem.glyphs.glyphs = reinterpret_cast<HB_Glyph *>(const_cast<quint32 *>(glyphArray)); + textItem.glyphs.offsets = positions.data(); + textItem.glyphs.advances_x = advances.data(); + textItem.glyphs.advances_y = advances.data(); + textItem.glyphs.justifications = glyphJustifications.data(); + textItem.glyphs.attributes = glyphAttributes.data(); + + engine->drawTextItem(QPointF(0, 0), textItem); + } +} + /*! \fn void QPainter::drawStaticText(const QPoint &position, const QStaticText &staticText) @@ -8847,6 +8902,160 @@ QTransform QPainter::combinedTransform() const return d->state->worldMatrix * d->viewTransform(); } +/*! + \since 4.7 + + This function is used to draw \a pixmap, or a sub-rectangle of \a pixmap, + at multiple positions with different scale, rotation and opacity. \a + fragments is an array of \a fragmentCount elements specifying the + parameters used to draw each pixmap fragment. The \a hints + parameter can be used to pass in drawing hints. + + This function is potentially faster than multiple calls to drawPixmap(), + since the backend can optimize state changes. + + \sa QPainter::Fragment, QPainter::FragmentHint +*/ + +void QPainter::drawPixmapFragments(const Fragment *fragments, int fragmentCount, + const QPixmap &pixmap, FragmentHints hints) +{ + Q_D(QPainter); + + if (!d->engine) + return; + + if (d->engine->isExtended()) { + d->extended->drawPixmapFragments(fragments, fragmentCount, pixmap, hints); + } else { + qreal oldOpacity = opacity(); + QTransform oldTransform = transform(); + + for (int i = 0; i < fragmentCount; ++i) { + QTransform transform = oldTransform; + transform.translate(fragments[i].x, fragments[i].y); + transform.rotate(fragments[i].rotation); + setOpacity(oldOpacity * fragments[i].opacity); + setTransform(transform); + + qreal w = fragments[i].scaleX * fragments[i].width; + qreal h = fragments[i].scaleY * fragments[i].height; + QRectF sourceRect(fragments[i].sourceLeft, fragments[i].sourceTop, + fragments[i].width, fragments[i].height); + drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, sourceRect); + } + + setOpacity(oldOpacity); + setTransform(oldTransform); + } +} + +/*! + \since 4.7 + \class QPainter::Fragment + + \brief This class is used in conjunction with the + QPainter::drawPixmapFragments() function to specify how a pixmap, or + sub-rect of a pixmap, is drawn. + + The \a sourceLeft, \a sourceTop, \a width and \a height variables are used + as a source rectangle within the pixmap passed into the + QPainter::drawPixmapFragments() function. The variables \a x, \a y, \a + width and \a height are used to calculate the target rectangle that is + drawn. \a x and \a y denotes the center of the target rectangle. The \a + width and \a heigth in the target rectangle is scaled by the \a scaleX and + \a scaleY values. The resulting target rectangle is then rotated \a + rotation degrees around the \a x, \a y center point. + + \sa QPainter::drawPixmapFragments() +*/ + +/*! + \since 4.7 + + This is a convenience function that returns a QPainter::Fragment that is + initialized with the \a pos, \a sourceRect, \a scaleX, \a scaleY, \a + rotation, \a opacity parameters. +*/ + +QPainter::Fragment QPainter::Fragment::create(const QPointF &pos, const QRectF &sourceRect, + qreal scaleX, qreal scaleY, qreal rotation, + qreal opacity) +{ + Fragment fragment = {pos.x(), pos.y(), sourceRect.x(), sourceRect.y(), sourceRect.width(), + sourceRect.height(), scaleX, scaleY, rotation, opacity}; + return fragment; +} + +/*! + \variable QPainter::Fragment::x + \brief the x coordinate of center point in the target rectangle. +*/ + +/*! + \variable QPainter::Fragment::y + \brief the y coordinate of the center point in the target rectangle. +*/ + +/*! + \variable QPainter::Fragment::sourceLeft + \brief the left coordinate of the source rectangle. +*/ + +/*! + \variable QPainter::Fragment::sourceTop + \brief the top coordinate of the source rectangle. +*/ + +/*! + \variable QPainter::Fragment::width + + \brief the width of the source rectangle and is used to calculate the width + of the target rectangle. +*/ + +/*! + \variable QPainter::Fragment::height + + \brief the height of the source rectangle and is used to calculate the + height of the target rectangle. +*/ + +/*! + \variable QPainter::Fragment::scaleX + \brief the horizontal scale of the target rectangle. +*/ + +/*! + \variable QPainter::Fragment::scaleY + \brief the vertical scale of the target rectangle. +*/ + +/*! + \variable QPainter::Fragment::rotation + + \brief the rotation of the target rectangle in degrees. The target + rectangle is rotated after it has been scaled. +*/ + +/*! + \variable QPainter::Fragment::opacity + + \brief the opacity of the target rectangle, where 0.0 is fully transparent + and 1.0 is fully opaque. +*/ + +/*! + \since 4.7 + + \enum QPainter::FragmentHint + + \value OpaqueHint Indicates that the pixmap fragments to be drawn are + opaque. Opaque fragments are potentially faster to draw. + + \sa QPainter::drawPixmapFragments(), QPainter::Fragment +*/ + void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivate::DrawOperation operation) { p->draw_helper(path, operation); diff --git a/src/gui/painting/qpainter.h b/src/gui/painting/qpainter.h index e9fd532..bcb0b50 100644 --- a/src/gui/painting/qpainter.h +++ b/src/gui/painting/qpainter.h @@ -99,6 +99,29 @@ public: Q_DECLARE_FLAGS(RenderHints, RenderHint) + class Fragment { + public: + qreal x; + qreal y; + qreal sourceLeft; + qreal sourceTop; + qreal width; + qreal height; + qreal scaleX; + qreal scaleY; + qreal rotation; + qreal opacity; + static Fragment Q_GUI_EXPORT create(const QPointF &pos, const QRectF &sourceRect, + qreal scaleX = 1, qreal scaleY = 1, + qreal rotation = 0, qreal opacity = 1); + }; + + enum FragmentHint { + OpaqueHint = 0x01 + }; + + Q_DECLARE_FLAGS(FragmentHints, FragmentHint) + QPainter(); explicit QPainter(QPaintDevice *); ~QPainter(); @@ -352,6 +375,9 @@ public: inline void drawPixmap(const QRect &r, const QPixmap &pm); inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm); + void drawPixmapFragments(const Fragment *fragments, int fragmentCount, + const QPixmap &pixmap, FragmentHints hints = 0); + void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect, Qt::ImageConversionFlags flags = Qt::AutoColor); inline void drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect, diff --git a/src/gui/painting/qpainter_p.h b/src/gui/painting/qpainter_p.h index 02a91aa..9362dbe 100644 --- a/src/gui/painting/qpainter_p.h +++ b/src/gui/painting/qpainter_p.h @@ -228,6 +228,7 @@ public: void draw_helper(const QPainterPath &path, DrawOperation operation = StrokeAndFillDraw); void drawStretchedGradient(const QPainterPath &path, DrawOperation operation); void drawOpaqueBackground(const QPainterPath &path, DrawOperation operation); + void drawGlyphs(const quint32 *glyphArray, const QPointF *positionArray, int glyphCount); void updateMatrix(); void updateInvMatrix(); @@ -238,6 +239,11 @@ public: void checkEmulation(); + static QPainterPrivate *get(QPainter *painter) + { + return painter->d_ptr.data(); + } + QTransform viewTransform() const; static bool attachPainterPrivate(QPainter *q, QPaintDevice *pdev); void detachPainterPrivate(QPainter *q); @@ -252,6 +258,8 @@ public: }; Q_GUI_EXPORT void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivate::DrawOperation operation); +Q_GUI_EXPORT void qt_draw_glyphs(QPainter *painter, const quint32 *glyphArray, + const QPointF *positionArray, int glyphCount); QString qt_generate_brush_key(const QBrush &brush); diff --git a/src/gui/painting/qprintengine_win.cpp b/src/gui/painting/qprintengine_win.cpp index d029b1e..ea9dc5d 100644 --- a/src/gui/painting/qprintengine_win.cpp +++ b/src/gui/painting/qprintengine_win.cpp @@ -368,7 +368,8 @@ void QWin32PrintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem } // We only want to convert the glyphs to text if the entire string is compatible with ASCII - bool convertToText = true; + // and if we actually have access to the chars. + bool convertToText = ti.chars != 0; for (int i=0; i < ti.num_chars; ++i) { if (ti.chars[i].unicode() >= 0x80) { convertToText = false; diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm index 40ee31d..116b03e 100644 --- a/src/gui/styles/qmacstyle_mac.mm +++ b/src/gui/styles/qmacstyle_mac.mm @@ -3760,7 +3760,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter QPalette np = tab->palette; np.setColor(QPalette::WindowText, QColor(255, 255, 255, 75)); QRect nr = subElementRect(SE_TabBarTabText, opt, w); - nr.moveTop(+1); + nr.moveTop(-1); int alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextHideMnemonic; proxy()->drawItemText(p, nr, alignment, np, tab->state & State_Enabled, tab->text, QPalette::WindowText); diff --git a/src/gui/text/qfont.h b/src/gui/text/qfont.h index a2fff70..5adf237 100644 --- a/src/gui/text/qfont.h +++ b/src/gui/text/qfont.h @@ -291,6 +291,7 @@ private: friend class QFontMetricsF; friend class QFontInfo; friend class QPainter; + friend class QPainterPrivate; friend class QPSPrintEngineFont; friend class QApplication; friend class QWidget; diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index c000457..e5975d2 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -587,8 +587,9 @@ QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &t) { QImage i = alphaMapForGlyph(glyph); if (t.type() > QTransform::TxTranslate) - i = i.transformed(t); + i = i.transformed(t).convertToFormat(QImage::Format_Indexed8); Q_ASSERT(i.depth() <= 8); // To verify that transformed didn't change the format... + return i; } @@ -597,11 +598,14 @@ QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, int /* margin */, const Q QImage alphaMask = alphaMapForGlyph(glyph, t); QImage rgbMask(alphaMask.width(), alphaMask.height(), QImage::Format_RGB32); + QVector<QRgb> colorTable = alphaMask.colorTable(); for (int y=0; y<alphaMask.height(); ++y) { uint *dst = (uint *) rgbMask.scanLine(y); uchar *src = (uchar *) alphaMask.scanLine(y); - for (int x=0; x<alphaMask.width(); ++x) - dst[x] = qRgb(src[x], src[x], src[x]); + for (int x=0; x<alphaMask.width(); ++x) { + int val = qAlpha(colorTable.at(src[x])); + dst[x] = qRgb(val, val, val); + } } return rgbMask; diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp index 1a815d3..55e93bd 100644 --- a/src/gui/text/qfontengine_win.cpp +++ b/src/gui/text/qfontengine_win.cpp @@ -208,7 +208,7 @@ void QFontEngineWin::getCMap() unitsPerEm = otm->otmEMSquare; x_height = (int)otm->otmsXHeight; loadKerningPairs(designToDevice); - _faceId.filename = QString::fromWCharArray((wchar_t *)((char *)otm + (int)otm->otmpFullName)).toLatin1(); + _faceId.filename = QString::fromWCharArray((wchar_t *)((char *)otm + (quintptr)otm->otmpFullName)).toLatin1(); lineWidth = otm->otmsUnderscoreSize; fsType = otm->otmfsType; free(otm); @@ -1006,8 +1006,8 @@ QFontEngine::Properties QFontEngineWin::properties() const Properties p; p.emSquare = unitsPerEm; p.italicAngle = otm->otmItalicAngle; - p.postscriptName = QString::fromWCharArray((wchar_t *)((char *)otm + (int)otm->otmpFamilyName)).toLatin1(); - p.postscriptName += QString::fromWCharArray((wchar_t *)((char *)otm + (int)otm->otmpStyleName)).toLatin1(); + p.postscriptName = QString::fromWCharArray((wchar_t *)((char *)otm + (quintptr)otm->otmpFamilyName)).toLatin1(); + p.postscriptName += QString::fromWCharArray((wchar_t *)((char *)otm + (quintptr)otm->otmpStyleName)).toLatin1(); #ifndef QT_NO_PRINTER p.postscriptName = QPdf::stripSpecialCharacters(p.postscriptName); #endif diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp index a7138b9..8fe4c47 100644 --- a/src/gui/text/qstatictext.cpp +++ b/src/gui/text/qstatictext.cpp @@ -350,15 +350,13 @@ QStaticTextPrivate::QStaticTextPrivate() : items(0), itemCount(0), glyphPool(0), positionPool(0), needsClipRect(false), useBackendOptimizations(false), textFormat(Qt::AutoText) { - ref = 1; } QStaticTextPrivate::QStaticTextPrivate(const QStaticTextPrivate &other) : text(other.text), font(other.font), maximumSize(other.maximumSize), matrix(other.matrix), items(0), itemCount(0), glyphPool(0), positionPool(0), needsClipRect(false), - useBackendOptimizations(false), textFormat(other.textFormat) + useBackendOptimizations(other.useBackendOptimizations), textFormat(other.textFormat) { - ref = 1; } QStaticTextPrivate::~QStaticTextPrivate() diff --git a/src/multimedia/qml/multimediadeclarative.cpp b/src/multimedia/qml/multimediadeclarative.cpp index ba4036f..7f5298f 100644 --- a/src/multimedia/qml/multimediadeclarative.cpp +++ b/src/multimedia/qml/multimediadeclarative.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include <QtMultimedia/qdeclarative.h> +#include <QtMultimedia/multimediadeclarative.h> #include <QtMultimedia/private/qsoundeffect_p.h> #include <QtMultimedia/private/qdeclarativeaudio_p.h> #include <QtMultimedia/private/qdeclarativevideo_p.h> @@ -55,14 +55,13 @@ namespace QtMultimedia \internal */ -void qRegisterDeclarativeElements(QDeclarativeEngine *engine, const char *uri) +void qRegisterDeclarativeElements(const char *uri) { - Q_UNUSED(engine) Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.multimedia")); - qmlRegisterType<QSoundEffect>("Qt.multimedia", 4, 7, "SoundEffect"); - qmlRegisterType<QDeclarativeAudio>("Qt.multimedia", 4, 7, "Audio"); - qmlRegisterType<QDeclarativeVideo>("Qt.multimedia", 4, 7, "Video"); + qmlRegisterType<QSoundEffect>(uri, 4, 7, "SoundEffect"); + qmlRegisterType<QDeclarativeAudio>(uri, 4, 7, "Audio"); + qmlRegisterType<QDeclarativeVideo>(uri, 4, 7, "Video"); } } diff --git a/src/multimedia/qml/multimediadeclarative.h b/src/multimedia/qml/multimediadeclarative.h index befddb6..29af65a 100644 --- a/src/multimedia/qml/multimediadeclarative.h +++ b/src/multimedia/qml/multimediadeclarative.h @@ -49,11 +49,9 @@ QT_BEGIN_NAMESPACE QT_MODULE(Multimedia) -class QDeclarativeEngine; - namespace QtMultimedia { -extern void Q_MULTIMEDIA_EXPORT qRegisterDeclarativeElements(QDeclarativeEngine* engine, const char *uri); +extern void Q_MULTIMEDIA_EXPORT qRegisterDeclarativeElements(const char *uri); } QT_END_NAMESPACE diff --git a/src/multimedia/qml/qdeclarative.cpp b/src/multimedia/qml/qdeclarative.cpp deleted file mode 100644 index b9c9186..0000000 --- a/src/multimedia/qml/qdeclarative.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtMultimedia module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtMultimedia/qdeclarative.h> -#include <QtMultimedia/private/qsoundeffect_p.h> -#include <QtMultimedia/private/qdeclarativeaudio_p.h> -#include <QtMultimedia/private/qdeclarativevideo_p.h> - - -QT_BEGIN_NAMESPACE - -namespace QtMultimedia -{ - -/*! - Register the Multimedia QML elements. - \internal -*/ - -void qRegisterQmlElements(QDeclarativeEngine *engine, const char *uri) -{ - Q_UNUSED(engine); - - qmlRegisterType<QSoundEffect>(uri, 4, 7, "SoundEffect", "SoundEffect"); - qmlRegisterType<QDeclarativeAudio>(uri, 4, 7, "Audio", "Audio"); - qmlRegisterType<QDeclarativeVideo>(uri, 4, 7, "Video", "Video"); -} - -} - -QT_END_NAMESPACE - diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index ea464d5..25ad5d7 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1309,7 +1309,6 @@ void QGL2PaintEngineEx::drawStaticTextItem(QStaticTextItem *textItem) ? QFontEngineGlyphCache::Type(textItem->fontEngine->glyphFormat) : d->glyphCacheType; - // ### What about huge fonts? These are not passed through cache in drawTextItem(). d->drawCachedGlyphs(glyphType, textItem, true); } @@ -1642,21 +1641,23 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp s->matrix = old; } -void QGL2PaintEngineEx::drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints) +void QGL2PaintEngineEx::drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints) { Q_D(QGL2PaintEngineEx); // Use fallback for extended composition modes. if (state()->composition_mode > QPainter::CompositionMode_Plus) { - QPaintEngineEx::drawPixmaps(drawingData, dataCount, pixmap, hints); + QPaintEngineEx::drawPixmapFragments(fragments, fragmentCount, pixmap, hints); return; } ensureActive(); - d->drawPixmaps(drawingData, dataCount, pixmap, hints); + d->drawPixmapFragments(fragments, fragmentCount, pixmap, hints); } -void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints) +void QGL2PaintEngineExPrivate::drawPixmapFragments(const QPainter::Fragment *fragments, + int fragmentCount, const QPixmap &pixmap, + QPainter::FragmentHints hints) { GLfloat dx = 1.0f / pixmap.size().width(); GLfloat dy = 1.0f / pixmap.size().height(); @@ -1677,28 +1678,29 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData bool allOpaque = true; - for (int i = 0; i < dataCount; ++i) { + for (int i = 0; i < fragmentCount; ++i) { qreal s = 0; qreal c = 1; - if (drawingData[i].rotation != 0) { - s = qFastSin(drawingData[i].rotation * Q_PI / 180); - c = qFastCos(drawingData[i].rotation * Q_PI / 180); + if (fragments[i].rotation != 0) { + s = qFastSin(fragments[i].rotation * Q_PI / 180); + c = qFastCos(fragments[i].rotation * Q_PI / 180); } - qreal right = 0.5 * drawingData[i].scaleX * drawingData[i].source.width(); - qreal bottom = 0.5 * drawingData[i].scaleY * drawingData[i].source.height(); + qreal right = 0.5 * fragments[i].scaleX * fragments[i].width; + qreal bottom = 0.5 * fragments[i].scaleY * fragments[i].height; QGLPoint bottomRight(right * c - bottom * s, right * s + bottom * c); QGLPoint bottomLeft(-right * c - bottom * s, -right * s + bottom * c); - vertexCoordinateArray.lineToArray(bottomRight.x + drawingData[i].point.x(), bottomRight.y + drawingData[i].point.y()); - vertexCoordinateArray.lineToArray(-bottomLeft.x + drawingData[i].point.x(), -bottomLeft.y + drawingData[i].point.y()); - vertexCoordinateArray.lineToArray(-bottomRight.x + drawingData[i].point.x(), -bottomRight.y + drawingData[i].point.y()); - vertexCoordinateArray.lineToArray(-bottomRight.x + drawingData[i].point.x(), -bottomRight.y + drawingData[i].point.y()); - vertexCoordinateArray.lineToArray(bottomLeft.x + drawingData[i].point.x(), bottomLeft.y + drawingData[i].point.y()); - vertexCoordinateArray.lineToArray(bottomRight.x + drawingData[i].point.x(), bottomRight.y + drawingData[i].point.y()); + vertexCoordinateArray.lineToArray(bottomRight.x + fragments[i].x, bottomRight.y + fragments[i].y); + vertexCoordinateArray.lineToArray(-bottomLeft.x + fragments[i].x, -bottomLeft.y + fragments[i].y); + vertexCoordinateArray.lineToArray(-bottomRight.x + fragments[i].x, -bottomRight.y + fragments[i].y); + vertexCoordinateArray.lineToArray(-bottomRight.x + fragments[i].x, -bottomRight.y + fragments[i].y); + vertexCoordinateArray.lineToArray(bottomLeft.x + fragments[i].x, bottomLeft.y + fragments[i].y); + vertexCoordinateArray.lineToArray(bottomRight.x + fragments[i].x, bottomRight.y + fragments[i].y); - QGLRect src(drawingData[i].source.left() * dx, drawingData[i].source.top() * dy, - drawingData[i].source.right() * dx, drawingData[i].source.bottom() * dy); + QGLRect src(fragments[i].sourceLeft * dx, fragments[i].sourceTop * dy, + (fragments[i].sourceLeft + fragments[i].width) * dx, + (fragments[i].sourceTop + fragments[i].height) * dy); textureCoordinateArray.lineToArray(src.right, src.bottom); textureCoordinateArray.lineToArray(src.right, src.top); @@ -1707,7 +1709,7 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData textureCoordinateArray.lineToArray(src.left, src.bottom); textureCoordinateArray.lineToArray(src.right, src.bottom); - qreal opacity = drawingData[i].opacity * q->state()->opacity; + qreal opacity = fragments[i].opacity * q->state()->opacity; opacityArray << opacity << opacity << opacity << opacity << opacity << opacity; allOpaque &= (opacity >= 0.99f); } @@ -1720,21 +1722,22 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData if (texture->options & QGLContext::InvertedYBindOption) { // Flip texture y-coordinate. QGLPoint *data = textureCoordinateArray.data(); - for (int i = 0; i < 6 * dataCount; ++i) + for (int i = 0; i < 6 * fragmentCount; ++i) data[i].y = 1 - data[i].y; } transferMode(ImageArrayDrawingMode); bool isBitmap = pixmap.isQBitmap(); - bool isOpaque = !isBitmap && (!pixmap.hasAlphaChannel() || (hints & QDrawPixmaps::OpaqueHint)) && allOpaque; + bool isOpaque = !isBitmap && (!pixmap.hasAlphaChannel() || (hints & QPainter::OpaqueHint)) && allOpaque; updateTextureFilter(GL_TEXTURE_2D, GL_CLAMP_TO_EDGE, q->state()->renderHints & QPainter::SmoothPixmapTransform, texture->id); // Setup for texture drawing currentBrush = noBrush; - shaderManager->setSrcPixelType(isBitmap ? QGLEngineShaderManager::PatternSrc : QGLEngineShaderManager::ImageSrc); + shaderManager->setSrcPixelType(isBitmap ? QGLEngineShaderManager::PatternSrc + : QGLEngineShaderManager::ImageSrc); if (prepareForDraw(isOpaque)) shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::ImageTexture), QT_IMAGE_TEXTURE_UNIT); @@ -1743,7 +1746,7 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::PatternColor), col); } - glDrawArrays(GL_TRIANGLES, 0, 6 * dataCount); + glDrawArrays(GL_TRIANGLES, 0, 6 * fragmentCount); } bool QGL2PaintEngineEx::begin(QPaintDevice *pdev) diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h index d4932be..5d3608b 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h @@ -125,7 +125,7 @@ public: virtual void drawTexture(const QRectF &r, GLuint textureId, const QSize &size, const QRectF &sr); virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr); - virtual void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints); + virtual void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints); virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor); virtual void drawTextItem(const QPointF &p, const QTextItem &textItem); @@ -196,7 +196,7 @@ public: void fill(const QVectorPath &path); void stroke(const QVectorPath &path, const QPen &pen); void drawTexture(const QGLRect& dest, const QGLRect& src, const QSize &textureSize, bool opaque, bool pattern = false); - void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints); + void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints); void drawCachedGlyphs(QFontEngineGlyphCache::Type glyphType, QStaticTextItem *staticTextItem, bool includeMatrixInCache); diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index 62f0293..bc9f0c9 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -93,7 +93,7 @@ public: VGFont font; VGfloat scaleX; VGfloat scaleY; - + uint cachedGlyphsMask[256 / 32]; QSet<glyph_t> cachedGlyphs; }; @@ -3035,9 +3035,8 @@ void QVGPaintEngine::drawTiledPixmap // (i.e. no opacity), no rotation or scaling, and drawing the full // pixmap rather than parts of the pixmap. Even having just one of // these conditions will improve performance. -void QVGPaintEngine::drawPixmaps - (const QDrawPixmaps::Data *drawingData, int dataCount, - const QPixmap &pixmap, QFlags<QDrawPixmaps::DrawingHint> hints) +void QVGPaintEngine::drawPixmapFragments(const QPainter::Fragment *drawingData, int dataCount, + const QPixmap &pixmap, QFlags<QPainter::FragmentHint> hints) { #if !defined(QT_SHIVAVG) Q_D(QVGPaintEngine); @@ -3048,7 +3047,7 @@ void QVGPaintEngine::drawPixmaps if (!pd) return; // null QPixmap if (pd->classId() != QPixmapData::OpenVGClass || !d->simpleTransform) { - QPaintEngineEx::drawPixmaps(drawingData, dataCount, pixmap, hints); + QPaintEngineEx::drawPixmapFragments(drawingData, dataCount, pixmap, hints); return; } @@ -3072,7 +3071,7 @@ void QVGPaintEngine::drawPixmaps QVarLengthArray<QRect> cachedSources; // Select the opacity paint object. - if ((hints & QDrawPixmaps::OpaqueHint) != 0 && d->opacity == 1.0f) { + if ((hints & QPainter::OpaqueHint) != 0 && d->opacity == 1.0f) { d->setImageMode(VG_DRAW_IMAGE_NORMAL); } else { hints = 0; @@ -3084,12 +3083,13 @@ void QVGPaintEngine::drawPixmaps for (int i = 0; i < dataCount; ++i) { QTransform transform(d->imageTransform); - transform.translate(drawingData[i].point.x(), drawingData[i].point.y()); + transform.translate(drawingData[i].x, drawingData[i].y); transform.rotate(drawingData[i].rotation); VGImage child; QSize imageSize = vgpd->size(); - QRectF sr = drawingData[i].source; + QRectF sr(drawingData[i].sourceLeft, drawingData[i].sourceTop, + drawingData[i].width, drawingData[i].height); if (sr.topLeft().isNull() && sr.size() == imageSize) { child = vgImg; } else { @@ -3118,7 +3118,7 @@ void QVGPaintEngine::drawPixmaps transform.scale(scaleX, scaleY); d->setTransform(VG_MATRIX_IMAGE_USER_TO_SURFACE, transform); - if ((hints & QDrawPixmaps::OpaqueHint) == 0) { + if ((hints & QPainter::OpaqueHint) == 0) { qreal opacity = d->opacity * drawingData[i].opacity; if (opacity != 1.0f) { if (d->paintOpacity != opacity) { @@ -3144,7 +3144,7 @@ void QVGPaintEngine::drawPixmaps for (int i = 0; i < cachedImages.size(); ++i) vgDestroyImage(cachedImages[i]); #else - QPaintEngineEx::drawPixmaps(drawingData, dataCount, pixmap, hints); + QPaintEngineEx::drawPixmapFragments(drawingData, dataCount, pixmap, hints); #endif } @@ -3274,7 +3274,7 @@ void QVGPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem) QPaintEngineEx::drawTextItem(p, textItem); return; } - + // Get the glyphs and positions associated with the text item. QVarLengthArray<QFixedPoint> positions; QVarLengthArray<glyph_t> glyphs; @@ -3284,7 +3284,7 @@ void QVGPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem) (ti.glyphs, matrix, ti.flags, glyphs, positions); if (!drawCachedGlyphs(glyphs.size(), glyphs.data(), ti.font(), ti.fontEngine, p)) - QPaintEngineEx::drawTextItem(p, textItem); + QPaintEngineEx::drawTextItem(p, textItem); #else // OpenGL 1.0 does not have support for VGFont and glyphs, // so fall back to the default Qt path stroking algorithm. @@ -3312,7 +3312,7 @@ void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem) glyphCache = new QVGFontGlyphCache(); if (glyphCache->font == VG_INVALID_HANDLE) { qWarning("QVGPaintEngine::drawTextItem: OpenVG fonts are not supported by the OpenVG engine"); - delete glyphCache; + delete glyphCache; return false; } glyphCache->setScaleFromText(font, fontEngine); diff --git a/src/openvg/qpaintengine_vg_p.h b/src/openvg/qpaintengine_vg_p.h index 3f73fed..1203af5 100644 --- a/src/openvg/qpaintengine_vg_p.h +++ b/src/openvg/qpaintengine_vg_p.h @@ -137,7 +137,7 @@ public: void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s); - void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QFlags<QDrawPixmaps::DrawingHint> hints); + void drawPixmapFragments(const QPainter::Fragment *drawingData, int dataCount, const QPixmap &pixmap, QFlags<QPainter::FragmentHint> hints); void drawTextItem(const QPointF &p, const QTextItem &textItem); void drawStaticTextItem(QStaticTextItem *staticTextItem); diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp index a95b14b..e96b80c 100644 --- a/src/plugins/bearer/generic/qgenericengine.cpp +++ b/src/plugins/bearer/generic/qgenericengine.cpp @@ -60,6 +60,7 @@ #include <sys/ioctl.h> #include <net/if.h> #include <net/if_arp.h> +#include <unistd.h> #endif diff --git a/src/plugins/mediaservices/gstreamer/gstreamer.pro b/src/plugins/mediaservices/gstreamer/gstreamer.pro index db0ee4e..22e3c16 100644 --- a/src/plugins/mediaservices/gstreamer/gstreamer.pro +++ b/src/plugins/mediaservices/gstreamer/gstreamer.pro @@ -8,16 +8,8 @@ unix:contains(QT_CONFIG, alsa) { LIBS += -lasound } -LIBS += -lXv - -CONFIG += link_pkgconfig - -PKGCONFIG += \ - gstreamer-0.10 \ - gstreamer-base-0.10 \ - gstreamer-interfaces-0.10 \ - gstreamer-audio-0.10 \ - gstreamer-video-0.10 +QMAKE_CXXFLAGS += $$QT_CFLAGS_GSTREAMER +LIBS += -lXv $$QT_LIBS_GSTREAMER -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstbase-0.10 -lgstaudio-0.10 # Input HEADERS += \ diff --git a/src/plugins/mediaservices/mediaservices.pro b/src/plugins/mediaservices/mediaservices.pro index 0cef605..d84b276 100644 --- a/src/plugins/mediaservices/mediaservices.pro +++ b/src/plugins/mediaservices/mediaservices.pro @@ -5,16 +5,7 @@ contains(QT_CONFIG, mediaservice) { mac: SUBDIRS += qt7 - unix:!mac:!symbian { - TMP_GST_LIBS = \ - gstreamer-0.10 >= 0.10.19 \ - gstreamer-base-0.10 >= 0.10.19 \ - gstreamer-interfaces-0.10 >= 0.10.19 \ - gstreamer-audio-0.10 >= 0.10.19 \ - gstreamer-video-0.10 >= 0.10.19 - - system(pkg-config --exists \'$${TMP_GST_LIBS}\' --print-errors): { - SUBDIRS += gstreamer - } + unix:!mac:!symbian:contains(QT_CONFIG, xvideo):contains(QT_CONFIG, gstreamer) { + SUBDIRS += gstreamer } } diff --git a/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp b/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp index 1158c88..8becbf3 100644 --- a/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp +++ b/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp @@ -41,7 +41,7 @@ #include <QtDeclarative/qdeclarativeextensionplugin.h> #include <QtDeclarative/qdeclarative.h> -#include <QtMultimedia/qdeclarative.h> +#include <QtMultimedia/multimediadeclarative.h> QT_BEGIN_NAMESPACE @@ -49,9 +49,9 @@ class QMultimediaQmlModule : public QDeclarativeExtensionPlugin { Q_OBJECT public: - virtual void initialize(QDeclarativeEngine *engine, const char *uri) + virtual void registerTypes(const char *uri) { - QtMultimedia::qRegisterQmlElements(engine, uri); + QtMultimedia::qRegisterDeclarativeElements(uri); } }; diff --git a/src/plugins/qdeclarativemodules/widgets/widgets.cpp b/src/plugins/qdeclarativemodules/widgets/widgets.cpp index 7229d88..ec21cc4 100644 --- a/src/plugins/qdeclarativemodules/widgets/widgets.cpp +++ b/src/plugins/qdeclarativemodules/widgets/widgets.cpp @@ -114,15 +114,8 @@ class QWidgetsQmlModule : public QDeclarativeExtensionPlugin { Q_OBJECT public: - QStringList keys() const + virtual void registerTypes(const char *uri) { - return QStringList() << QLatin1String("Qt.widgets"); - } - - virtual void initialize(QDeclarativeEngine *engine, const char *uri) - { - Q_UNUSED(engine); - Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.widgets")); QML_REGISTER_INTERFACE(QGraphicsLayoutItem); diff --git a/src/qbase.pri b/src/qbase.pri index ef5d9e5..835ed0e 100644 --- a/src/qbase.pri +++ b/src/qbase.pri @@ -157,6 +157,7 @@ contains(QT_PRODUCT, OpenSource.*):DEFINES *= QT_OPENSOURCE DEFINES *= QT_NO_CAST_TO_ASCII QT_ASCII_CAST_WARNINGS contains(QT_CONFIG, qt3support):DEFINES *= QT3_SUPPORT DEFINES *= QT_MOC_COMPAT #we don't need warnings from calling moc code in our generated code +DEFINES *= QT_USE_FAST_OPERATOR_PLUS QT_USE_FAST_CONCATENATION TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #do this towards the end diff --git a/src/qt3support/text/q3richtext.cpp b/src/qt3support/text/q3richtext.cpp index 21383bd..8614076 100644 --- a/src/qt3support/text/q3richtext.cpp +++ b/src/qt3support/text/q3richtext.cpp @@ -6667,7 +6667,7 @@ Q3TextImage::Q3TextImage(Q3TextDocument *p, const QMap<QString, QString> &attr, imageName = attr[QLatin1String("source")]; if (!imageName.isEmpty()) { - imgId = QString::fromLatin1("%1,%2,%3,%4").arg(imageName).arg(width).arg(height).arg((ulong)&factory); + imgId = QString::fromLatin1("%1,%2,%3,%4").arg(imageName).arg(width).arg(height).arg((quintptr)&factory); if (!pixmap_map) pixmap_map = new QMap<QString, QPixmapInt>; if (pixmap_map->contains(imgId)) { diff --git a/src/qt3support/text/q3textedit.cpp b/src/qt3support/text/q3textedit.cpp index 7f51bea..d4f75ed 100644 --- a/src/qt3support/text/q3textedit.cpp +++ b/src/qt3support/text/q3textedit.cpp @@ -6238,7 +6238,7 @@ void Q3TextEdit::optimParseTags(QString * line, int lineNo, int indexOffset) } else { tmp = tagStack.isEmpty() ? 0 : tagStack.pop(); if (!tmp) { - if (((QLatin1Char('/') + cur->tag) == tag->tag) || + if ((QString(QLatin1Char('/') + cur->tag) == tag->tag) || (tag->tag == QLatin1String("/font") && cur->tag.left(4) == QLatin1String("font"))) { // set up the left and parent of this tag tag->leftTag = cur; diff --git a/src/qt3support/text/q3textstream.cpp b/src/qt3support/text/q3textstream.cpp index 41aab4d..8c86c7c 100644 --- a/src/qt3support/text/q3textstream.cpp +++ b/src/qt3support/text/q3textstream.cpp @@ -2084,7 +2084,7 @@ Q3TextStream &Q3TextStream::operator<<( void *ptr ) setf( hex, basefield ); setf( showbase ); unsetf( uppercase ); - output_int( I_LONG | I_UNSIGNED, (ulong)ptr, FALSE ); + output_int( I_LONG | I_UNSIGNED, (quintptr)ptr, FALSE ); flags( f ); return *this; } diff --git a/src/qt3support/tools/q3gcache.cpp b/src/qt3support/tools/q3gcache.cpp index a31f827..ada8330 100644 --- a/src/qt3support/tools/q3gcache.cpp +++ b/src/qt3support/tools/q3gcache.cpp @@ -226,7 +226,7 @@ public: bool remove_ascii(Q3CacheItem *item) { return Q3GDict::remove_ascii((const char *)item->key,item); } bool remove_int(Q3CacheItem *item) - { return Q3GDict::remove_int((long)item->key,item);} + { return Q3GDict::remove_int((quintptr)item->key,item);} void statistics() { Q3GDict::statistics(); } @@ -426,7 +426,7 @@ bool Q3GCache::insert_other(const char *key, Q3PtrCollection::Item data, if (keytype == AsciiKey) dict->insert_ascii(key, ci); else - dict->insert_int((long)key, ci); + dict->insert_int((quintptr)key, ci); tCost += cost; return true; } @@ -486,7 +486,7 @@ Q3PtrCollection::Item Q3GCache::take_other(const char *key) if (keytype == AsciiKey) ci = dict->take_ascii(key); else - ci = dict->take_int((long)key); + ci = dict->take_int((quintptr)key); Item d; if (ci) { d = ci->data; @@ -563,7 +563,7 @@ Q3PtrCollection::Item Q3GCache::find_string(const QString &key, bool ref) const Q3PtrCollection::Item Q3GCache::find_other(const char *key, bool ref) const { Q3CacheItem *ci = keytype == AsciiKey ? dict->find_ascii(key) - : dict->find_int((long)key); + : dict->find_int((quintptr)key); #if defined(QT_DEBUG) lruList->finds++; #endif @@ -811,7 +811,7 @@ const char *Q3GCacheIterator::getKeyAscii() const long Q3GCacheIterator::getKeyInt() const { Q3CacheItem *item = it->current(); - return item ? (long)item->key : 0; + return item ? (quintptr)item->key : 0; } /*! diff --git a/src/qt3support/tools/q3gdict.cpp b/src/qt3support/tools/q3gdict.cpp index a968407..e8144fe 100644 --- a/src/qt3support/tools/q3gdict.cpp +++ b/src/qt3support/tools/q3gdict.cpp @@ -437,7 +437,7 @@ Q3PtrCollection::Item Q3GDict::look_int(long key, Q3PtrCollection::Item d, int o Q3PtrCollection::Item Q3GDict::look_ptr(void *key, Q3PtrCollection::Item d, int op) { Q3PtrBucket *n; - int index = (int)((ulong)key % vlen); // simple hash + int index = (int)((quintptr)key % vlen); // simple hash if (op == op_find) { // find for (n=(Q3PtrBucket*)vec[index]; n; n=(Q3PtrBucket*)n->getNext()) { @@ -650,7 +650,7 @@ Q3PtrBucket *Q3GDict::unlink_ptr(void *key, Q3PtrCollection::Item d) return 0; Q3PtrBucket *n; Q3PtrBucket *prev = 0; - int index = (int)((ulong)key % vlen); + int index = (int)((quintptr)key % vlen); for (n=(Q3PtrBucket *)vec[index]; n; n=(Q3PtrBucket *)n->getNext()) { bool found = (n->getKey() == key); if (found && d) diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp index b5c85e6..de2be89 100644 --- a/src/sql/drivers/oci/qsql_oci.cpp +++ b/src/sql/drivers/oci/qsql_oci.cpp @@ -56,6 +56,12 @@ #include <qvector.h> #include <qdebug.h> +// This is needed for oracle oci when compiling with mingw-w64 headers +#if defined(__MINGW64_VERSION_MAJOR) && defined(_WIN64) +#define _int64 __int64 +#endif + + #include <oci.h> #ifdef max #undef max diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index fab3ab3..9f7d267 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE #define ODBC_CHECK_DRIVER // newer platform SDKs use SQLLEN instead of SQLINTEGER -#if defined(WIN32) && (_MSC_VER < 1300) +#if defined(WIN32) && (_MSC_VER < 1300) && !defined(__MINGW64_VERSION_MAJOR) # define QSQLLEN SQLINTEGER # define QSQLULEN SQLUINTEGER #else diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 669213c..42ff523 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -41,7 +41,7 @@ SUBDIRS += \ qdeclarativelanguage \ # Cover qdeclarativelistreference \ # Cover qdeclarativelistmodel \ # Cover - qdeclarativemetaproperty \ # Cover + qdeclarativeproperty \ # Cover qdeclarativemetatype \ # Cover qdeclarativemoduleplugin \ # Cover qdeclarativenumberformatter \ # Cover diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp index 8d5a1f6..0c3ca76 100644 --- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp +++ b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp @@ -49,7 +49,7 @@ #include <QtDeclarative/qdeclarativecontext.h> #include <QtDeclarative/qdeclarativecomponent.h> #include <QtDeclarative/qdeclarativeexpression.h> -#include <QtDeclarative/qdeclarativemetaproperty.h> +#include <QtDeclarative/qdeclarativeproperty.h> #include <private/qdeclarativebinding_p.h> #include <private/qdeclarativedebug_p.h> @@ -58,7 +58,7 @@ #include <private/qdeclarativedebugservice_p.h> #include <private/qdeclarativerectangle_p.h> #include <private/qdeclarativemetatype_p.h> -#include <private/qdeclarativemetaproperty_p.h> +#include <private/qdeclarativeproperty_p.h> #include "../shared/debugutil_p.h" @@ -218,7 +218,7 @@ void tst_QDeclarativeDebug::recursiveObjectTest(QObject *o, const QDeclarativeDe QCOMPARE(p.valueTypeName(), QString::fromUtf8(pmeta.typeName())); QDeclarativeAbstractBinding *binding = - QDeclarativeMetaPropertyPrivate::binding(QDeclarativeMetaProperty(o, p.name())); + QDeclarativePropertyPrivate::binding(QDeclarativeProperty(o, p.name())); if (binding) QCOMPARE(binding->expression(), p.binding()); diff --git a/tests/auto/declarative/qdeclarativelanguage/testtypes.h b/tests/auto/declarative/qdeclarativelanguage/testtypes.h index fc1ede7..8ac7aa6 100644 --- a/tests/auto/declarative/qdeclarativelanguage/testtypes.h +++ b/tests/auto/declarative/qdeclarativelanguage/testtypes.h @@ -52,7 +52,7 @@ #include <QtDeclarative/qdeclarativeparserstatus.h> #include <QtDeclarative/qdeclarativepropertyvaluesource.h> #include <QtDeclarative/qdeclarativescriptstring.h> -#include <QtDeclarative/qdeclarativemetaproperty.h> +#include <QtDeclarative/qdeclarativeproperty.h> QVariant myCustomVariantTypeConverter(const QString &data); @@ -480,8 +480,8 @@ public: MyPropertyValueSource() : QDeclarativePropertyValueSource() {} - QDeclarativeMetaProperty prop; - virtual void setTarget(const QDeclarativeMetaProperty &p) + QDeclarativeProperty prop; + virtual void setTarget(const QDeclarativeProperty &p) { prop = p; } diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index 2907757..1ba4454 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -46,7 +46,7 @@ #include <QtCore/qfileinfo.h> #include <QtCore/qdir.h> -#include <private/qdeclarativemetaproperty_p.h> +#include <private/qdeclarativeproperty_p.h> #include <private/qdeclarativemetatype_p.h> #include "testtypes.h" @@ -747,14 +747,14 @@ void tst_qdeclarativelanguage::valueTypes() // ### #if 0 - QDeclarativeMetaProperty p(object, "rectProperty.x"); + QDeclarativeProperty p(object, "rectProperty.x"); QCOMPARE(p.read(), QVariant(12)); p.write(13); QCOMPARE(p.read(), QVariant(13)); - quint32 r = QDeclarativeMetaPropertyPrivate::saveValueType(p.coreIndex(), p.valueTypeCoreIndex()); - QDeclarativeMetaProperty p2; - QDeclarativeMetaPropertyPrivate::restore(p2, r, object); + quint32 r = QDeclarativePropertyPrivate::saveValueType(p.coreIndex(), p.valueTypeCoreIndex()); + QDeclarativeProperty p2; + QDeclarativePropertyPrivate::restore(p2, r, object); QCOMPARE(p2.read(), QVariant(13)); #endif } diff --git a/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp b/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp index fdcb98a..1b7af19 100644 --- a/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp +++ b/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp @@ -47,7 +47,7 @@ #include <QDeclarativeComponent> #include <QtDeclarative/qdeclarative.h> #include <QtDeclarative/qdeclarativeprivate.h> -#include <QtDeclarative/qdeclarativemetaproperty.h> +#include <QtDeclarative/qdeclarativeproperty.h> #include <QDebug> inline QUrl TEST_FILE(const QString &filename) @@ -530,7 +530,7 @@ void tst_qdeclarativelistreference::qmlmetaproperty() tt.data.append(0); tt.data.append(&tt); - QDeclarativeMetaProperty prop(&tt, QLatin1String("data")); + QDeclarativeProperty prop(&tt, QLatin1String("data")); QVariant v = prop.read(); QVERIFY(v.userType() == qMetaTypeId<QDeclarativeListReference>()); QDeclarativeListReference ref = qvariant_cast<QDeclarativeListReference>(v); @@ -546,11 +546,11 @@ void tst_qdeclarativelistreference::engineTypes() QObject *o = component.create(); QVERIFY(o); - QDeclarativeMetaProperty p1(o, QLatin1String("myList")); - QVERIFY(p1.propertyTypeCategory() == QDeclarativeMetaProperty::Normal); + QDeclarativeProperty p1(o, QLatin1String("myList")); + QVERIFY(p1.propertyTypeCategory() == QDeclarativeProperty::Normal); - QDeclarativeMetaProperty p2(o, QLatin1String("myList"), engine.rootContext()); - QVERIFY(p2.propertyTypeCategory() == QDeclarativeMetaProperty::List); + QDeclarativeProperty p2(o, QLatin1String("myList"), engine.rootContext()); + QVERIFY(p2.propertyTypeCategory() == QDeclarativeProperty::List); QVariant v = p2.read(); QVERIFY(v.userType() == qMetaTypeId<QDeclarativeListReference>()); QDeclarativeListReference ref = qvariant_cast<QDeclarativeListReference>(v); diff --git a/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp b/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp index 4333e02..818f108 100644 --- a/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp +++ b/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp @@ -97,7 +97,7 @@ class ValueSourceTestType : public QObject, public QDeclarativePropertyValueSour Q_OBJECT Q_INTERFACES(QDeclarativePropertyValueSource) public: - virtual void setTarget(const QDeclarativeMetaProperty &) {} + virtual void setTarget(const QDeclarativeProperty &) {} }; QML_DECLARE_TYPE(ValueSourceTestType); @@ -106,7 +106,7 @@ class ValueInterceptorTestType : public QObject, public QDeclarativePropertyValu Q_OBJECT Q_INTERFACES(QDeclarativePropertyValueInterceptor) public: - virtual void setTarget(const QDeclarativeMetaProperty &) {} + virtual void setTarget(const QDeclarativeProperty &) {} virtual void write(const QVariant &) {} }; QML_DECLARE_TYPE(ValueInterceptorTestType); diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/com/nokia/AutoTestQmlPluginType/qmldir b/tests/auto/declarative/qdeclarativemoduleplugin/com/nokia/AutoTestQmlPluginType/qmldir new file mode 100644 index 0000000..0a8b5d4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativemoduleplugin/com/nokia/AutoTestQmlPluginType/qmldir @@ -0,0 +1 @@ +plugin plugin diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.cpp b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.cpp index 154693c..fd94cc6 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.cpp +++ b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.cpp @@ -73,15 +73,10 @@ public: qWarning("plugin created"); } - QStringList keys() const - { - return QStringList() << QLatin1String("com.nokia.AutoTestQmlPluginType"); - } - - void initialize(QDeclarativeEngine*, const char *uri) + void registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == "com.nokia.AutoTestQmlPluginType"); - QML_REGISTER_TYPE(com.nokia.AutoTestQmlPluginType,1,0,MyPluginType,MyPluginType); + qmlRegisterType<MyPluginType>(uri, 1, 0, "MyPluginType"); } }; diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro index 348080d..035cb7d 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro @@ -2,4 +2,5 @@ TEMPLATE = lib CONFIG += plugin SOURCES = plugin.cpp QT = core declarative -DESTDIR = qdeclarativemodules +DESTDIR = ../com/nokia/AutoTestQmlPluginType + diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro index dd65511..d895ed0 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro @@ -1,4 +1,5 @@ load(qttest_p4) SOURCES = tst_qdeclarativemoduleplugin.cpp QT += declarative +CONFIG -= app_bundle DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro index 7170469..22e50cc 100644 --- a/tests/auto/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro +++ b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro @@ -2,4 +2,4 @@ load(qttest_p4) contains(QT_CONFIG,declarative): QT += declarative macx:CONFIG -= app_bundle -SOURCES += tst_qdeclarativemetaproperty.cpp +SOURCES += tst_qdeclarativeproperty.cpp diff --git a/tests/auto/declarative/qdeclarativemetaproperty/tst_qdeclarativemetaproperty.cpp b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp index f2ed341..a3aefe3 100644 --- a/tests/auto/declarative/qdeclarativemetaproperty/tst_qdeclarativemetaproperty.cpp +++ b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp @@ -41,8 +41,8 @@ #include <qtest.h> #include <QtDeclarative/qdeclarativeengine.h> #include <QtDeclarative/qdeclarativecomponent.h> -#include <QtDeclarative/qdeclarativemetaproperty.h> -#include <QtDeclarative/private/qdeclarativemetaproperty_p.h> +#include <QtDeclarative/qdeclarativeproperty.h> +#include <QtDeclarative/private/qdeclarativeproperty_p.h> #include <private/qguard_p.h> #include <private/qdeclarativebinding_p.h> #include <QtGui/QLineEdit> @@ -90,11 +90,11 @@ private: QML_DECLARE_TYPE(MyContainer); QML_DECLARE_TYPEINFO(MyContainer, QML_HAS_ATTACHED_PROPERTIES) -class tst_qdeclarativemetaproperty : public QObject +class tst_qdeclarativeproperty : public QObject { Q_OBJECT public: - tst_qdeclarativemetaproperty() {} + tst_qdeclarativeproperty() {} private slots: void initTestCase(); @@ -126,9 +126,9 @@ private: QDeclarativeEngine engine; }; -void tst_qdeclarativemetaproperty::qmlmetaproperty() +void tst_qdeclarativeproperty::qmlmetaproperty() { - QDeclarativeMetaProperty prop; + QDeclarativeProperty prop; QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); QVERIFY(binding != 0); @@ -149,7 +149,7 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty() QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false); QCOMPARE(prop.connectNotifier(obj, -1), false); QVERIFY(prop.method().signature() == 0); - QCOMPARE(prop.type(), QDeclarativeMetaProperty::Invalid); + QCOMPARE(prop.type(), QDeclarativeProperty::Invalid); QCOMPARE(prop.isProperty(), false); QCOMPARE(prop.isDefault(), false); QCOMPARE(prop.isWritable(), false); @@ -157,18 +157,18 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty() QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), false); QCOMPARE(prop.object(), (QObject *)0); - QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory); + QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory); QCOMPARE(prop.propertyType(), 0); QCOMPARE(prop.propertyTypeName(), (const char *)0); QVERIFY(prop.property().name() == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); QVERIFY(binding == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); QVERIFY(expression == 0); QCOMPARE(prop.coreIndex(), -1); - QCOMPARE(prop.valueTypeCoreIndex(), -1); + QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); delete obj; } @@ -216,13 +216,13 @@ private: QML_DECLARE_TYPE(PropertyObject); -void tst_qdeclarativemetaproperty::qmlmetaproperty_object() +void tst_qdeclarativeproperty::qmlmetaproperty_object() { QObject object; // Has no default property PropertyObject dobject; // Has default property { - QDeclarativeMetaProperty prop(&object); + QDeclarativeProperty prop(&object); QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); QVERIFY(binding != 0); @@ -243,7 +243,7 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object() QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false); QCOMPARE(prop.connectNotifier(obj, -1), false); QVERIFY(prop.method().signature() == 0); - QCOMPARE(prop.type(), QDeclarativeMetaProperty::Invalid); + QCOMPARE(prop.type(), QDeclarativeProperty::Invalid); QCOMPARE(prop.isProperty(), false); QCOMPARE(prop.isDefault(), false); QCOMPARE(prop.isWritable(), false); @@ -251,24 +251,24 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object() QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), false); QCOMPARE(prop.object(), (QObject *)0); - QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory); + QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory); QCOMPARE(prop.propertyType(), 0); QCOMPARE(prop.propertyTypeName(), (const char *)0); QVERIFY(prop.property().name() == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); QVERIFY(binding == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); QVERIFY(expression == 0); QCOMPARE(prop.coreIndex(), -1); - QCOMPARE(prop.valueTypeCoreIndex(), -1); + QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); delete obj; } { - QDeclarativeMetaProperty prop(&dobject); + QDeclarativeProperty prop(&dobject); QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); binding->setTarget(prop); @@ -290,7 +290,7 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object() QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false); QCOMPARE(prop.connectNotifier(obj, -1), false); QVERIFY(prop.method().signature() == 0); - QCOMPARE(prop.type(), (QDeclarativeMetaProperty::Type)(QDeclarativeMetaProperty::Property | QDeclarativeMetaProperty::Default)); + QCOMPARE(prop.type(), (QDeclarativeProperty::Type)(QDeclarativeProperty::Property | QDeclarativeProperty::Default)); QCOMPARE(prop.isProperty(), true); QCOMPARE(prop.isDefault(), true); QCOMPARE(prop.isWritable(), false); @@ -298,32 +298,32 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object() QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); QCOMPARE(prop.object(), &dobject); - QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::Normal); + QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(prop.propertyType(), (int)QVariant::Int); QCOMPARE(prop.propertyTypeName(), "int"); QCOMPARE(QString(prop.property().name()), QString("defaultProperty")); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int"); - QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); QVERIFY(binding != 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == binding); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); QVERIFY(expression == 0); QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfProperty("defaultProperty")); - QCOMPARE(prop.valueTypeCoreIndex(), -1); + QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); delete obj; } } -void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string() +void tst_qdeclarativeproperty::qmlmetaproperty_object_string() { QObject object; PropertyObject dobject; { - QDeclarativeMetaProperty prop(&object, QString("defaultProperty")); + QDeclarativeProperty prop(&object, QString("defaultProperty")); QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); QVERIFY(binding != 0); @@ -344,7 +344,7 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string() QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false); QCOMPARE(prop.connectNotifier(obj, -1), false); QVERIFY(prop.method().signature() == 0); - QCOMPARE(prop.type(), QDeclarativeMetaProperty::Invalid); + QCOMPARE(prop.type(), QDeclarativeProperty::Invalid); QCOMPARE(prop.isProperty(), false); QCOMPARE(prop.isDefault(), false); QCOMPARE(prop.isWritable(), false); @@ -352,24 +352,24 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string() QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), false); QCOMPARE(prop.object(), (QObject *)0); - QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory); + QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory); QCOMPARE(prop.propertyType(), 0); QCOMPARE(prop.propertyTypeName(), (const char *)0); QVERIFY(prop.property().name() == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); QVERIFY(binding == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); QVERIFY(expression == 0); QCOMPARE(prop.coreIndex(), -1); - QCOMPARE(prop.valueTypeCoreIndex(), -1); + QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); delete obj; } { - QDeclarativeMetaProperty prop(&dobject, QString("defaultProperty")); + QDeclarativeProperty prop(&dobject, QString("defaultProperty")); QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); binding->setTarget(prop); @@ -391,7 +391,7 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string() QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false); QCOMPARE(prop.connectNotifier(obj, -1), false); QVERIFY(prop.method().signature() == 0); - QCOMPARE(prop.type(), QDeclarativeMetaProperty::Property); + QCOMPARE(prop.type(), QDeclarativeProperty::Property); QCOMPARE(prop.isProperty(), true); QCOMPARE(prop.isDefault(), false); QCOMPARE(prop.isWritable(), false); @@ -399,26 +399,26 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string() QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); QCOMPARE(prop.object(), &dobject); - QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::Normal); + QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(prop.propertyType(), (int)QVariant::Int); QCOMPARE(prop.propertyTypeName(), "int"); QCOMPARE(QString(prop.property().name()), QString("defaultProperty")); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int"); - QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); QVERIFY(binding != 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == binding); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); QVERIFY(expression == 0); QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfProperty("defaultProperty")); - QCOMPARE(prop.valueTypeCoreIndex(), -1); + QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); delete obj; } { - QDeclarativeMetaProperty prop(&dobject, QString("onClicked")); + QDeclarativeProperty prop(&dobject, QString("onClicked")); QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); binding->setTarget(prop); @@ -440,7 +440,7 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string() QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false); QCOMPARE(prop.connectNotifier(obj, -1), false); QCOMPARE(QString(prop.method().signature()), QString("clicked()")); - QCOMPARE(prop.type(), QDeclarativeMetaProperty::SignalProperty); + QCOMPARE(prop.type(), QDeclarativeProperty::SignalProperty); QCOMPARE(prop.isProperty(), false); QCOMPARE(prop.isDefault(), false); QCOMPARE(prop.isWritable(), false); @@ -448,19 +448,19 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string() QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); QCOMPARE(prop.object(), &dobject); - QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory); + QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory); QCOMPARE(prop.propertyType(), 0); QCOMPARE(prop.propertyTypeName(), (const char *)0); QCOMPARE(prop.property().name(), (const char *)0); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); QVERIFY(binding == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); QVERIFY(expression != 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == expression); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression); QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfMethod("clicked()")); - QCOMPARE(prop.valueTypeCoreIndex(), -1); + QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); delete obj; } @@ -514,13 +514,13 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string() } } -void tst_qdeclarativemetaproperty::qmlmetaproperty_object_context() +void tst_qdeclarativeproperty::qmlmetaproperty_object_context() { QObject object; // Has no default property PropertyObject dobject; // Has default property { - QDeclarativeMetaProperty prop(&object, engine.rootContext()); + QDeclarativeProperty prop(&object, engine.rootContext()); QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); QVERIFY(binding != 0); @@ -541,7 +541,7 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_context() QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false); QCOMPARE(prop.connectNotifier(obj, -1), false); QVERIFY(prop.method().signature() == 0); - QCOMPARE(prop.type(), QDeclarativeMetaProperty::Invalid); + QCOMPARE(prop.type(), QDeclarativeProperty::Invalid); QCOMPARE(prop.isProperty(), false); QCOMPARE(prop.isDefault(), false); QCOMPARE(prop.isWritable(), false); @@ -549,24 +549,24 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_context() QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), false); QCOMPARE(prop.object(), (QObject *)0); - QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory); + QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory); QCOMPARE(prop.propertyType(), 0); QCOMPARE(prop.propertyTypeName(), (const char *)0); QVERIFY(prop.property().name() == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); QVERIFY(binding == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); QVERIFY(expression == 0); QCOMPARE(prop.coreIndex(), -1); - QCOMPARE(prop.valueTypeCoreIndex(), -1); + QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); delete obj; } { - QDeclarativeMetaProperty prop(&dobject, engine.rootContext()); + QDeclarativeProperty prop(&dobject, engine.rootContext()); QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); binding->setTarget(prop); @@ -588,7 +588,7 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_context() QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false); QCOMPARE(prop.connectNotifier(obj, -1), false); QVERIFY(prop.method().signature() == 0); - QCOMPARE(prop.type(), (QDeclarativeMetaProperty::Type)(QDeclarativeMetaProperty::Property | QDeclarativeMetaProperty::Default)); + QCOMPARE(prop.type(), (QDeclarativeProperty::Type)(QDeclarativeProperty::Property | QDeclarativeProperty::Default)); QCOMPARE(prop.isProperty(), true); QCOMPARE(prop.isDefault(), true); QCOMPARE(prop.isWritable(), false); @@ -596,32 +596,32 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_context() QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); QCOMPARE(prop.object(), &dobject); - QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::Normal); + QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(prop.propertyType(), (int)QVariant::Int); QCOMPARE(prop.propertyTypeName(), "int"); QCOMPARE(QString(prop.property().name()), QString("defaultProperty")); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int"); - QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); QVERIFY(binding != 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == binding); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); QVERIFY(expression == 0); QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfProperty("defaultProperty")); - QCOMPARE(prop.valueTypeCoreIndex(), -1); + QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); delete obj; } } -void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context() +void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context() { QObject object; PropertyObject dobject; { - QDeclarativeMetaProperty prop(&object, QString("defaultProperty"), engine.rootContext()); + QDeclarativeProperty prop(&object, QString("defaultProperty"), engine.rootContext()); QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); QVERIFY(binding != 0); @@ -642,7 +642,7 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context() QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false); QCOMPARE(prop.connectNotifier(obj, -1), false); QVERIFY(prop.method().signature() == 0); - QCOMPARE(prop.type(), QDeclarativeMetaProperty::Invalid); + QCOMPARE(prop.type(), QDeclarativeProperty::Invalid); QCOMPARE(prop.isProperty(), false); QCOMPARE(prop.isDefault(), false); QCOMPARE(prop.isWritable(), false); @@ -650,24 +650,24 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context() QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), false); QCOMPARE(prop.object(), (QObject *)0); - QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory); + QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory); QCOMPARE(prop.propertyType(), 0); QCOMPARE(prop.propertyTypeName(), (const char *)0); QVERIFY(prop.property().name() == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); QVERIFY(binding == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); QVERIFY(expression == 0); QCOMPARE(prop.coreIndex(), -1); - QCOMPARE(prop.valueTypeCoreIndex(), -1); + QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); delete obj; } { - QDeclarativeMetaProperty prop(&dobject, QString("defaultProperty"), engine.rootContext()); + QDeclarativeProperty prop(&dobject, QString("defaultProperty"), engine.rootContext()); QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); binding->setTarget(prop); @@ -689,7 +689,7 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context() QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false); QCOMPARE(prop.connectNotifier(obj, -1), false); QVERIFY(prop.method().signature() == 0); - QCOMPARE(prop.type(), QDeclarativeMetaProperty::Property); + QCOMPARE(prop.type(), QDeclarativeProperty::Property); QCOMPARE(prop.isProperty(), true); QCOMPARE(prop.isDefault(), false); QCOMPARE(prop.isWritable(), false); @@ -697,26 +697,26 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context() QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); QCOMPARE(prop.object(), &dobject); - QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::Normal); + QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(prop.propertyType(), (int)QVariant::Int); QCOMPARE(prop.propertyTypeName(), "int"); QCOMPARE(QString(prop.property().name()), QString("defaultProperty")); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int"); - QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); QVERIFY(binding != 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == binding); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); QVERIFY(expression == 0); QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfProperty("defaultProperty")); - QCOMPARE(prop.valueTypeCoreIndex(), -1); + QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); delete obj; } { - QDeclarativeMetaProperty prop(&dobject, QString("onClicked"), engine.rootContext()); + QDeclarativeProperty prop(&dobject, QString("onClicked"), engine.rootContext()); QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); binding->setTarget(prop); @@ -738,7 +738,7 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context() QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false); QCOMPARE(prop.connectNotifier(obj, -1), false); QCOMPARE(QString(prop.method().signature()), QString("clicked()")); - QCOMPARE(prop.type(), QDeclarativeMetaProperty::SignalProperty); + QCOMPARE(prop.type(), QDeclarativeProperty::SignalProperty); QCOMPARE(prop.isProperty(), false); QCOMPARE(prop.isDefault(), false); QCOMPARE(prop.isWritable(), false); @@ -746,19 +746,19 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context() QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); QCOMPARE(prop.object(), &dobject); - QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory); + QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory); QCOMPARE(prop.propertyType(), 0); QCOMPARE(prop.propertyTypeName(), (const char *)0); QCOMPARE(prop.property().name(), (const char *)0); - QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); QVERIFY(binding == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); QVERIFY(expression != 0); - QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == expression); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression); QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfMethod("clicked()")); - QCOMPARE(prop.valueTypeCoreIndex(), -1); + QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); delete obj; } @@ -812,34 +812,34 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context() } } -void tst_qdeclarativemetaproperty::name() +void tst_qdeclarativeproperty::name() { { - QDeclarativeMetaProperty p; + QDeclarativeProperty p; QCOMPARE(p.name(), QString()); } { PropertyObject o; - QDeclarativeMetaProperty p(&o); + QDeclarativeProperty p(&o); QCOMPARE(p.name(), QString("defaultProperty")); } { QObject o; - QDeclarativeMetaProperty p(&o, QString("objectName")); + QDeclarativeProperty p(&o, QString("objectName")); QCOMPARE(p.name(), QString("objectName")); } { PropertyObject o; - QDeclarativeMetaProperty p(&o, "onClicked"); + QDeclarativeProperty p(&o, "onClicked"); QCOMPARE(p.name(), QString("onClicked")); } { QObject o; - QDeclarativeMetaProperty p(&o, "onClicked"); + QDeclarativeProperty p(&o, "onClicked"); QCOMPARE(p.name(), QString()); } @@ -857,53 +857,53 @@ void tst_qdeclarativemetaproperty::name() { QObject o; - QDeclarativeMetaProperty p(&o, "foo"); + QDeclarativeProperty p(&o, "foo"); QCOMPARE(p.name(), QString()); } { - QDeclarativeMetaProperty p(0, "foo"); + QDeclarativeProperty p(0, "foo"); QCOMPARE(p.name(), QString()); } { PropertyObject o; - QDeclarativeMetaProperty p(&o, "rectProperty"); + QDeclarativeProperty p(&o, "rectProperty"); QCOMPARE(p.name(), QString("rectProperty")); } { PropertyObject o; - QDeclarativeMetaProperty p(&o, "rectProperty.x"); + QDeclarativeProperty p(&o, "rectProperty.x"); QCOMPARE(p.name(), QString("rectProperty.x")); } { PropertyObject o; - QDeclarativeMetaProperty p(&o, "rectProperty.foo"); + QDeclarativeProperty p(&o, "rectProperty.foo"); QCOMPARE(p.name(), QString()); } } -void tst_qdeclarativemetaproperty::read() +void tst_qdeclarativeproperty::read() { // Invalid { - QDeclarativeMetaProperty p; + QDeclarativeProperty p; QCOMPARE(p.read(), QVariant()); } // Default prop { PropertyObject o; - QDeclarativeMetaProperty p(&o); + QDeclarativeProperty p(&o); QCOMPARE(p.read(), QVariant(10)); } // Invalid default prop { QObject o; - QDeclarativeMetaProperty p(&o); + QDeclarativeProperty p(&o); QCOMPARE(p.read(), QVariant()); } @@ -911,7 +911,7 @@ void tst_qdeclarativemetaproperty::read() { QObject o; - QDeclarativeMetaProperty p(&o, "objectName"); + QDeclarativeProperty p(&o, "objectName"); QCOMPARE(p.read(), QVariant(QString())); o.setObjectName("myName"); @@ -922,25 +922,25 @@ void tst_qdeclarativemetaproperty::read() // Value-type prop { PropertyObject o; - QDeclarativeMetaProperty p(&o, "rectProperty.x"); + QDeclarativeProperty p(&o, "rectProperty.x"); QCOMPARE(p.read(), QVariant(10)); } // Invalid value-type prop { PropertyObject o; - QDeclarativeMetaProperty p(&o, "rectProperty.foo"); + QDeclarativeProperty p(&o, "rectProperty.foo"); QCOMPARE(p.read(), QVariant()); } // Signal property { PropertyObject o; - QDeclarativeMetaProperty p(&o, "onClicked"); + QDeclarativeProperty p(&o, "onClicked"); QCOMPARE(p.read(), QVariant()); - QVERIFY(0 == QDeclarativeMetaPropertyPrivate::setSignalExpression(p, new QDeclarativeExpression())); - QVERIFY(0 != QDeclarativeMetaPropertyPrivate::signalExpression(p)); + QVERIFY(0 == QDeclarativePropertyPrivate::setSignalExpression(p, new QDeclarativeExpression())); + QVERIFY(0 != QDeclarativePropertyPrivate::signalExpression(p)); QCOMPARE(p.read(), QVariant()); } @@ -960,7 +960,7 @@ void tst_qdeclarativemetaproperty::read() // Deleted object { PropertyObject *o = new PropertyObject; - QDeclarativeMetaProperty p(o, "rectProperty.x"); + QDeclarativeProperty p(o, "rectProperty.x"); QCOMPARE(p.read(), QVariant(10)); delete o; QCOMPARE(p.read(), QVariant()); @@ -973,7 +973,7 @@ void tst_qdeclarativemetaproperty::read() QObject *object = component.create(); QVERIFY(object != 0); - QDeclarativeMetaProperty p(object, "MyContainer.foo", qmlContext(object)); + QDeclarativeProperty p(object, "MyContainer.foo", qmlContext(object)); QCOMPARE(p.read(), QVariant(13)); delete object; } @@ -983,7 +983,7 @@ void tst_qdeclarativemetaproperty::read() QObject *object = component.create(); QVERIFY(object != 0); - QDeclarativeMetaProperty p(object, "MyContainer.foo", qmlContext(object)); + QDeclarativeProperty p(object, "MyContainer.foo", qmlContext(object)); QCOMPARE(p.read(), QVariant(10)); delete object; } @@ -993,45 +993,45 @@ void tst_qdeclarativemetaproperty::read() QObject *object = component.create(); QVERIFY(object != 0); - QDeclarativeMetaProperty p(object, "Foo.MyContainer.foo", qmlContext(object)); + QDeclarativeProperty p(object, "Foo.MyContainer.foo", qmlContext(object)); QCOMPARE(p.read(), QVariant(10)); delete object; } } -void tst_qdeclarativemetaproperty::write() +void tst_qdeclarativeproperty::write() { // Invalid { - QDeclarativeMetaProperty p; + QDeclarativeProperty p; QCOMPARE(p.write(QVariant(10)), false); } // Read-only default prop { PropertyObject o; - QDeclarativeMetaProperty p(&o); + QDeclarativeProperty p(&o); QCOMPARE(p.write(QVariant(10)), false); } // Invalid default prop { QObject o; - QDeclarativeMetaProperty p(&o); + QDeclarativeProperty p(&o); QCOMPARE(p.write(QVariant(10)), false); } // Read-only prop by name { PropertyObject o; - QDeclarativeMetaProperty p(&o, QString("defaultProperty")); + QDeclarativeProperty p(&o, QString("defaultProperty")); QCOMPARE(p.write(QVariant(10)), false); } // Writable prop by name { PropertyObject o; - QDeclarativeMetaProperty p(&o, QString("objectName")); + QDeclarativeProperty p(&o, QString("objectName")); QCOMPARE(o.objectName(), QString()); QCOMPARE(p.write(QVariant(QString("myName"))), true); QCOMPARE(o.objectName(), QString("myName")); @@ -1040,7 +1040,7 @@ void tst_qdeclarativemetaproperty::write() // Deleted object { PropertyObject *o = new PropertyObject; - QDeclarativeMetaProperty p(o, QString("objectName")); + QDeclarativeProperty p(o, QString("objectName")); QCOMPARE(p.write(QVariant(QString("myName"))), true); QCOMPARE(o->objectName(), QString("myName")); @@ -1052,15 +1052,15 @@ void tst_qdeclarativemetaproperty::write() // Signal property { PropertyObject o; - QDeclarativeMetaProperty p(&o, "onClicked"); + QDeclarativeProperty p(&o, "onClicked"); QCOMPARE(p.write(QVariant("console.log(1921)")), false); - QVERIFY(0 == QDeclarativeMetaPropertyPrivate::setSignalExpression(p, new QDeclarativeExpression())); - QVERIFY(0 != QDeclarativeMetaPropertyPrivate::signalExpression(p)); + QVERIFY(0 == QDeclarativePropertyPrivate::setSignalExpression(p, new QDeclarativeExpression())); + QVERIFY(0 != QDeclarativePropertyPrivate::signalExpression(p)); QCOMPARE(p.write(QVariant("console.log(1921)")), false); - QVERIFY(0 != QDeclarativeMetaPropertyPrivate::signalExpression(p)); + QVERIFY(0 != QDeclarativePropertyPrivate::signalExpression(p)); } // Automatic signal property @@ -1080,13 +1080,13 @@ void tst_qdeclarativemetaproperty::write() // Value-type property { PropertyObject o; - QDeclarativeMetaProperty p(&o, "wrectProperty"); + QDeclarativeProperty p(&o, "wrectProperty"); QCOMPARE(o.wrectProperty(), QRect()); QCOMPARE(p.write(QRect(1, 13, 99, 8)), true); QCOMPARE(o.wrectProperty(), QRect(1, 13, 99, 8)); - QDeclarativeMetaProperty p2(&o, "wrectProperty.x"); + QDeclarativeProperty p2(&o, "wrectProperty.x"); QCOMPARE(p2.read(), QVariant(1)); QCOMPARE(p2.write(QVariant(6)), true); QCOMPARE(p2.read(), QVariant(6)); @@ -1096,12 +1096,12 @@ void tst_qdeclarativemetaproperty::write() // URL-property { PropertyObject o; - QDeclarativeMetaProperty p(&o, "url"); + QDeclarativeProperty p(&o, "url"); QCOMPARE(p.write(QUrl("main.qml")), true); QCOMPARE(o.url(), QUrl("main.qml")); - QDeclarativeMetaProperty p2(&o, "url", engine.rootContext()); + QDeclarativeProperty p2(&o, "url", engine.rootContext()); QUrl result = engine.baseUrl().resolved(QUrl("main.qml")); QVERIFY(result != QUrl("main.qml")); @@ -1117,7 +1117,7 @@ void tst_qdeclarativemetaproperty::write() QObject *object = component.create(); QVERIFY(object != 0); - QDeclarativeMetaProperty p(object, "MyContainer.foo", qmlContext(object)); + QDeclarativeProperty p(object, "MyContainer.foo", qmlContext(object)); p.write(QVariant(99)); QCOMPARE(p.read(), QVariant(99)); delete object; @@ -1128,18 +1128,18 @@ void tst_qdeclarativemetaproperty::write() QObject *object = component.create(); QVERIFY(object != 0); - QDeclarativeMetaProperty p(object, "Foo.MyContainer.foo", qmlContext(object)); + QDeclarativeProperty p(object, "Foo.MyContainer.foo", qmlContext(object)); p.write(QVariant(99)); QCOMPARE(p.read(), QVariant(99)); delete object; } } -void tst_qdeclarativemetaproperty::reset() +void tst_qdeclarativeproperty::reset() { // Invalid { - QDeclarativeMetaProperty p; + QDeclarativeProperty p; QCOMPARE(p.isResettable(), false); QCOMPARE(p.reset(), false); } @@ -1147,7 +1147,7 @@ void tst_qdeclarativemetaproperty::reset() // Read-only default prop { PropertyObject o; - QDeclarativeMetaProperty p(&o); + QDeclarativeProperty p(&o); QCOMPARE(p.isResettable(), false); QCOMPARE(p.reset(), false); } @@ -1155,7 +1155,7 @@ void tst_qdeclarativemetaproperty::reset() // Invalid default prop { QObject o; - QDeclarativeMetaProperty p(&o); + QDeclarativeProperty p(&o); QCOMPARE(p.isResettable(), false); QCOMPARE(p.reset(), false); } @@ -1163,7 +1163,7 @@ void tst_qdeclarativemetaproperty::reset() // Non-resettable-only prop by name { PropertyObject o; - QDeclarativeMetaProperty p(&o, QString("defaultProperty")); + QDeclarativeProperty p(&o, QString("defaultProperty")); QCOMPARE(p.isResettable(), false); QCOMPARE(p.reset(), false); } @@ -1171,7 +1171,7 @@ void tst_qdeclarativemetaproperty::reset() // Resettable prop by name { PropertyObject o; - QDeclarativeMetaProperty p(&o, QString("resettableProperty")); + QDeclarativeProperty p(&o, QString("resettableProperty")); QCOMPARE(p.read(), QVariant(9)); QCOMPARE(p.write(QVariant(11)), true); @@ -1187,7 +1187,7 @@ void tst_qdeclarativemetaproperty::reset() { PropertyObject *o = new PropertyObject; - QDeclarativeMetaProperty p(o, QString("resettableProperty")); + QDeclarativeProperty p(o, QString("resettableProperty")); QCOMPARE(p.isResettable(), true); QCOMPARE(p.reset(), true); @@ -1201,7 +1201,7 @@ void tst_qdeclarativemetaproperty::reset() // Signal property { PropertyObject o; - QDeclarativeMetaProperty p(&o, "onClicked"); + QDeclarativeProperty p(&o, "onClicked"); QCOMPARE(p.isResettable(), false); QCOMPARE(p.reset(), false); @@ -1217,7 +1217,7 @@ void tst_qdeclarativemetaproperty::reset() } } -void tst_qdeclarativemetaproperty::writeObjectToList() +void tst_qdeclarativeproperty::writeObjectToList() { QDeclarativeComponent containerComponent(&engine); containerComponent.setData("import Test 1.0\nMyContainer { children: MyQmlObject {} }", QUrl()); @@ -1227,14 +1227,14 @@ void tst_qdeclarativemetaproperty::writeObjectToList() QVERIFY(list.count() == 1); MyQmlObject *object = new MyQmlObject; - QDeclarativeMetaProperty prop(container, "children"); + QDeclarativeProperty prop(container, "children"); prop.write(qVariantFromValue(object)); QCOMPARE(list.count(), 1); QCOMPARE(list.at(0), object); } Q_DECLARE_METATYPE(QList<QObject *>); -void tst_qdeclarativemetaproperty::writeListToList() +void tst_qdeclarativeproperty::writeListToList() { QDeclarativeComponent containerComponent(&engine); containerComponent.setData("import Test 1.0\nMyContainer { children: MyQmlObject {} }", QUrl()); @@ -1245,7 +1245,7 @@ void tst_qdeclarativemetaproperty::writeListToList() QList<QObject*> objList; objList << new MyQmlObject() << new MyQmlObject() << new MyQmlObject() << new MyQmlObject(); - QDeclarativeMetaProperty prop(container, "children"); + QDeclarativeProperty prop(container, "children"); prop.write(qVariantFromValue(objList)); QCOMPARE(list.count(), 4); @@ -1256,7 +1256,7 @@ void tst_qdeclarativemetaproperty::writeListToList() QCOMPARE(container->children()->size(), 1);*/ } -void tst_qdeclarativemetaproperty::crashOnValueProperty() +void tst_qdeclarativeproperty::crashOnValueProperty() { QDeclarativeEngine *engine = new QDeclarativeEngine; QDeclarativeComponent component(engine); @@ -1265,7 +1265,7 @@ void tst_qdeclarativemetaproperty::crashOnValueProperty() PropertyObject *obj = qobject_cast<PropertyObject*>(component.create()); QVERIFY(obj != 0); - QDeclarativeMetaProperty p(obj, "wrectProperty.x", qmlContext(obj)); + QDeclarativeProperty p(obj, "wrectProperty.x", qmlContext(obj)); QCOMPARE(p.name(), QString("wrectProperty.x")); QCOMPARE(p.read(), QVariant(10)); @@ -1280,49 +1280,49 @@ void tst_qdeclarativemetaproperty::crashOnValueProperty() QCOMPARE(p.read(), QVariant(20)); } -void tst_qdeclarativemetaproperty::copy() +void tst_qdeclarativeproperty::copy() { PropertyObject object; - QDeclarativeMetaProperty *property = new QDeclarativeMetaProperty(&object, QLatin1String("defaultProperty")); + QDeclarativeProperty *property = new QDeclarativeProperty(&object, QLatin1String("defaultProperty")); QCOMPARE(property->name(), QString("defaultProperty")); QCOMPARE(property->read(), QVariant(10)); - QCOMPARE(property->type(), QDeclarativeMetaProperty::Property); - QCOMPARE(property->propertyTypeCategory(), QDeclarativeMetaProperty::Normal); + QCOMPARE(property->type(), QDeclarativeProperty::Property); + QCOMPARE(property->propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(property->propertyType(), (int)QVariant::Int); - QDeclarativeMetaProperty p1(*property); + QDeclarativeProperty p1(*property); QCOMPARE(p1.name(), QString("defaultProperty")); QCOMPARE(p1.read(), QVariant(10)); - QCOMPARE(p1.type(), QDeclarativeMetaProperty::Property); - QCOMPARE(p1.propertyTypeCategory(), QDeclarativeMetaProperty::Normal); + QCOMPARE(p1.type(), QDeclarativeProperty::Property); + QCOMPARE(p1.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(p1.propertyType(), (int)QVariant::Int); - QDeclarativeMetaProperty p2(&object, QLatin1String("url")); + QDeclarativeProperty p2(&object, QLatin1String("url")); QCOMPARE(p2.name(), QString("url")); p2 = *property; QCOMPARE(p2.name(), QString("defaultProperty")); QCOMPARE(p2.read(), QVariant(10)); - QCOMPARE(p2.type(), QDeclarativeMetaProperty::Property); - QCOMPARE(p2.propertyTypeCategory(), QDeclarativeMetaProperty::Normal); + QCOMPARE(p2.type(), QDeclarativeProperty::Property); + QCOMPARE(p2.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(p2.propertyType(), (int)QVariant::Int); delete property; property = 0; QCOMPARE(p1.name(), QString("defaultProperty")); QCOMPARE(p1.read(), QVariant(10)); - QCOMPARE(p1.type(), QDeclarativeMetaProperty::Property); - QCOMPARE(p1.propertyTypeCategory(), QDeclarativeMetaProperty::Normal); + QCOMPARE(p1.type(), QDeclarativeProperty::Property); + QCOMPARE(p1.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(p1.propertyType(), (int)QVariant::Int); QCOMPARE(p2.name(), QString("defaultProperty")); QCOMPARE(p2.read(), QVariant(10)); - QCOMPARE(p2.type(), QDeclarativeMetaProperty::Property); - QCOMPARE(p2.propertyTypeCategory(), QDeclarativeMetaProperty::Normal); + QCOMPARE(p2.type(), QDeclarativeProperty::Property); + QCOMPARE(p2.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(p2.propertyType(), (int)QVariant::Int); } -void tst_qdeclarativemetaproperty::initTestCase() +void tst_qdeclarativeproperty::initTestCase() { QML_REGISTER_TYPE(Test,1,0,MyQmlObject,MyQmlObject); QML_REGISTER_TYPE(Test,1,0,PropertyObject,PropertyObject); @@ -1330,6 +1330,6 @@ void tst_qdeclarativemetaproperty::initTestCase() } -QTEST_MAIN(tst_qdeclarativemetaproperty) +QTEST_MAIN(tst_qdeclarativeproperty) -#include "tst_qdeclarativemetaproperty.moc" +#include "tst_qdeclarativeproperty.moc" diff --git a/tests/auto/declarative/qdeclarativestates/data/reset.qml b/tests/auto/declarative/qdeclarativestates/data/reset.qml new file mode 100644 index 0000000..a0a2b8c --- /dev/null +++ b/tests/auto/declarative/qdeclarativestates/data/reset.qml @@ -0,0 +1,20 @@ +import Qt 4.6 + +Rectangle { + width: 640 + height: 480 + Text { + id: theText + width: 50 + wrap: true + text: "a text string that is longer than 50 pixels" + } + + states: State { + name: "state1" + PropertyChanges { + target: theText + width: undefined + } + } +} diff --git a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp index feac9c2..8d3ca7a 100644 --- a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp +++ b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp @@ -43,6 +43,7 @@ #include <QtDeclarative/qdeclarativecomponent.h> #include <private/qdeclarativeanchors_p_p.h> #include <private/qdeclarativerectangle_p.h> +#include <private/qdeclarativetext_p.h> #include <private/qdeclarativepropertychanges_p.h> #include <private/qdeclarativestategroup_p.h> @@ -104,6 +105,7 @@ private slots: void tempState(); void illegalTempState(); void nonExistantProperty(); + void reset(); }; void tst_qdeclarativestates::initTestCase() @@ -476,10 +478,8 @@ void tst_qdeclarativestates::parentChange() rect->setState("reparented"); QCOMPARE(innerRect->rotation(), qreal(15)); QCOMPARE(innerRect->scale(), qreal(.5)); - QEXPECT_FAIL("", "QTBUG-2919", Continue); - QCOMPARE(QString("%1").arg(innerRect->x()), QString("%1").arg(12.4148145657)); - QEXPECT_FAIL("", "QTBUG-2919", Continue); - QCOMPARE(QString("%1").arg(innerRect->y()), QString("%1").arg(10.6470476128)); + QCOMPARE(QString("%1").arg(innerRect->x()), QString("%1").arg(-19.9075)); + QCOMPARE(QString("%1").arg(innerRect->y()), QString("%1").arg(-8.73433)); } { @@ -500,8 +500,8 @@ void tst_qdeclarativestates::parentChange() QCOMPARE(innerRect->rotation(), qreal(0)); QCOMPARE(innerRect->scale(), qreal(1)); QCOMPARE(innerRect->x(), qreal(5)); - QEXPECT_FAIL("", "QTBUG-2919", Continue); - QCOMPARE(innerRect->y(), qreal(0)); + //do a non-qFuzzyCompare fuzzy compare + QVERIFY(innerRect->y() < qreal(0.00001) && innerRect->y() > qreal(-0.00001)); } } @@ -945,6 +945,25 @@ void tst_qdeclarativestates::nonExistantProperty() QCOMPARE(rect->state(), QLatin1String("blue")); } +void tst_qdeclarativestates::reset() +{ + QDeclarativeEngine engine; + + QDeclarativeComponent c(&engine, SRCDIR "/data/reset.qml"); + QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); + QVERIFY(rect != 0); + + QDeclarativeText *text = rect->findChild<QDeclarativeText*>(); + QVERIFY(text != 0); + QCOMPARE(text->width(), qreal(50.)); + QVERIFY(text->width() < text->height()); + + rect->setState("state1"); + + QVERIFY(text->width() > 51); + QVERIFY(text->width() > text->height()); +} + QTEST_MAIN(tst_qdeclarativestates) #include "tst_qdeclarativestates.moc" diff --git a/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h b/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h index 8b80e16..dfc2829 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h +++ b/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h @@ -52,7 +52,8 @@ #include <QFont> #include <qdeclarative.h> #include <QDeclarativePropertyValueSource> -#include <QDeclarativeMetaProperty> +#include <QDeclarativeProperty> +#include <private/qdeclarativeproperty_p.h> class MyTypeObject : public QObject { @@ -134,7 +135,7 @@ class MyConstantValueSource : public QObject, public QDeclarativePropertyValueSo { Q_OBJECT public: - virtual void setTarget(const QDeclarativeMetaProperty &p) { p.write(3345); } + virtual void setTarget(const QDeclarativeProperty &p) { p.write(3345); } }; QML_DECLARE_TYPE(MyConstantValueSource); @@ -142,11 +143,11 @@ class MyOffsetValueInterceptor : public QObject, public QDeclarativePropertyValu { Q_OBJECT public: - virtual void setTarget(const QDeclarativeMetaProperty &p) { prop = p; } - virtual void write(const QVariant &value) { prop.write(value.toInt() + 13, QDeclarativeMetaProperty::BypassInterceptor); } + virtual void setTarget(const QDeclarativeProperty &p) { prop = p; } + virtual void write(const QVariant &value) { QDeclarativePropertyPrivate::write(prop, value.toInt() + 13, QDeclarativePropertyPrivate::BypassInterceptor); } private: - QDeclarativeMetaProperty prop; + QDeclarativeProperty prop; }; QML_DECLARE_TYPE(MyOffsetValueInterceptor); diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp index 1bf7850..6ffe2a7 100644 --- a/tests/auto/qgl/tst_qgl.cpp +++ b/tests/auto/qgl/tst_qgl.cpp @@ -978,6 +978,47 @@ void tst_QGL::glWidgetWithAlpha() delete w; } + +void qt_opengl_draw_test_pattern(QPainter* painter, int width, int height) +{ + QPainterPath intersectingPath; + intersectingPath.moveTo(0, 0); + intersectingPath.lineTo(100, 0); + intersectingPath.lineTo(0, 100); + intersectingPath.lineTo(100, 100); + intersectingPath.closeSubpath(); + + QPainterPath trianglePath; + trianglePath.moveTo(50, 0); + trianglePath.lineTo(100, 100); + trianglePath.lineTo(0, 100); + trianglePath.closeSubpath(); + + painter->setTransform(QTransform()); // reset xform + painter->fillRect(-1, -1, width+2, height+2, Qt::red); // Background + painter->translate(14, 14); + painter->fillPath(intersectingPath, Qt::blue); // Test stencil buffer works + painter->translate(128, 0); + painter->setClipPath(trianglePath); // Test depth buffer works + painter->setTransform(QTransform()); // reset xform ready for fill + painter->fillRect(-1, -1, width+2, height+2, Qt::green); +} + +void qt_opengl_check_test_pattern(const QImage& img) +{ + // As we're doing more than trivial painting, we can't just compare to + // an image rendered with raster. Instead, we sample at well-defined + // test-points: + QFUZZY_COMPARE_PIXELS(img.pixel(39, 64), QColor(Qt::red).rgb()); + QFUZZY_COMPARE_PIXELS(img.pixel(89, 64), QColor(Qt::red).rgb()); + QFUZZY_COMPARE_PIXELS(img.pixel(64, 39), QColor(Qt::blue).rgb()); + QFUZZY_COMPARE_PIXELS(img.pixel(64, 89), QColor(Qt::blue).rgb()); + + QFUZZY_COMPARE_PIXELS(img.pixel(167, 39), QColor(Qt::red).rgb()); + QFUZZY_COMPARE_PIXELS(img.pixel(217, 39), QColor(Qt::red).rgb()); + QFUZZY_COMPARE_PIXELS(img.pixel(192, 64), QColor(Qt::green).rgb()); +} + class GLWidget : public QGLWidget { public: @@ -992,9 +1033,7 @@ public: QPaintEngine* pe = p.paintEngine(); engineType = pe->type(); - // This test only ensures it's possible to paint onto a QGLWidget. Full - // paint engine feature testing is way out of scope! - p.fillRect(-1, -1, width()+2, height()+2, Qt::red); + qt_opengl_draw_test_pattern(&p, width(), height()); // No p.end() or swap buffers, should be done automatically } @@ -1007,7 +1046,7 @@ void tst_QGL::glWidgetRendering() #ifdef Q_WS_QWS w.setWindowFlags(Qt::FramelessWindowHint); #endif - w.setGeometry(100, 100, 200, 200); + w.resize(256, 128); w.show(); #ifdef Q_WS_X11 @@ -1018,11 +1057,8 @@ void tst_QGL::glWidgetRendering() QVERIFY(w.beginOk); QVERIFY(w.engineType == QPaintEngine::OpenGL || w.engineType == QPaintEngine::OpenGL2); - QImage fb = w.grabFrameBuffer(false).convertToFormat(QImage::Format_RGB32); - QImage reference(fb.size(), QImage::Format_RGB32); - reference.fill(0xffff0000); - - QFUZZY_COMPARE_IMAGES(fb, reference); + QImage fb = w.grabFrameBuffer(false); + qt_opengl_check_test_pattern(fb); } void tst_QGL::glFBOSimpleRendering() @@ -1075,46 +1111,23 @@ void tst_QGL::glFBORendering() // Don't complicate things by using NPOT: QGLFramebufferObject *fbo = new QGLFramebufferObject(256, 128, fboFormat); + if (fbo->attachment() != QGLFramebufferObject::CombinedDepthStencil) { + delete fbo; + QSKIP("FBOs missing combined depth~stencil support", SkipSingle); + } + QPainter fboPainter; bool painterBegun = fboPainter.begin(fbo); QVERIFY(painterBegun); - QPainterPath intersectingPath; - intersectingPath.moveTo(0, 0); - intersectingPath.lineTo(100, 0); - intersectingPath.lineTo(0, 100); - intersectingPath.lineTo(100, 100); - intersectingPath.closeSubpath(); - - QPainterPath trianglePath; - trianglePath.moveTo(50, 0); - trianglePath.lineTo(100, 100); - trianglePath.lineTo(0, 100); - trianglePath.closeSubpath(); + qt_opengl_draw_test_pattern(&fboPainter, fbo->width(), fbo->height()); - fboPainter.fillRect(0, 0, fbo->width(), fbo->height(), Qt::red); // Background - fboPainter.translate(14, 14); - fboPainter.fillPath(intersectingPath, Qt::blue); // Test stencil buffer works - fboPainter.translate(128, 0); - fboPainter.setClipPath(trianglePath); // Test depth buffer works - fboPainter.setTransform(QTransform()); // reset xform - fboPainter.fillRect(0, 0, fbo->width(), fbo->height(), Qt::green); fboPainter.end(); QImage fb = fbo->toImage().convertToFormat(QImage::Format_RGB32); delete fbo; - // As we're doing more than trivial painting, we can't just compare to - // an image rendered with raster. Instead, we sample at well-defined - // test-points: - QFUZZY_COMPARE_PIXELS(fb.pixel(39, 64), QColor(Qt::red).rgb()); - QFUZZY_COMPARE_PIXELS(fb.pixel(89, 64), QColor(Qt::red).rgb()); - QFUZZY_COMPARE_PIXELS(fb.pixel(64, 39), QColor(Qt::blue).rgb()); - QFUZZY_COMPARE_PIXELS(fb.pixel(64, 89), QColor(Qt::blue).rgb()); - - QFUZZY_COMPARE_PIXELS(fb.pixel(167, 39), QColor(Qt::red).rgb()); - QFUZZY_COMPARE_PIXELS(fb.pixel(217, 39), QColor(Qt::red).rgb()); - QFUZZY_COMPARE_PIXELS(fb.pixel(192, 64), QColor(Qt::green).rgb()); + qt_opengl_check_test_pattern(fb); } @@ -1137,6 +1150,16 @@ void tst_QGL::multipleFBOInterleavedRendering() QGLFramebufferObject *fbo2 = new QGLFramebufferObject(256, 128, fboFormat); QGLFramebufferObject *fbo3 = new QGLFramebufferObject(256, 128, fboFormat); + if ( (fbo1->attachment() != QGLFramebufferObject::CombinedDepthStencil) || + (fbo2->attachment() != QGLFramebufferObject::CombinedDepthStencil) || + (fbo3->attachment() != QGLFramebufferObject::CombinedDepthStencil) ) + { + delete fbo1; + delete fbo2; + delete fbo3; + QSKIP("FBOs missing combined depth~stencil support", SkipSingle); + } + QPainter fbo1Painter; QPainter fbo2Painter; QPainter fbo3Painter; @@ -1242,7 +1265,7 @@ protected: QPainter widgetPainter; widgetPainterBeginOk = widgetPainter.begin(this); QGLFramebufferObjectFormat fboFormat; - fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil); + fboFormat.setAttachment(QGLFramebufferObject::NoAttachment); QGLFramebufferObject *fbo = new QGLFramebufferObject(128, 128, fboFormat); QPainter fboPainter; diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp index beb83a1..a03b2c7 100644 --- a/tests/auto/qpainter/tst_qpainter.cpp +++ b/tests/auto/qpainter/tst_qpainter.cpp @@ -107,6 +107,7 @@ private slots: void saveAndRestore(); void drawBorderPixmap(); + void drawPixmapFragments(); void drawLine_data(); void drawLine(); @@ -994,6 +995,49 @@ void tst_QPainter::drawBorderPixmap() QTileRules(Qt::StretchTile,Qt::StretchTile), 0); } +void tst_QPainter::drawPixmapFragments() +{ + QPixmap origPixmap(20, 20); + QPixmap resPixmap(20, 20); + QPainter::Fragment fragments[4] = { {15, 15, 0, 0, 10, 10, 1, 1, 0, 1}, + { 5, 15, 10, 0, 10, 10, 1, 1, 0, 1}, + {15, 5, 0, 10, 10, 10, 1, 1, 0, 1}, + { 5, 5, 10, 10, 10, 10, 1, 1, 0, 1} }; + { + QPainter p(&origPixmap); + p.fillRect(0, 0, 10, 10, Qt::red); + p.fillRect(10, 0, 10, 10, Qt::green); + p.fillRect(0, 10, 10, 10, Qt::blue); + p.fillRect(10, 10, 10, 10, Qt::yellow); + } + { + QPainter p(&resPixmap); + p.drawPixmapFragments(fragments, 4, origPixmap); + } + + QImage origImage = origPixmap.toImage().convertToFormat(QImage::Format_ARGB32); + QImage resImage = resPixmap.toImage().convertToFormat(QImage::Format_ARGB32); + + QVERIFY(resImage.size() == resPixmap.size()); + QVERIFY(resImage.pixel(5, 5) == origImage.pixel(15, 15)); + QVERIFY(resImage.pixel(5, 15) == origImage.pixel(15, 5)); + QVERIFY(resImage.pixel(15, 5) == origImage.pixel(5, 15)); + QVERIFY(resImage.pixel(15, 15) == origImage.pixel(5, 5)); + + + QPainter::Fragment fragment = QPainter::Fragment::create(QPointF(20, 20), QRectF(30, 30, 2, 2)); + QVERIFY(fragment.x == 20); + QVERIFY(fragment.y == 20); + QVERIFY(fragment.sourceLeft == 30); + QVERIFY(fragment.sourceTop == 30); + QVERIFY(fragment.width == 2); + QVERIFY(fragment.height == 2); + QVERIFY(fragment.scaleX == 1); + QVERIFY(fragment.scaleY == 1); + QVERIFY(fragment.rotation == 0); + QVERIFY(fragment.opacity == 1); +} + void tst_QPainter::drawLine_data() { QTest::addColumn<QLine>("line"); @@ -3443,8 +3487,8 @@ bool verifyOutlineFillConsistency(const QImage &img, QRgb outside, QRgb inside, if ((dx == 0) == (dy == 0)) continue; QRgb neighbor = img.pixel(p.x() + dx, p.y() + dy); - if (pixel == inside && neighbor == outside || - pixel == outside && neighbor == inside) + if ((pixel == inside && neighbor == outside) || + (pixel == outside && neighbor == inside)) return false; } } diff --git a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp index 5b2b0cf..56eaf25 100644 --- a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp +++ b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp @@ -137,6 +137,7 @@ private slots: void task255652_removeRowsRecursive(); void taskQTBUG_6205_doubleProxySelectionSetSourceModel(); void taskQTBUG_7537_appearsAndSort(); + void taskQTBUG_7716_unnecessaryDynamicSorting(); protected: void buildHierarchy(const QStringList &data, QAbstractItemModel *model); @@ -918,15 +919,16 @@ void tst_QSortFilterProxyModel::removeRows() QStandardItemModel model; QSortFilterProxyModel proxy; proxy.setSourceModel(&model); - if (sortOrder != -1) - proxy.sort(0, static_cast<Qt::SortOrder>(sortOrder)); - if (!filter.isEmpty()) - proxy.setFilterRegExp(QRegExp(filter)); // prepare model foreach (QString s, initial) model.appendRow(new QStandardItem(s)); + if (sortOrder != -1) + proxy.sort(0, static_cast<Qt::SortOrder>(sortOrder)); + if (!filter.isEmpty()) + proxy.setFilterRegExp(QRegExp(filter)); + // remove the rows QCOMPARE(proxy.removeRows(position, count, QModelIndex()), success); QCOMPARE(model.rowCount(QModelIndex()), expectedSource.count()); @@ -2419,6 +2421,7 @@ void tst_QSortFilterProxyModel::sortColumnTracking2() { QStandardItemModel model; QSortFilterProxyModel proxyModel; + proxyModel.setDynamicSortFilter(true); proxyModel.setSourceModel(&model); proxyModel.sort(0); @@ -2921,5 +2924,32 @@ void tst_QSortFilterProxyModel::taskQTBUG_7537_appearsAndSort() QCOMPARE(spyChanged2.count(), 1); } +void tst_QSortFilterProxyModel::taskQTBUG_7716_unnecessaryDynamicSorting() +{ + QStringListModel model; + const QStringList initial = QString("bravo charlie delta echo").split(" "); + model.setStringList(initial); + QSortFilterProxyModel proxy; + proxy.setDynamicSortFilter(false); + proxy.setSourceModel(&model); + proxy.sort(Qt::AscendingOrder); + + //append two rows + int maxrows = proxy.rowCount(QModelIndex()); + model.insertRows(maxrows, 2); + model.setData(model.index(maxrows, 0), QString("alpha")); + model.setData(model.index(maxrows + 1, 0), QString("fondue")); + + //append new items to the initial string list and compare with model + QStringList expected = initial; + expected << QString("alpha") << QString("fondue"); + + //if bug 7716 is present, new rows were prepended, when they should have been appended + for (int row = 0; row < proxy.rowCount(QModelIndex()); ++row) { + QModelIndex index = proxy.index(row, 0, QModelIndex()); + QCOMPARE(proxy.data(index, Qt::DisplayRole).toString(), expected.at(row)); + } +} + QTEST_MAIN(tst_QSortFilterProxyModel) #include "tst_qsortfilterproxymodel.moc" diff --git a/tests/auto/qstatictext/qstatictext.pro b/tests/auto/qstatictext/qstatictext.pro index a759a90..0f1ca68 100644 --- a/tests/auto/qstatictext/qstatictext.pro +++ b/tests/auto/qstatictext/qstatictext.pro @@ -1,4 +1,4 @@ load(qttest_p4) -QT = core gui opengl +QT = core gui SOURCES += tst_qstatictext.cpp diff --git a/tests/auto/qstatictext/tst_qstatictext.cpp b/tests/auto/qstatictext/tst_qstatictext.cpp index 68f05c1..16832ad 100644 --- a/tests/auto/qstatictext/tst_qstatictext.cpp +++ b/tests/auto/qstatictext/tst_qstatictext.cpp @@ -45,13 +45,20 @@ #include <QtGui/QImage> #include <qstatictext.h> +#include <qpaintengine.h> + #include <private/qstatictext_p.h> +#include <private/qapplication_p.h> // #define DEBUG_SAVE_IMAGE class tst_QStaticText: public QObject { Q_OBJECT + +private: + bool supportsTransformations() const; + private slots: void init(); void cleanup(); @@ -177,6 +184,8 @@ void tst_QStaticText::prepareToCorrectData() p.drawStaticText(QPointF(11, 12), text); } + if (!supportsTransformations()) + QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort); QCOMPARE(imageDrawStaticText, imageDrawText); } @@ -288,6 +297,25 @@ void tst_QStaticText::translatedPainter() QCOMPARE(imageDrawStaticText, imageDrawText); } +bool tst_QStaticText::supportsTransformations() const +{ + QPixmap pm(10, 10); + QPainter p(&pm); + QPaintEngine *engine = p.paintEngine(); + + QPaintEngine::Type type = engine->type(); + + if (type == QPaintEngine::OpenGL2 + || type == QPaintEngine::OpenGL +#if !defined Q_WS_WIN + || type == QPaintEngine::Raster +#endif + ) + return false; + + return true; +} + void tst_QStaticText::rotatedPainter() { QPixmap imageDrawText(1000, 1000); @@ -314,6 +342,8 @@ void tst_QStaticText::rotatedPainter() imageDrawStaticText.save("rotatedPainter_imageDrawStaticText.png"); #endif + if (!supportsTransformations()) + QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort); QCOMPARE(imageDrawStaticText, imageDrawText); } @@ -340,6 +370,8 @@ void tst_QStaticText::scaledPainter() p.drawStaticText(QPointF(11, 12), text); } + if (!supportsTransformations()) + QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort); QCOMPARE(imageDrawStaticText, imageDrawText); } @@ -370,7 +402,6 @@ void tst_QStaticText::projectedPainter() } QCOMPARE(imageDrawStaticText, imageDrawText); - } void tst_QStaticText::rotatedScaledAndTranslatedPainter() @@ -405,6 +436,8 @@ void tst_QStaticText::rotatedScaledAndTranslatedPainter() imageDrawStaticText.save("rotatedScaledAndPainter_imageDrawStaticText.png"); #endif + if (!supportsTransformations()) + QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort); QCOMPARE(imageDrawStaticText, imageDrawText); } @@ -444,6 +477,8 @@ void tst_QStaticText::transformationChanged() imageDrawStaticText.save("transformationChanged_imageDrawStaticText.png"); #endif + if (!supportsTransformations()) + QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort); QCOMPARE(imageDrawStaticText, imageDrawText); } diff --git a/tests/auto/qstringbuilder1/stringbuilder.cpp b/tests/auto/qstringbuilder1/stringbuilder.cpp index 8e95818..e9ae7a6 100644 --- a/tests/auto/qstringbuilder1/stringbuilder.cpp +++ b/tests/auto/qstringbuilder1/stringbuilder.cpp @@ -44,6 +44,14 @@ // "some literal", but replacing all vocals by their umlauted UTF-8 string :) #define UTF8_LITERAL "s\xc3\xb6m\xc3\xab l\xc3\xaft\xc3\xabr\xc3\xa4l" + +//fix for gcc4.0: if the operator+ does not exist without QT_USE_FAST_OPERATOR_PLUS +#ifndef QT_USE_FAST_CONCATENATION +#define Q % +#else +#define Q P +#endif + void runScenario() { // set codec for C strings to 0, enforcing Latin1 @@ -59,13 +67,13 @@ void runScenario() QString r; QByteArray ba(LITERAL); - r = l1literal P l1literal; + r = l1literal Q l1literal; QCOMPARE(r, r2); r = string P string; QCOMPARE(r, r2); - r = stringref P stringref; + r = stringref Q stringref; QCOMPARE(r, QString(stringref.toString() + stringref.toString())); - r = string P l1literal; + r = string Q l1literal; QCOMPARE(r, r2); r = string P l1string; QCOMPARE(r, r2); diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp index fd4815e..e39cf6c 100644 --- a/tests/auto/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/qtreeview/tst_qtreeview.cpp @@ -3083,6 +3083,20 @@ void tst_QTreeView::styleOptionViewItem() QApplication::processEvents(); QTRY_VERIFY(delegate.count >= 3); QApplication::processEvents(); + + item00->setText("OnlyOne"); + item0->insertRow(2, new QStandardItem("OnlyOne Last")); + view.collapse(item0->index()); + item0->removeRow(0); + delegate.count = 0; + QTRY_VERIFY(delegate.count >= 2); + QApplication::processEvents(); + + item0->removeRow(1); + item0->setText("OnlyOne"); + delegate.count = 0; + QTRY_VERIFY(delegate.count >= 2); + QApplication::processEvents(); } } diff --git a/tools/assistant/lib/qhelp_global.cpp b/tools/assistant/lib/qhelp_global.cpp index d8a94d3..c2c916b 100644 --- a/tools/assistant/lib/qhelp_global.cpp +++ b/tools/assistant/lib/qhelp_global.cpp @@ -56,7 +56,7 @@ QString QHelpGlobal::uniquifyConnectionName(const QString &name, void *pointer) counter = 0; return QString::fromLatin1("%1-%2-%3"). - arg(name).arg(long(pointer)).arg(counter); + arg(name).arg(quintptr(pointer)).arg(counter); } QString QHelpGlobal::documentTitle(const QString &content) diff --git a/tools/assistant/lib/qhelpdbreader.cpp b/tools/assistant/lib/qhelpdbreader.cpp index 6dd949a..5c0f595 100644 --- a/tools/assistant/lib/qhelpdbreader.cpp +++ b/tools/assistant/lib/qhelpdbreader.cpp @@ -205,7 +205,7 @@ QByteArray QHelpDBReader::fileData(const QString &virtualFolder, "NamespaceTable d WHERE a.Id=b.FileId AND (b.Name=? OR b.Name=?) AND b.FolderId=c.Id " "AND c.Name=? AND c.NamespaceId=d.Id AND d.Name=?")); m_query->bindValue(0, filePath); - m_query->bindValue(1, QLatin1String("./") + filePath); + m_query->bindValue(1, QString(QLatin1String("./") + filePath)); m_query->bindValue(2, virtualFolder); m_query->bindValue(3, m_namespace); m_query->exec(); diff --git a/tools/qdoc3/codemarker.cpp b/tools/qdoc3/codemarker.cpp index d890758..48e9341 100644 --- a/tools/qdoc3/codemarker.cpp +++ b/tools/qdoc3/codemarker.cpp @@ -177,7 +177,7 @@ const Node *CodeMarker::nodeForString(const QString& string) QString CodeMarker::stringForNode(const Node *node) { if (sizeof(const Node *) == sizeof(ulong)) { - return QString::number(reinterpret_cast<ulong>(node)); + return QString::number(reinterpret_cast<quintptr>(node)); } else { return QString::number(reinterpret_cast<qulonglong>(node)); diff --git a/tools/qtconfig/mainwindow.cpp b/tools/qtconfig/mainwindow.cpp index 604b1f4..0de4b43 100644 --- a/tools/qtconfig/mainwindow.cpp +++ b/tools/qtconfig/mainwindow.cpp @@ -68,6 +68,8 @@ #ifndef QT_NO_GSTREAMER #include <gst/gst.h> +#endif +#ifdef HAVE_PHONON #include <phonon/phononnamespace.h> #endif @@ -387,8 +389,10 @@ MainWindow::MainWindow() audiosinkCombo->addItem(tr("aRts"), QLatin1String("artssink")); audiosinkCombo->setItemData(audiosinkCombo->findText(tr("aRts")), tr("Experimental aRts support for GStreamer."), Qt::ToolTipRole); -#ifndef QT_NO_GSTREAMER +#ifdef HAVE_PHONON phononVersionLabel->setText(QLatin1String(Phonon::phononVersion())); +#endif +#ifndef QT_NO_GSTREAMER if (gst_init_check(0, 0, 0)) { gchar *versionString = gst_version_string(); gstversionLabel->setText(QLatin1String(versionString)); diff --git a/tools/qtconfig/qtconfig.pro b/tools/qtconfig/qtconfig.pro index 8ab3f03..d1fd320 100644 --- a/tools/qtconfig/qtconfig.pro +++ b/tools/qtconfig/qtconfig.pro @@ -9,7 +9,10 @@ QT += qt3support contains(QT_CONFIG, gstreamer):LIBS += $$QT_LIBS_GSTREAMER -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstbase-0.10 contains(QT_CONFIG, gstreamer):QMAKE_CXXFLAGS += $$QT_CFLAGS_GSTREAMER -contains(QT_CONFIG, gstreamer):QT += phonon +contains(QT_CONFIG, phonon) { + QT += phonon + DEFINES += HAVE_PHONON +} SOURCES += colorbutton.cpp main.cpp previewframe.cpp previewwidget.cpp mainwindow.cpp paletteeditoradvanced.cpp \ mainwindowbase.cpp paletteeditoradvancedbase.cpp previewwidgetbase.cpp HEADERS += colorbutton.h previewframe.h previewwidget.h mainwindow.h paletteeditoradvanced.h \ diff --git a/util/webkit/mkdist-webkit b/util/webkit/mkdist-webkit index ddf74bb..e8426b1 100755 --- a/util/webkit/mkdist-webkit +++ b/util/webkit/mkdist-webkit @@ -20,7 +20,7 @@ if [ -z "$repository" ]; then die "error: cannot locate webkit git repository. please run git config --global qtwebkit.url /path-or-url/to/webkit/repo" fi -excluded_directories="LayoutTests JavaScriptGlue WebKitLibraries WebKitSite WebKitTools WebCore/platform/cf WebCore/platform/gtk WebCore/platform/chromium" +excluded_directories="LayoutTests JavaScriptGlue WebKitLibraries WebKitSite WebKitTools WebCore/platform/gtk WebCore/platform/chromium" excluded_directories="$excluded_directories PageLoadTests" excluded_directories="$excluded_directories BugsSite" excluded_directories="$excluded_directories PlanetWebKit" @@ -49,6 +49,8 @@ excluded_directories="$excluded_directories JavaScriptCore/wtf/mac" excluded_directories="$excluded_directories JavaScriptCore/wtf/win" excluded_directories="$excluded_directories JavaScriptCore/wtf/chromium" excluded_directories="$excluded_directories JavaScriptCore/wtf/haiku" +excluded_directories="$excluded_directories JavaScriptCore/wtf/android" +excluded_directories="$excluded_directories JavaScriptCore/wtf/brew" excluded_directories="$excluded_directories WebCore/WebCore.vcproj" excluded_directories="$excluded_directories WebCore/WebCore.gyp" @@ -81,41 +83,52 @@ excluded_directories="$excluded_directories WebCore/page/wx" excluded_directories="$excluded_directories WebCore/page/chromium" excluded_directories="$excluded_directories WebCore/page/haiku" excluded_directories="$excluded_directories WebCore/page/wince" +excluded_directories="$excluded_directories WebCore/page/android" +excluded_directories="$excluded_directories WebCore/page/brew" excluded_directories="$excluded_directories WebCore/history/mac" +excluded_directories="$excluded_directories WebCore/history/android" excluded_directories="$excluded_directories WebCore/editing/mac" excluded_directories="$excluded_directories WebCore/editing/wx" excluded_directories="$excluded_directories WebCore/editing/haiku" +excluded_directories="$excluded_directories WebCore/editing/android" +excluded_directories="$excluded_directories WebCore/editing/chromium" +excluded_directories="$excluded_directories WebCore/editing/gtk" excluded_directories="$excluded_directories WebCore/platform/haiku" +excluded_directories="$excluded_directories WebCore/platform/android" +excluded_directories="$excluded_directories WebCore/platform/brew" excluded_directories="$excluded_directories WebCore/platform/text/wx" excluded_directories="$excluded_directories WebCore/platform/text/gtk" excluded_directories="$excluded_directories WebCore/platform/text/chromium" excluded_directories="$excluded_directories WebCore/platform/text/haiku" +excluded_directories="$excluded_directories WebCore/platform/text/android" +excluded_directories="$excluded_directories WebCore/platform/text/brew" excluded_directories="$excluded_directories WebCore/platform/sql/chromium" excluded_directories="$excluded_directories WebCore/manual-tests" -excluded_directories="$excluded_directories WebCore/platform/network/cf" excluded_directories="$excluded_directories WebCore/platform/network/curl" excluded_directories="$excluded_directories WebCore/platform/network/mac" excluded_directories="$excluded_directories WebCore/platform/network/win" excluded_directories="$excluded_directories WebCore/platform/network/soup" excluded_directories="$excluded_directories WebCore/platform/network/chromium" +excluded_directories="$excluded_directories WebCore/platform/network/android" +excluded_directories="$excluded_directories WebCore/platform/network/brew" excluded_directories="$excluded_directories WebCore/platform/graphics/cg" excluded_directories="$excluded_directories WebCore/platform/graphics/cairo" excluded_directories="$excluded_directories WebCore/platform/graphics/gtk" excluded_directories="$excluded_directories WebCore/platform/graphics/wx" excluded_directories="$excluded_directories WebCore/platform/graphics/mac" -excluded_directories="$excluded_directories WebCore/platform/graphics/win" excluded_directories="$excluded_directories WebCore/platform/graphics/skia" excluded_directories="$excluded_directories WebCore/platform/graphics/chromium" excluded_directories="$excluded_directories WebCore/platform/graphics/wince" excluded_directories="$excluded_directories WebCore/platform/graphics/haiku" +excluded_directories="$excluded_directories WebCore/platform/graphics/brew" excluded_directories="$excluded_directories WebCore/platform/image-decoders/bmp" excluded_directories="$excluded_directories WebCore/platform/image-decoders/gif" @@ -126,11 +139,13 @@ excluded_directories="$excluded_directories WebCore/platform/image-decoders/jpeg excluded_directories="$excluded_directories WebCore/platform/image-decoders/xbm" excluded_directories="$excluded_directories WebCore/platform/image-decoders/skia" excluded_directories="$excluded_directories WebCore/platform/image-decoders/haiku" +excluded_directories="$excluded_directories WebCore/platform/image-decoders/wx" excluded_directories="$excluded_directories WebCore/platform/image-encoders/skia" excluded_directories="$excluded_directories WebCore/plugins/gtk" excluded_directories="$excluded_directories WebCore/plugins/chromium" +excluded_directories="$excluded_directories WebCore/plugins/wx" excluded_directories="$excluded_directories WebCore/accessibility/chromium" excluded_directories="$excluded_directories WebCore/accessibility/gtk" @@ -139,6 +154,7 @@ excluded_directories="$excluded_directories WebCore/accessibility/win" excluded_directories="$excluded_directories WebCore/accessibility/wx" excluded_directories="$excluded_directories WebCore/storage/wince" +excluded_directories="$excluded_directories WebCore/storage/chromium" excluded_directories="$excluded_directories WebCore/platform/wx" excluded_directories="$excluded_directories WebCore/platform/wince" @@ -196,6 +212,7 @@ files_to_remove="$files_to_remove autogen.sh" files_to_remove="$files_to_remove configure.ac" files_to_remove="$files_to_remove WebKit.pro" +files_to_remove="$files_to_remove DerivedSources.pro" files_to_remove="$files_to_remove WebKit/qt/QtLauncher/QtLauncher.pro" files_to_remove="$files_to_remove WebKit/qt/QtLauncher/main.cpp" @@ -311,16 +328,11 @@ echo "generating extra sources" ( for proj in JavaScriptCore WebCore; do cd $absSrcDir/$proj && - rm -rf tmp && - mkdir tmp && - cd tmp && - mkdir -p ../generated && - qmake -o Makefile CONFIG-=QTDIR_build QT_CONFIG+=phonon GENERATED_SOURCES_DIR=`pwd`/../generated OUTPUT_DIR=`pwd` ../$proj.pro && + qmake -o Makefile DerivedSources.pro && make generated_files && - perl -pi -e "s,$absSrcDir/,,g" ../generated/*.cpp ../generated/*.h && - git add ../generated && - cd .. && - rm -rf tmp && + perl -pi -e "s,$absSrcDir/,,g" generated/*.cpp generated/*.h && + git add generated && + rm DerivedSources.pro Makefile && cd .. done ) |