diff options
38 files changed, 325 insertions, 200 deletions
@@ -54,6 +54,7 @@ bin/lconvert* bin/moc* bin/pixeltool* bin/qmake* +bin/qdoc3* bin/qt3to4* bin/qtdemo* bin/rcc* @@ -41,6 +41,7 @@ bin/lupdate* bin/moc* bin/pixeltool* bin/qmake* +bin/qdoc3* bin/qt3to4* bin/qtdemo* bin/rcc* @@ -47,6 +47,11 @@ QMAKE_VARS_FILE=.qmake.vars # utility functions #------------------------------------------------------------------------------- +shellEscape() +{ + echo "$@" | sed 's/ /\ /g' +} + # Adds a new qmake variable to the cache # Usage: QMakeVar mode varname contents # where mode is one of: set, add, del @@ -89,6 +94,29 @@ getQMakeConf() { print }' "$tmpSPEC/qmake.conf" } +# relies on $TEST_COMPILER being set correctly +compilerSupportsFlag() +{ + cat >conftest.cpp <<EOF +int main() { return 0; } +EOF + "$TEST_COMPILER" "$@" -o /dev/null conftest.cpp + ret=$? + rm -f conftest.cpp conftest.o + return $? +} + +# relies on $TEST_COMPILER being set correctly +linkerSupportsFlag() +{ + lflags=-Wl + for flag; do + safe_flag=`shellEscape "$flag"` + lflags=$lflags,$safe_flag + done + compilerSupportsFlag "$lflags" +} + #------------------------------------------------------------------------------- # operating system detection #------------------------------------------------------------------------------- @@ -7008,6 +7036,13 @@ QMAKE_LIBDIR_QT = \$\$QT_BUILD_TREE/lib EOF +# Ensure we can link to uninistalled libraries +if linkerSupportsFlag -rpath-link "$outpath/lib"; then + echo "QMAKE_LFLAGS += -Wl,-rpath-link,\$\$QT_BUILD_TREE/lib" >> "$CACHEFILE.tmp" +elif linkerSupportsFlag -rpath "$outpath/lib"; then + echo "QMAKE_LFLAGS += -Wl,-rpath,\$\$QT_BUILD_TREE/lib" >> "$CACHEFILE.tmp" +fi + if [ -n "$QT_CFLAGS_PSQL" ]; then echo "QT_CFLAGS_PSQL = $QT_CFLAGS_PSQL" >> "$CACHEFILE.tmp" fi diff --git a/dist/changes-4.6.0 b/dist/changes-4.6.0 index bf18b14..8c2c2c8 100644 --- a/dist/changes-4.6.0 +++ b/dist/changes-4.6.0 @@ -35,7 +35,7 @@ information about a particular change. of (non-unicode) Windows 9x/ME support. - QRegion is no longer a GDI object by default. This means it is no - longer subjuect to gui-thread only nor does it potentially impact + longer subject to gui-thread only nor does it potentially impact the 10.000 GDI object limit per process. By explicitly calling .handle() a GDI object will be created and memory managed by QRegion. The native handle is for reading out only. Any GDI calls diff --git a/doc/doc.pri b/doc/doc.pri index 13d481f..66953e6 100644 --- a/doc/doc.pri +++ b/doc/doc.pri @@ -14,9 +14,9 @@ win32:!win32-g++ { } $$unixstyle { - QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && QT_BUILD_TREE=$$QT_BUILD_TREE QT_SOURCE_TREE=$$QT_SOURCE_TREE $$QT_BUILD_TREE/tools/qdoc3/qdoc3 $$DOCS_GENERATION_DEFINES + QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && QT_BUILD_TREE=$$QT_BUILD_TREE QT_SOURCE_TREE=$$QT_SOURCE_TREE $$QT_BUILD_TREE/bin/qdoc3 $$DOCS_GENERATION_DEFINES } else { - QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && set QT_BUILD_TREE=$$QT_BUILD_TREE&& set QT_SOURCE_TREE=$$QT_SOURCE_TREE&& $$QT_BUILD_TREE/tools/qdoc3/qdoc3.exe $$DOCS_GENERATION_DEFINES + QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && set QT_BUILD_TREE=$$QT_BUILD_TREE&& set QT_SOURCE_TREE=$$QT_SOURCE_TREE&& $$QT_BUILD_TREE/bin/qdoc3.exe $$DOCS_GENERATION_DEFINES QDOC = $$replace(QDOC, "/", "\\") } macx { diff --git a/doc/src/classes.qdoc b/doc/src/classes.qdoc index 864445f..24acce1 100644 --- a/doc/src/classes.qdoc +++ b/doc/src/classes.qdoc @@ -41,58 +41,85 @@ /*! \group classlists - \title Class and Function Indexes - \brief Collections of classes and functions grouped together into lists. + \title Class and Function Documentation + \brief Lists and Indexes of classes, functions, and types. - The following documents contain collections of classes, grouped by - subject area or related to particular functionality, or comprehensive - lists of classes and functions. + Links to indexes and lists for finding class and function + reference documentation. + + \section2 Class Lists + + \annotatedlist classlists + + \section2 Function Lists + + \annotatedlist funclists - \generatelist{related} */ /*! - \group groups - \title Grouped Classes + \page classes.html + \title All Qt Classes (main index) \ingroup classlists - This page provides a way of navigating Qt's classes by grouping - related classes together. Some classes may appear in more than one group. + \brief If you know the name of the class you want, find it here. - \generatelist{related} + This is a list of all Qt classes. For a list of the classes + provided for compatibility with Qt3, see \l{Qt3 Support + Classes}. For classes that have been deprecated, see the + \l{Obsolete Classes} list. + + \generatelist classes + \sa {Qt3 Support Classes}, {All Qt Modules}, {Obsolete Classes} */ /*! - \page classes.html - \title Qt's Classes + \page annotated.html + \title Annotated Class List \ingroup classlists - This is a list of all Qt classes. For a list of the classes provided - for compatibility with Qt3, see \l{Qt 3 compatibility classes}. For - classes that have been deprecated, see the \l{Obsolete Classes} list. + \brief If you don't know the name of the class you want, but you + know what the class should do, you might try looking here. - \generatelist classes + Qt classes with brief descriptions: - \sa {Qt 3 Compatibility Classes}, {Qt's Modules}, {Obsolete Classes} + \generatelist annotatedclasses */ /*! - \page namespaces.html - \title Qt's Namespaces + \group groups + \title Groups Of Related Classes \ingroup classlists - This is a list of the main namespaces in Qt. For a list of classes in - Qt, see \l{Qt's Classes}. + \brief If you know what kind of class you want (GUI, painting, + I.O, etc), look here. - \generatelist{namespaces} + This is a list of functional groups of Qt classes. A class can + appear in more than one functional group. + + \generatelist{related} + +*/ + +/*! + \page hierarchy.html + + \title Inheritance Hierarchy + \ingroup classlists + + \brief The C++ class inheritance hierarchy for all classes in the + Qt API. + + \generatelist classhierarchy */ /*! \page obsoleteclasses.html \title Obsolete Classes \ingroup classlists - + + \brief These classes are obsolete and should not be used in new code. This is a list of Qt classes that are obsolete (deprecated). These classes are provided to keep old source code working but they are @@ -101,52 +128,46 @@ \generatelist obsoleteclasses - \sa {Qt's Classes}, {Qt's Modules} */ /*! - \page annotated.html - \title Annotated Class Index + \page compatclasses.html + \title Qt3 Support Classes \ingroup classlists - Qt's classes with brief descriptions: + \brief These classes ease the porting of code from Qt 3 to Qt 4. - \generatelist annotatedclasses -*/ - -/*! - \page functions.html - \title Member Function Index - \ingroup classlists + These are the classes that Qt provides for compatibility with Qt + 3. Most of these are provided by the Qt3Support module. - Here is the list of all the documented member functions in the Qt - API with links to the class documentation for each function. + \generatelist compatclasses - \generatelist functionindex */ /*! - \page hierarchy.html + \page functions.html + \title All Functions (main index) + \ingroup funclists - \title Class Inheritance Hierarchy - \ingroup classlists + \brief All documented Qt functions listed alphabetically with a + link to where each one is declared. - This list shows the C++ class inheritance relations between the - classes in the Qt API. + This is the list of all documented member functions and global + functions in the Qt API. Each function has a link to the class or + header file where it is declared and documented. - \generatelist classhierarchy + \generatelist functionindex */ + /*! - \page compatclasses.html - \title Qt 3 Compatibility Classes + \page namespaces.html + \title All Qt Namespaces \ingroup classlists - This is a list of the classes that Qt provides for compatibility - with Qt 3. The vast majority of these are provided by the - Qt3Support module. + \brief A Qt namespace contains enum types, functions, and sometimes classes. - \generatelist compatclasses + This is a list of the main namespaces in Qt. - \sa {Qt's Classes}, {Qt's Modules} + \generatelist{namespaces} */ diff --git a/doc/src/classes/exportedfunctions.qdoc b/doc/src/classes/exportedfunctions.qdoc index c51ace4..a0e3904 100644 --- a/doc/src/classes/exportedfunctions.qdoc +++ b/doc/src/classes/exportedfunctions.qdoc @@ -41,8 +41,10 @@ /*! \page exportedfunctions.html - \title Special-Purpose Global Functions Exported by Qt - \ingroup classlists + \title Platform-Specific Functions + \ingroup funclists + + \brief Exported functions for fine tuning Qt applications. Qt provides a few low-level global functions for fine-tuning applications. Most of these perform very specific tasks and are diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc index b0695b8..4d92157 100644 --- a/doc/src/index.qdoc +++ b/doc/src/index.qdoc @@ -81,7 +81,7 @@ </td> <td valign="top"> <ul> - <li><a href="classlists.html">C++ Class Documentation</a></li> + <li><a href="classlists.html">Class and Function Documentation</a></li> <li><a href="frameworks-technologies.html">Frameworks and Technologies</a></li> <li><a href="best-practices.html">How-To's and Best Practices</a></li> </ul> diff --git a/doc/src/legal/commercialeditions.qdoc b/doc/src/legal/commercialeditions.qdoc index 761a53b..93dc194 100644 --- a/doc/src/legal/commercialeditions.qdoc +++ b/doc/src/legal/commercialeditions.qdoc @@ -91,8 +91,8 @@ following pages: \list - \o \l{Qt GUI Framework Edition Classes} - \o \l{Qt Full Framework Edition Classes} + \o \l{Qt GUI Framework Edition} + \o \l{Qt Full Framework Edition} \endlist Please see the \l{Supported Platforms}{list of supported @@ -119,16 +119,20 @@ /*! \page full-framework-edition-classes.html - \title Qt Full Framework Edition Classes + \title Qt Full Framework Edition \ingroup classlists + \brief The list of Qt classes included in the Full Framework Edition. + \generatelist{classesbyedition Desktop} */ /*! \page gui-framework-edition-classes.html - \title Qt GUI Framework Edition Classes + \title Qt GUI Framework Edition \ingroup classlists + \brief The list of Qt classes included in the GUI Framework Edition. + \generatelist{classesbyedition DesktopLight} */ diff --git a/doc/src/modules.qdoc b/doc/src/modules.qdoc index 2fc6eaf..786122e 100644 --- a/doc/src/modules.qdoc +++ b/doc/src/modules.qdoc @@ -41,14 +41,14 @@ /*! \group modules - \title Qt's Modules + \title All Qt Modules \startpage index.html Qt Reference Documentation \nextpage QtCore \ingroup classlists - Qt 4 consists of several modules, each of which lives in a - separate library. + \brief Qt 4 comprises several modules. Each module is a separate + library. \table 80% \header \o {2,1} \bold{Modules for general software development} @@ -89,14 +89,14 @@ or other build tools such as CMake, you also need to link against the \c qtmain library. - \sa {Qt's Classes} + \sa {Class and Function Documentation} */ /*! \module QtCore \title QtCore Module - \contentspage Qt's Modules - \previouspage Qt's Modules + \contentspage All Qt Modules + \previouspage All Qt Modules \nextpage QtGui \ingroup modules @@ -116,7 +116,7 @@ /*! \module QtGui \title QtGui Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtCore \nextpage QtNetwork \ingroup modules @@ -135,7 +135,7 @@ /*! \module QtMultimedia \title QtMultimedia Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtCore \nextpage QtNetwork \ingroup modules @@ -159,7 +159,7 @@ /*! \module QtNetwork \title QtNetwork Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtMultimedia \nextpage QtOpenGL \ingroup modules @@ -184,7 +184,7 @@ /*! \module QtOpenGL \title QtOpenGL Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtNetwork \nextpage QtOpenVG \ingroup modules @@ -236,7 +236,7 @@ \module QtOpenVG \title QtOpenVG Module \since 4.6 - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtOpenGL \nextpage QtScript \ingroup modules @@ -291,7 +291,7 @@ \module QtScript \title QtScript Module \since 4.3 - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtOpenVG \nextpage QtScriptTools \ingroup modules @@ -321,7 +321,7 @@ \module QtScriptTools \title QtScriptTools Module \since 4.5 - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtScript \nextpage QtSql \ingroup modules @@ -350,7 +350,7 @@ /*! \module QtSql \title QtSql Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtScript \nextpage QtSvg \ingroup modules @@ -373,7 +373,7 @@ \module QtSvg \title QtSvg Module \since 4.1 - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtSql \nextpage QtWebKit \ingroup modules @@ -428,7 +428,7 @@ /*! \module QtXml \title QtXml Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtSvg \nextpage QtXmlPatterns \ingroup modules @@ -458,7 +458,7 @@ \module QtXmlPatterns \title QtXmlPatterns Module \since 4.4 - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtXml \nextpage Phonon Module \ingroup modules @@ -533,7 +533,7 @@ \page phonon-module.html \module Phonon \title Phonon Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtXmlPatterns \nextpage Qt3Support \ingroup modules @@ -604,7 +604,7 @@ /*! \module Qt3Support \title Qt3Support Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage Phonon Module \nextpage QtDesigner \ingroup modules @@ -645,7 +645,7 @@ /*! \module QtDesigner \title QtDesigner Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage Qt3Support \nextpage QtUiTools \ingroup modules @@ -676,7 +676,7 @@ \module QtUiTools \title QtUiTools Module \since 4.1 - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtDesigner \nextpage QtHelp \ingroup modules @@ -716,7 +716,7 @@ /*! \module QtHelp \title QtHelp Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtUiTools \nextpage QtTest \ingroup modules @@ -779,7 +779,7 @@ /*! \module QtTest \title QtTest Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtHelp \nextpage QAxContainer \ingroup modules @@ -809,7 +809,7 @@ /*! \module QAxContainer \title QAxContainer Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtTest \nextpage QAxServer \ingroup modules @@ -859,7 +859,7 @@ /*! \module QAxServer \title QAxServer Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QAxContainer \nextpage QtDBus module \ingroup modules @@ -909,7 +909,7 @@ /*! \module QtDBus \title QtDBus module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QAxServer \ingroup modules diff --git a/doc/src/platforms/winsystem.qdoc b/doc/src/platforms/winsystem.qdoc index 5afa1f7..c20973b 100644 --- a/doc/src/platforms/winsystem.qdoc +++ b/doc/src/platforms/winsystem.qdoc @@ -51,8 +51,8 @@ appropriate \c{#ifdef} directives (see below). Qt provides a few low-level global functions for fine-tuning - applications on specific platforms. See \l{Special-Purpose Global - Functions Exported by Qt} for details. + applications on specific platforms. See \l{Platform-Specific + Functions} for details. \tableofcontents diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp index c78466e..3af4a29 100644 --- a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp @@ -471,9 +471,12 @@ NEVER_INLINE bool Interpreter::unwindCallFrame(CallFrame*& callFrame, JSValue ex if (Debugger* debugger = callFrame->dynamicGlobalObject()->debugger()) { DebuggerCallFrame debuggerCallFrame(callFrame, exceptionValue); - if (callFrame->callee()) + if (callFrame->callee()) { debugger->returnEvent(debuggerCallFrame, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->lastLine()); - else +#ifdef QT_BUILD_SCRIPT_LIB + debugger->functionExit(exceptionValue, codeBlock->ownerNode()->sourceID()); +#endif + } else debugger->didExecuteProgram(debuggerCallFrame, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->lastLine()); } @@ -575,19 +578,32 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV // Calculate an exception handler vPC, unwinding call frames as necessary. HandlerInfo* handler = 0; - while (!(handler = codeBlock->handlerForBytecodeOffset(bytecodeOffset))) { - if (!unwindCallFrame(callFrame, exceptionValue, bytecodeOffset, codeBlock)) { + #ifdef QT_BUILD_SCRIPT_LIB - if (debugger) - debugger->exceptionThrow(DebuggerCallFrame(callFrame, exceptionValue), codeBlock->ownerNode()->sourceID(),false); -#endif - return 0; + //try to find handler + bool hasHandler = true; + CallFrame *callFrameTemp = callFrame; + unsigned bytecodeOffsetTemp = bytecodeOffset; + CodeBlock *codeBlockTemp = codeBlock; + while (!(handler = codeBlockTemp->handlerForBytecodeOffset(bytecodeOffsetTemp))) { + callFrameTemp = callFrameTemp->callerFrame(); + if (callFrameTemp->hasHostCallFrameFlag()) { + hasHandler = false; + break; + } else { + codeBlockTemp = callFrameTemp->codeBlock(); + bytecodeOffsetTemp = bytecodeOffsetForPC(callFrameTemp, codeBlockTemp, callFrameTemp->returnPC()); } } -#ifdef QT_BUILD_SCRIPT_LIB if (debugger) - debugger->exceptionThrow(DebuggerCallFrame(callFrame, exceptionValue), codeBlock->ownerNode()->sourceID(),true); + debugger->exceptionThrow(DebuggerCallFrame(callFrame, exceptionValue), codeBlock->ownerNode()->sourceID(), hasHandler); #endif + + while (!(handler = codeBlock->handlerForBytecodeOffset(bytecodeOffset))) { + if (!unwindCallFrame(callFrame, exceptionValue, bytecodeOffset, codeBlock)) { + return 0; + } + } // Now unwind the scope chain within the exception handler's call frame. ScopeChainNode* scopeChain = callFrame->scopeChain(); diff --git a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc index 144feb5..e3c904b 100644 --- a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc +++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc @@ -1,7 +1,7 @@ /*! \module QtWebKit \title QtWebKit Module - \contentspage Qt's Modules + \contentspage All Qt Modules \previouspage QtSvg \nextpage QtXml \ingroup modules diff --git a/src/corelib/global/qendian.qdoc b/src/corelib/global/qendian.qdoc index e0ef662..949f7b8 100644 --- a/src/corelib/global/qendian.qdoc +++ b/src/corelib/global/qendian.qdoc @@ -42,7 +42,7 @@ /*! \headerfile <QtEndian> \title Endian Conversion Functions - \ingroup classlists + \ingroup funclists \brief The <QtEndian> header provides functions to convert between little and big endian representations of numbers. */ diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index c4fbc49..d7ae78f 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -408,13 +408,13 @@ QT_BEGIN_NAMESPACE /*! \headerfile <QtGlobal> \title Global Qt Declarations - \ingroup classlists + \ingroup funclists - \brief The <QtGlobal> header provides basic declarations and - is included by all other Qt headers. + \brief The <QtGlobal> header file includes the fundamental global + declarations. It is included by most other Qt header files. - The declarations include \l {types}, \l functions and - \l macros. + The global declarations include \l{types}, \l{functions} and + \l{macros}. The type definitions are partly convenience definitions for basic types (some of which guarantee certain bit-sizes on all platforms diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index 319e2ce..657e367 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -2422,6 +2422,24 @@ */ /*! + \enum Qt::AnchorPoint + + Specifies a side of a layout item that can be anchored. This is used by + QGraphicsAnchorLayout. + + \value AnchorLeft The left side of a layout item. + \value AnchorHorizontalCenter A "virtual" side that is centered between the left and the + right side of a layout item. + \value AnchorRight The right side of a layout item. + \value AnchorTop The top side of a layout item. + \value AnchorVerticalCenter A "virtual" side that is centered between the top and the + bottom side of a layout item. + \value AnchorBottom The bottom side of a layout item. + + \sa QGraphicsAnchorLayout +*/ + +/*! \enum Qt::InputMethodHint \value ImhNone No hints. diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 65df600..a16ece1 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -174,10 +174,13 @@ static void construct(QVariant::Private *x, const void *copy) case QVariant::UserType: break; default: - x->is_shared = true; - x->data.shared = new QVariant::PrivateShared(QMetaType::construct(x->type, copy)); - if (!x->data.shared->ptr) + void *ptr = QMetaType::construct(x->type, copy); + if (!ptr) { x->type = QVariant::Invalid; + } else { + x->is_shared = true; + x->data.shared = new QVariant::PrivateShared(ptr); + } break; } x->is_null = !copy; @@ -456,15 +459,17 @@ static bool compare(const QVariant::Private *a, const QVariant::Private *b) if (!QMetaType::isRegistered(a->type)) qFatal("QVariant::compare: type %d unknown to QVariant.", a->type); + const void *a_ptr = a->is_shared ? a->data.shared->ptr : &(a->data.ptr); + const void *b_ptr = b->is_shared ? b->data.shared->ptr : &(b->data.ptr); + /* The reason we cannot place this test in a case branch above for the types * QMetaType::VoidStar, QMetaType::QObjectStar and so forth, is that it wouldn't include * user defined pointer types. */ const char *const typeName = QMetaType::typeName(a->type); if (typeName[qstrlen(typeName) - 1] == '*') - return *static_cast<void **>(a->data.shared->ptr) == - *static_cast<void **>(b->data.shared->ptr); + return *static_cast<void *const *>(a_ptr) == *static_cast<void *const *>(b_ptr); - return a->data.shared->ptr == b->data.shared->ptr; + return a_ptr == b_ptr; } /*! @@ -1371,7 +1376,7 @@ void QVariant::create(int type, const void *copy) QVariant::~QVariant() { - if (d.type > Char && d.type != QMetaType::Float && d.type != QMetaType::QObjectStar && (!d.is_shared || !d.data.shared->ref.deref())) + if ((d.is_shared && !d.data.shared->ref.deref()) || (!d.is_shared && d.type > Char && d.type < UserType)) handler->clear(&d); } @@ -1387,7 +1392,7 @@ QVariant::QVariant(const QVariant &p) { if (d.is_shared) { d.data.shared->ref.ref(); - } else if (p.d.type > Char && p.d.type != QMetaType::Float && p.d.type != QMetaType::QObjectStar) { + } else if (p.d.type > Char && p.d.type < QVariant::UserType) { handler->construct(&d, p.constData()); d.is_null = p.d.is_null; } @@ -1627,6 +1632,22 @@ QVariant::QVariant(Type type) { create(type, 0); } QVariant::QVariant(int typeOrUserType, const void *copy) { create(typeOrUserType, copy); d.is_null = false; } + +/*! \internal + flags is true if it is a pointer type + */ +QVariant::QVariant(int typeOrUserType, const void *copy, uint flags) +{ + if (flags) { //type is a pointer type + d.type = typeOrUserType; + d.data.ptr = *reinterpret_cast<void *const*>(copy); + d.is_null = false; + } else { + create(typeOrUserType, copy); + d.is_null = false; + } +} + QVariant::QVariant(int val) { d.is_null = false; d.type = Int; d.data.i = val; } QVariant::QVariant(uint val) @@ -1743,7 +1764,7 @@ QVariant& QVariant::operator=(const QVariant &variant) if (variant.d.is_shared) { variant.d.data.shared->ref.ref(); d = variant.d; - } else if (variant.d.type > Char && variant.d.type != QMetaType::Float && variant.d.type != QMetaType::QObjectStar) { + } else if (variant.d.type > Char && variant.d.type < UserType) { d.type = variant.d.type; handler->construct(&d, variant.constData()); d.is_null = variant.d.is_null; @@ -1797,7 +1818,7 @@ const char *QVariant::typeName() const */ void QVariant::clear() { - if (!d.is_shared || !d.data.shared->ref.deref()) + if ((d.is_shared && !d.data.shared->ref.deref()) || (!d.is_shared && d.type < UserType && d.type > Char)) handler->clear(&d); d.type = Invalid; d.is_null = true; diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index d6a704e..97af54b 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -174,6 +174,7 @@ class Q_CORE_EXPORT QVariant ~QVariant(); QVariant(Type type); QVariant(int typeOrUserType, const void *copy); + QVariant(int typeOrUserType, const void *copy, uint flags); QVariant(const QVariant &other); #ifndef QT_NO_DATASTREAM @@ -445,7 +446,7 @@ inline bool qvariant_cast_helper(const QVariant &v, QVariant::Type tp, void *ptr template <typename T> inline QVariant qVariantFromValue(const T &t) { - return QVariant(qMetaTypeId<T>(reinterpret_cast<T *>(0)), &t); + return QVariant(qMetaTypeId<T>(reinterpret_cast<T *>(0)), &t, QTypeInfo<T>::isPointer); } template <> @@ -464,7 +465,7 @@ inline void qVariantSetValue(QVariant &v, const T &t) old->~T(); new (old) T(t); //call the copy constructor } else { - v = QVariant(type, &t); + v = QVariant(type, &t, QTypeInfo<T>::isPointer); } } diff --git a/src/corelib/statemachine/qeventtransition.cpp b/src/corelib/statemachine/qeventtransition.cpp index e2d1f69..89dabde 100644 --- a/src/corelib/statemachine/qeventtransition.cpp +++ b/src/corelib/statemachine/qeventtransition.cpp @@ -92,7 +92,7 @@ QT_BEGIN_NAMESPACE */ /*! - \property QEventTransition::eventObject + \property QEventTransition::eventSource \brief the event source that this event transition is associated with */ @@ -205,7 +205,7 @@ void QEventTransition::setEventType(QEvent::Type type) /*! Returns the event source associated with this event transition. */ -QObject *QEventTransition::eventObject() const +QObject *QEventTransition::eventSource() const { Q_D(const QEventTransition); return d->object; @@ -215,7 +215,7 @@ QObject *QEventTransition::eventObject() const Sets the event source associated with this event transition to be the given \a object. */ -void QEventTransition::setEventObject(QObject *object) +void QEventTransition::setEventSource(QObject *object) { Q_D(QEventTransition); if (d->object == object) diff --git a/src/corelib/statemachine/qeventtransition.h b/src/corelib/statemachine/qeventtransition.h index 6cf6a96..941bfa5 100644 --- a/src/corelib/statemachine/qeventtransition.h +++ b/src/corelib/statemachine/qeventtransition.h @@ -57,15 +57,15 @@ class QEventTransitionPrivate; class Q_CORE_EXPORT QEventTransition : public QAbstractTransition { Q_OBJECT - Q_PROPERTY(QObject* eventObject READ eventObject WRITE setEventObject) + Q_PROPERTY(QObject* eventSource READ eventSource WRITE setEventSource) Q_PROPERTY(QEvent::Type eventType READ eventType WRITE setEventType) public: QEventTransition(QState *sourceState = 0); QEventTransition(QObject *object, QEvent::Type type, QState *sourceState = 0); ~QEventTransition(); - QObject *eventObject() const; - void setEventObject(QObject *object); + QObject *eventSource() const; + void setEventSource(QObject *object); QEvent::Type eventType() const; void setEventType(QEvent::Type type); diff --git a/src/corelib/tools/qalgorithms.qdoc b/src/corelib/tools/qalgorithms.qdoc index f7b7798..771c544 100644 --- a/src/corelib/tools/qalgorithms.qdoc +++ b/src/corelib/tools/qalgorithms.qdoc @@ -42,9 +42,9 @@ /*! \headerfile <QtAlgorithms> \title Generic Algorithms - \ingroup classlists + \ingroup funclists - \brief The <QtAlgorithms> header provides generic template-based algorithms. + \brief The <QtAlgorithms> header includes the generic, template-based algorithms. Qt provides a number of global template functions in \c <QtAlgorithms> that work on containers and perform well-know diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index 9d0ead1..f0df0c9 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -402,7 +402,7 @@ void QEglContext::dumpAllConfigs() QString QEglContext::extensions() { - const char* exts = eglQueryString(dpy, EGL_EXTENSIONS); + const char* exts = eglQueryString(QEglContext::defaultDisplay(0), EGL_EXTENSIONS); return QString(QLatin1String(exts)); } diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h index bba5e59..97730d8 100644 --- a/src/gui/egl/qegl_p.h +++ b/src/gui/egl/qegl_p.h @@ -122,8 +122,8 @@ public: void dumpAllConfigs(); - QString extensions(); - bool hasExtension(const char* extensionName); + static QString extensions(); + static bool hasExtension(const char* extensionName); private: QEgl::API apiType; diff --git a/src/gui/egl/qeglproperties.cpp b/src/gui/egl/qeglproperties.cpp index 22b55fe..7b582c4 100644 --- a/src/gui/egl/qeglproperties.cpp +++ b/src/gui/egl/qeglproperties.cpp @@ -257,6 +257,20 @@ static void addTag(QString& str, const QString& tag) str += tag; } +void QEglProperties::dumpAllConfigs() +{ + EGLint count = 0; + eglGetConfigs(QEglContext::defaultDisplay(0), 0, 0, &count); + if (count < 1) + return; + + EGLConfig *configs = new EGLConfig [count]; + eglGetConfigs(QEglContext::defaultDisplay(0), configs, count, &count); + for (EGLint index = 0; index < count; ++index) + qWarning() << QEglProperties(configs[index]).toString(); + delete [] configs; +} + // Convert a property list to a string suitable for debug output. QString QEglProperties::toString() const { diff --git a/src/gui/egl/qeglproperties_p.h b/src/gui/egl/qeglproperties_p.h index 4ef3814..383a873 100644 --- a/src/gui/egl/qeglproperties_p.h +++ b/src/gui/egl/qeglproperties_p.h @@ -130,6 +130,8 @@ public: QString toString() const; + static void dumpAllConfigs(); + private: QVarLengthArray<int> props; }; diff --git a/src/gui/graphicsview/qgraphicsanchorlayout.cpp b/src/gui/graphicsview/qgraphicsanchorlayout.cpp index fed0e5a..3c2ea37 100644 --- a/src/gui/graphicsview/qgraphicsanchorlayout.cpp +++ b/src/gui/graphicsview/qgraphicsanchorlayout.cpp @@ -130,7 +130,8 @@ QGraphicsAnchorLayout::~QGraphicsAnchorLayout() * * The spacing can also be set manually by using setAnchorSpacing() method. * - * \sa removeAnchor, addCornerAnchors, addLeftAndRightAnchors, addTopAndBottomAnchors, addAllAnchors + * \sa removeAnchor(), addCornerAnchors(), addLeftAndRightAnchors(), addTopAndBottomAnchors(), + * addAllAnchors() */ void QGraphicsAnchorLayout::addAnchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge) @@ -251,7 +252,7 @@ qreal QGraphicsAnchorLayout::anchorSpacing(const QGraphicsLayoutItem *firstItem, \a secondItem and \a secondEdge to be the default spacing. Depending on the anchor type, the default spacing is either 0 or a value returned from the style. - \sa setAnchorSpacing, anchorSpacing, addAnchor + \sa setAnchorSpacing(), anchorSpacing(), addAnchor() */ void QGraphicsAnchorLayout::unsetAnchorSpacing(const QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, const QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge) @@ -297,7 +298,7 @@ void QGraphicsAnchorLayout::removeAnchor(QGraphicsLayoutItem *firstItem, Qt::Anc /*! Sets the default horizontal spacing for the anchor layout to \a spacing. - \sa horizontalSpacing, setVerticalSpacing, setSpacing + \sa horizontalSpacing(), setVerticalSpacing(), setSpacing() */ void QGraphicsAnchorLayout::setHorizontalSpacing(qreal spacing) { @@ -309,7 +310,7 @@ void QGraphicsAnchorLayout::setHorizontalSpacing(qreal spacing) /*! Sets the default vertical spacing for the anchor layout to \a spacing. - \sa verticalSpacing, setHorizontalSpacing, setSpacing + \sa verticalSpacing(), setHorizontalSpacing(), setSpacing() */ void QGraphicsAnchorLayout::setVerticalSpacing(qreal spacing) { @@ -323,7 +324,7 @@ void QGraphicsAnchorLayout::setVerticalSpacing(qreal spacing) If an item is anchored with no spacing associated with the anchor, it will use the default spacing. - \sa setHorizontalSpacing, setVerticalSpacing + \sa setHorizontalSpacing(), setVerticalSpacing() */ void QGraphicsAnchorLayout::setSpacing(qreal spacing) { @@ -335,7 +336,7 @@ void QGraphicsAnchorLayout::setSpacing(qreal spacing) /*! Returns the default horizontal spacing for the anchor layout. - \sa verticalSpacing, setHorizontalSpacing + \sa verticalSpacing(), setHorizontalSpacing() */ qreal QGraphicsAnchorLayout::horizontalSpacing() const { @@ -346,7 +347,7 @@ qreal QGraphicsAnchorLayout::horizontalSpacing() const /*! Returns the default vertical spacing for the anchor layout. - \sa horizontalSpacing, setVerticalSpacing + \sa horizontalSpacing(), setVerticalSpacing() */ qreal QGraphicsAnchorLayout::verticalSpacing() const { diff --git a/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp b/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp index c137de3..9a34ad5 100644 --- a/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp +++ b/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp @@ -1652,7 +1652,7 @@ QList<QSimplexConstraint *> QGraphicsAnchorLayoutPrivate::constraintsFromSizeHin } /*! - \Internal + \internal */ QList< QList<QSimplexConstraint *> > QGraphicsAnchorLayoutPrivate::getGraphParts(Orientation orientation) diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 0bca8f7..e1a6e80 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -2563,6 +2563,8 @@ void QPainter::setClipRect(const QRectF &rect, Qt::ClipOperation op) QVectorPath vp(pts, 4, 0, QVectorPath::RectangleHint); d->state->clipEnabled = true; d->extended->clip(vp, op); + if (op == Qt::ReplaceClip || op == Qt::NoClip) + d->state->clipInfo.clear(); d->state->clipInfo << QPainterClipInfo(rect, op, d->state->matrix); d->state->clipOperation = op; return; @@ -2609,6 +2611,8 @@ void QPainter::setClipRect(const QRect &rect, Qt::ClipOperation op) if (d->extended) { d->state->clipEnabled = true; d->extended->clip(rect, op); + if (op == Qt::ReplaceClip || op == Qt::NoClip) + d->state->clipInfo.clear(); d->state->clipInfo << QPainterClipInfo(rect, op, d->state->matrix); d->state->clipOperation = op; return; @@ -2662,6 +2666,8 @@ void QPainter::setClipRegion(const QRegion &r, Qt::ClipOperation op) if (d->extended) { d->state->clipEnabled = true; d->extended->clip(r, op); + if (op == Qt::NoClip || op == Qt::ReplaceClip) + d->state->clipInfo.clear(); d->state->clipInfo << QPainterClipInfo(r, op, d->state->matrix); d->state->clipOperation = op; return; @@ -3066,6 +3072,8 @@ void QPainter::setClipPath(const QPainterPath &path, Qt::ClipOperation op) if (d->extended) { d->state->clipEnabled = true; d->extended->clip(path, op); + if (op == Qt::NoClip || op == Qt::ReplaceClip) + d->state->clipInfo.clear(); d->state->clipInfo << QPainterClipInfo(path, op, d->state->matrix); d->state->clipOperation = op; return; diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index f2a14d6..70a35b2 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -1302,7 +1302,6 @@ void QGLContextPrivate::init(QPaintDevice *dev, const QGLFormat &format) #if defined(QT_OPENGL_ES) eglContext = 0; #endif - pbo = 0; fbo = 0; crWin = false; initDone = false; @@ -1645,12 +1644,6 @@ QGLContext::~QGLContext() void QGLContextPrivate::cleanup() { - Q_Q(QGLContext); - if (pbo) { - QGLContext *ctx = q; - glDeleteBuffers(1, &pbo); - pbo = 0; - } } typedef QHash<QString, GLuint> QGLDDSCache; @@ -1914,14 +1907,6 @@ QGLTexture* QGLContextPrivate::bindTexture(const QImage &image, GLenum target, G QGLContext *ctx = q; - bool use_pbo = false; - if (QGLExtensions::glExtensions & QGLExtensions::PixelBufferObject) { - - use_pbo = qt_resolve_buffer_extensions(ctx); - if (use_pbo && pbo == 0) - glGenBuffers(1, &pbo); - } - // the GL_BGRA format is only present in GL version >= 1.2 GLenum texture_format = (QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_1_2) ? GL_BGRA : GL_RGBA; @@ -1956,20 +1941,10 @@ QGLTexture* QGLContextPrivate::bindTexture(const QImage &image, GLenum target, G glTexParameterf(target, GL_GENERATE_MIPMAP_SGIS, GL_TRUE); #endif glTexParameterf(target, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - - // Mipmap generation causes huge slowdown with PBO's for some reason - use_pbo = false; } else { glTexParameterf(target, GL_TEXTURE_MIN_FILTER, GL_LINEAR); } - uchar *ptr = 0; - if (use_pbo) { - glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, pbo); - glBufferData(GL_PIXEL_UNPACK_BUFFER_ARB, img.width() * img.height() * 4, 0, GL_STREAM_DRAW_ARB); - ptr = reinterpret_cast<uchar *>(glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, GL_WRITE_ONLY_ARB)); - } - QImage::Format target_format = img.format(); // Note: the clean param is only true when a texture is bound // from the QOpenGLPaintEngine - in that case we have to force @@ -1979,21 +1954,10 @@ QGLTexture* QGLContextPrivate::bindTexture(const QImage &image, GLenum target, G if (img.format() != target_format) img = img.convertToFormat(target_format); - if (ptr) { - QImage buffer(ptr, img.width(), img.height(), target_format); - convertToGLFormatHelper(buffer, img, texture_format); - glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB); - glTexImage2D(target, 0, format, img.width(), img.height(), 0, texture_format, - GL_UNSIGNED_BYTE, 0); - } else { - QImage tx(scale ? QSize(tx_w, tx_h) : img.size(), target_format); - convertToGLFormatHelper(tx, img, texture_format); - glTexImage2D(target, 0, format, tx.width(), tx.height(), 0, texture_format, - GL_UNSIGNED_BYTE, tx.bits()); - } - - if (use_pbo) - glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, 0); + QImage tx(scale ? QSize(tx_w, tx_h) : img.size(), target_format); + convertToGLFormatHelper(tx, img, texture_format); + glTexImage2D(target, 0, format, tx.width(), tx.height(), 0, texture_format, + GL_UNSIGNED_BYTE, tx.bits()); // this assumes the size of a texture is always smaller than the max cache size int cost = img.width()*img.height()*4/1024; @@ -3408,12 +3372,15 @@ bool QGLWidget::event(QEvent *e) setContext(new QGLContext(d->glcx->requestedFormat(), this)); // ### recreating the overlay isn't supported atm } + } + #if defined(QT_OPENGL_ES) - // The window may have been re-created during re-parent - if so, the EGL + if ((e->type() == QEvent::ParentChange) || (e->type() == QEvent::WindowStateChange)) { + // The window may have been re-created during re-parent or state change - if so, the EGL // surface will need to be re-created. d->recreateEglSurface(false); -#endif } +#endif #elif defined(Q_WS_WIN) if (e->type() == QEvent::ParentChange) { QGLContext *newContext = new QGLContext(d->glcx->requestedFormat(), this); diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index 92aea6c..ab040ed 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -252,7 +252,6 @@ public: #endif QGLFormat glFormat; QGLFormat reqFormat; - GLuint pbo; GLuint fbo; uint valid : 1; diff --git a/src/script/script.pro b/src/script/script.pro index f67c698..5844620 100644 --- a/src/script/script.pro +++ b/src/script/script.pro @@ -37,6 +37,15 @@ wince* { LIBS += -lmmtimer } +# avoid warnings when parsing JavaScriptCore.pri +# (we don't care about generating files, we already have them generated) +defineTest(addExtraCompiler) { + return(true) +} +defineTest(addExtraCompilerWithHeader) { + return(true) +} + include($$WEBKITDIR/JavaScriptCore/JavaScriptCore.pri) INCLUDEPATH += $$WEBKITDIR/JavaScriptCore diff --git a/tests/auto/qscriptengineagent/tst_qscriptengineagent.cpp b/tests/auto/qscriptengineagent/tst_qscriptengineagent.cpp index 932803a..886c70b 100644 --- a/tests/auto/qscriptengineagent/tst_qscriptengineagent.cpp +++ b/tests/auto/qscriptengineagent/tst_qscriptengineagent.cpp @@ -1844,7 +1844,6 @@ void tst_QScriptEngineAgent::eventOrder_functions() QCOMPARE(spy->at(37).type, ScriptEngineEvent::ContextPop); // exception QCOMPARE(spy->at(38).type, ScriptEngineEvent::ExceptionThrow); - QEXPECT_FAIL("","New backend propably gives bad script id for exceptions", Abort); QCOMPARE(spy->at(38).scriptId, spy->at(21).scriptId); QVERIFY(!spy->at(38).hasExceptionHandler); // bar() exit @@ -1921,7 +1920,6 @@ void tst_QScriptEngineAgent::eventOrder_signalsHandling() emit testSignal(123); - QEXPECT_FAIL("","Signals events problem", Abort); QCOMPARE(spy->count(), 14); // new context QCOMPARE(spy->at(4).type, ScriptEngineEvent::ContextPush); @@ -2048,7 +2046,7 @@ void tst_QScriptEngineAgent::syntaxError() spy->clear(); eng.evaluate("{"); - //QCOMPARE(spy->count(), 9); + QCOMPARE(spy->count(), 9); QCOMPARE(spy->at(i).type, ScriptEngineEvent::ScriptLoad); QVERIFY(spy->at(i).scriptId != -1); diff --git a/tests/auto/qstatemachine/tst_qstatemachine.cpp b/tests/auto/qstatemachine/tst_qstatemachine.cpp index 5e2064b..20e69ce 100644 --- a/tests/auto/qstatemachine/tst_qstatemachine.cpp +++ b/tests/auto/qstatemachine/tst_qstatemachine.cpp @@ -2066,7 +2066,7 @@ void tst_QStateMachine::eventTransitions() QPushButton button2; machine.start(); QCoreApplication::processEvents(); - trans->setEventObject(&button2); + trans->setEventSource(&button2); QTest::mousePress(&button2, Qt::LeftButton); QTRY_COMPARE(finishedSpy.count(), 4); } @@ -2078,16 +2078,16 @@ void tst_QStateMachine::eventTransitions() QEventTransition *trans; if (x == 0) { trans = new QEventTransition(); - QCOMPARE(trans->eventObject(), (QObject*)0); + QCOMPARE(trans->eventSource(), (QObject*)0); QCOMPARE(trans->eventType(), QEvent::None); - trans->setEventObject(&button); + trans->setEventSource(&button); trans->setEventType(QEvent::MouseButtonPress); trans->setTargetState(s1); } else if (x == 1) { trans = new QEventTransition(&button, QEvent::MouseButtonPress); trans->setTargetState(s1); } - QCOMPARE(trans->eventObject(), (QObject*)&button); + QCOMPARE(trans->eventSource(), (QObject*)&button); QCOMPARE(trans->eventType(), QEvent::MouseButtonPress); QCOMPARE(trans->targetState(), (QAbstractState*)s1); s0->addTransition(trans); @@ -2108,10 +2108,10 @@ void tst_QStateMachine::eventTransitions() QFinalState *s1 = new QFinalState(&machine); QMouseEventTransition *trans = new QMouseEventTransition(); - QCOMPARE(trans->eventObject(), (QObject*)0); + QCOMPARE(trans->eventSource(), (QObject*)0); QCOMPARE(trans->eventType(), QEvent::None); QCOMPARE(trans->button(), Qt::NoButton); - trans->setEventObject(&button); + trans->setEventSource(&button); trans->setEventType(QEvent::MouseButtonPress); trans->setButton(Qt::LeftButton); trans->setTargetState(s1); @@ -2155,10 +2155,10 @@ void tst_QStateMachine::eventTransitions() QFinalState *s1 = new QFinalState(&machine); QKeyEventTransition *trans = new QKeyEventTransition(); - QCOMPARE(trans->eventObject(), (QObject*)0); + QCOMPARE(trans->eventSource(), (QObject*)0); QCOMPARE(trans->eventType(), QEvent::None); QCOMPARE(trans->key(), 0); - trans->setEventObject(&button); + trans->setEventSource(&button); trans->setEventType(QEvent::KeyPress); trans->setKey(Qt::Key_A); trans->setTargetState(s1); diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/qvariant/tst_qvariant.cpp index 729e29b..fc977bc 100644 --- a/tests/auto/qvariant/tst_qvariant.cpp +++ b/tests/auto/qvariant/tst_qvariant.cpp @@ -2623,7 +2623,7 @@ void tst_QVariant::qvariant_cast_QObject_data() { QTest::addColumn<QVariant>("data"); QTest::addColumn<bool>("success"); - QTest::newRow("from QObject") << QVariant(QMetaType::QObjectStar, new QObject) << true; + QTest::newRow("from QObject") << QVariant(QMetaType::QObjectStar, new QObject(this)) << true; QTest::newRow("from String") << QVariant(QLatin1String("1, 2, 3")) << false; QTest::newRow("from int") << QVariant((int) 123) << false; } @@ -2748,6 +2748,7 @@ void tst_QVariant::dataStar() const v2 = qVariantFromValue(p1); QVERIFY(v1 == v2); + delete p1; } void tst_QVariant::canConvertQStringList() const diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index 84e330f..3d62d7c 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -539,12 +539,15 @@ int HtmlGenerator::generateAtom(const Atom *atom, break; case Atom::AnnotatedList: { + //qDebug() << "ANNOTATED LIS:"; QList<Node*> values = tre->groups().values(atom->string()); QMap<QString, const Node*> nodeMap; for (int i = 0; i < values.size(); ++i) { const Node* n = values.at(i); - if ((n->status() != Node::Internal) && (n->access() != Node::Private)) - nodeMap.insert(n->name(),n); + if ((n->status() != Node::Internal) && (n->access() != Node::Private)) { + nodeMap.insert(n->nameForLists(),n); + //qDebug() << " " << n->nameForLists(); + } } generateAnnotatedList(relative, marker, nodeMap); } diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h index 0cddf51..e956fed 100644 --- a/tools/qdoc3/node.h +++ b/tools/qdoc3/node.h @@ -157,6 +157,7 @@ class Node QMap<LinkType, QPair<QString,QString> > links() const { return linkMap; } QString moduleName() const; QString url() const; + virtual QString nameForLists() const { return nam; } Access access() const { return acc; } const Location& location() const { return loc; } @@ -337,6 +338,7 @@ class FakeNode : public InnerNode QString fullTitle() const; QString subTitle() const; const NodeList &groupMembers() const { return gr; } + virtual QString nameForLists() const { return title(); } private: SubType sub; diff --git a/tools/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro index 49a16e6..21b3bb9 100644 --- a/tools/qdoc3/qdoc3.pro +++ b/tools/qdoc3/qdoc3.pro @@ -7,6 +7,7 @@ DEFINES += QT_NO_CAST_TO_ASCII QT = core xml CONFIG += console CONFIG -= debug_and_release_target +DESTDIR = $$QT_BUILD_TREE/bin #CONFIG += debug build_all:!build_pass { CONFIG -= build_all diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf index f31e657..f9e3c35 100644 --- a/tools/qdoc3/test/qt-html-templates.qdocconf +++ b/tools/qdoc3/test/qt-html-templates.qdocconf @@ -22,12 +22,6 @@ HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0 "<input type=\"submit\" name=\"sa\" value=\"Search\" />" \ "</div>" \ "</form>" \ - \ - "<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>" \ - "<script type=\"text/javascript\">google.load(\"elements\", \"1\", {packages: \"transliteration\"});</script>" \ - "<script type=\"text/javascript\" src=\"http://www.google.com/coop/cse/t13n?form=cse-search-box&t13n_langs=en\"></script>" \ - \ - "<script type=\"text/javascript\" src=\"http://www.google.com/coop/cse/brand?form=cse-search-box&lang=en\"></script>"\ "</td>\n" \ "</tr></table>" @@ -36,4 +30,10 @@ HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \ "<td width=\"40%\" align=\"left\">Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \ "<td width=\"20%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \ "<td width=\"40%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \ + \ + "<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>" \ + "<script type=\"text/javascript\">google.load(\"elements\", \"1\", {packages: \"transliteration\"});</script>" \ + "<script type=\"text/javascript\" src=\"http://www.google.com/coop/cse/t13n?form=cse-search-box&t13n_langs=en\"></script>" \ + \ + "<script type=\"text/javascript\" src=\"http://www.google.com/coop/cse/brand?form=cse-search-box&lang=en\"></script>"\ "</tr></table></div></address>" |