summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfig.tests/unix/bsymbolic_functions.test3
-rwxr-xr-xconfigure6
-rwxr-xr-xconfigure.exebin1319424 -> 1318912 bytes
-rw-r--r--dist/changes-4.7.088
-rw-r--r--doc/src/classes.qdoc6
-rw-r--r--doc/src/declarative/declarativeui.qdoc66
-rw-r--r--doc/src/declarative/examples.qdoc5
-rw-r--r--doc/src/development/qmake-manual.qdoc1
-rw-r--r--doc/src/diagrams/modelview-move-rows-1.sk271
-rw-r--r--doc/src/diagrams/modelview-move-rows-2.sk271
-rw-r--r--doc/src/diagrams/modelview-move-rows-3.sk137
-rw-r--r--doc/src/diagrams/modelview-move-rows-4.sk137
-rw-r--r--doc/src/frameworks-technologies/animation.qdoc1
-rw-r--r--doc/src/frameworks-technologies/eventsandfilters.qdoc3
-rw-r--r--doc/src/frameworks-technologies/graphicsview.qdoc1
-rw-r--r--doc/src/frameworks-technologies/model-view-programming.qdoc1
-rw-r--r--doc/src/frameworks-technologies/threads.qdoc1
-rw-r--r--doc/src/getting-started/examples.qdoc92
-rw-r--r--doc/src/index.qdoc31
-rw-r--r--doc/src/modules.qdoc46
-rw-r--r--doc/src/objectmodel/metaobjects.qdoc3
-rw-r--r--doc/src/objectmodel/object.qdoc3
-rw-r--r--doc/src/objectmodel/objecttrees.qdoc3
-rw-r--r--doc/src/objectmodel/properties.qdoc3
-rw-r--r--doc/src/objectmodel/signalsandslots.qdoc3
-rw-r--r--doc/src/overviews.qdoc32
-rw-r--r--doc/src/painting-and-printing/coordsys.qdoc1
-rw-r--r--doc/src/painting-and-printing/paintsystem.qdoc1
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp20
-rwxr-xr-xdoc/src/template/images/api_examples.pngbin1302 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/api_lookup.pngbin1879 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/api_topics.pngbin1216 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/bg_l.pngbin139 -> 100 bytes
-rwxr-xr-xdoc/src/template/images/bg_l_blank.pngbin123 -> 84 bytes
-rwxr-xr-xdoc/src/template/images/bg_ll.pngbin514 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/bg_ll_blank.pngbin320 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/bg_lr.pngbin458 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/bg_r.pngbin136 -> 96 bytes
-rwxr-xr-xdoc/src/template/images/bg_ul.pngbin516 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/bg_ul_blank.pngbin304 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/bg_ur.pngbin437 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/bg_ur_blank.pngbin437 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/box_bg.pngbin129 -> 89 bytes
-rwxr-xr-xdoc/src/template/images/breadcrumb.pngbin195 -> 134 bytes
-rwxr-xr-xdoc/src/template/images/bullet_gt.pngbin185 -> 124 bytes
-rwxr-xr-xdoc/src/template/images/bullet_sq.pngbin117 -> 74 bytes
-rwxr-xr-xdoc/src/template/images/content_bg.pngbin1498 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/form_bg.pngbin390 -> 0 bytes
-rw-r--r--doc/src/template/images/header.pngbin2600 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/page_bg.pngbin126 -> 84 bytes
-rwxr-xr-xdoc/src/template/images/print.pngbin575 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/qt_guide.pngbin12685 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/qt_icon.pngbin4775 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/qt_ref_doc.pngbin2600 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/qt_tools.pngbin17508 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/sep.pngbin120 -> 0 bytes
-rwxr-xr-xdoc/src/template/images/sprites-combined.pngbin18070 -> 62534 bytes
-rwxr-xr-xdoc/src/template/scripts/functions.js137
-rwxr-xr-xdoc/src/template/style/style.css890
-rw-r--r--doc/src/widgets-and-layouts/layout.qdoc1
-rw-r--r--doc/src/widgets-and-layouts/styles.qdoc1
-rw-r--r--doc/src/widgets-and-layouts/widgets.qdoc1
-rw-r--r--doc/src/windows-and-dialogs/dialogs.qdoc1
-rw-r--r--doc/src/windows-and-dialogs/mainwindow.qdoc1
-rw-r--r--mkspecs/common/symbian/symbian.conf2
-rw-r--r--qmake/generators/win32/msvc_objectmodel.h2
-rw-r--r--qmake/generators/win32/msvc_vcxproj.cpp1
-rw-r--r--qmake/qmake.pri8
-rw-r--r--src/corelib/io/qurl.cpp79
-rw-r--r--src/corelib/io/qurl.h1
-rw-r--r--src/corelib/kernel/qabstractitemmodel.cpp56
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp13
-rw-r--r--src/corelib/kernel/qcoreapplication_p.h7
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian.cpp2
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian_p.h1
-rw-r--r--src/corelib/tools/qchar.cpp31
-rw-r--r--src/corelib/tools/qchar.h9
-rw-r--r--src/corelib/tools/qlocale.cpp12
-rw-r--r--src/corelib/tools/qlocale_p.h18
-rw-r--r--src/corelib/tools/qlocale_symbian.cpp53
-rw-r--r--src/corelib/tools/qmap.h20
-rw-r--r--src/dbus/qdbusinternalfilters.cpp2
-rw-r--r--src/dbus/qdbusxmlgenerator.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativegridview_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview_p.h2
-rw-r--r--src/declarative/qml/qdeclarativebinding_p.h2
-rw-r--r--src/declarative/qml/qdeclarativecompiledbindings_p.h4
-rw-r--r--src/declarative/qml/qdeclarativecomponent_p.h2
-rw-r--r--src/declarative/qml/qdeclarativecompositetypemanager.cpp39
-rw-r--r--src/declarative/qml/qdeclarativecontext.h2
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp2
-rw-r--r--src/declarative/qml/qdeclarativeguard_p.h2
-rw-r--r--src/declarative/qml/qdeclarativepropertycache.cpp2
-rw-r--r--src/declarative/qml/qdeclarativescriptstring.h2
-rw-r--r--src/declarative/qml/qdeclarativestringconverters_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeworkerscript_p.h2
-rw-r--r--src/declarative/qml/qdeclarativexmlhttprequest.cpp6
-rw-r--r--src/declarative/util/qdeclarativelistmodelworkeragent_p.h2
-rw-r--r--src/declarative/util/qdeclarativesmoothedanimation_p.h2
-rw-r--r--src/declarative/util/qdeclarativesmoothedfollow_p.h2
-rw-r--r--src/declarative/util/qdeclarativetransitionmanager_p_p.h2
-rw-r--r--src/gui/dialogs/qcolordialog_mac.mm20
-rw-r--r--src/gui/dialogs/qfiledialog_mac.mm32
-rw-r--r--src/gui/dialogs/qfontdialog_mac.mm16
-rw-r--r--src/gui/dialogs/qnspanelproxy_mac.mm24
-rw-r--r--src/gui/dialogs/qpagesetupdialog_mac.mm8
-rw-r--r--src/gui/dialogs/qprintdialog_mac.mm8
-rw-r--r--src/gui/dialogs/qwizard_win.cpp3
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp7
-rw-r--r--src/gui/kernel/qapplication.cpp17
-rw-r--r--src/gui/kernel/qapplication_win.cpp2
-rw-r--r--src/gui/kernel/qdnd_qws.cpp4
-rw-r--r--src/gui/kernel/qdnd_x11.cpp6
-rw-r--r--src/gui/kernel/qgesturemanager.cpp33
-rw-r--r--src/gui/kernel/qgesturemanager_p.h2
-rw-r--r--src/gui/kernel/qsound_mac.mm6
-rw-r--r--src/gui/kernel/qwidget.cpp3
-rw-r--r--src/gui/kernel/qwidget_mac.mm30
-rw-r--r--src/gui/kernel/qwidget_win.cpp2
-rw-r--r--src/gui/kernel/qwidget_wince.cpp2
-rw-r--r--src/gui/painting/qprintengine_pdf.cpp46
-rw-r--r--src/gui/painting/qprintengine_pdf_p.h1
-rw-r--r--src/gui/styles/qcleanlooksstyle.cpp6
-rw-r--r--src/gui/styles/qgtkstyle.cpp45
-rw-r--r--src/gui/util/qcompleter.cpp21
-rw-r--r--src/gui/util/qsystemtrayicon_mac.mm37
-rw-r--r--src/gui/widgets/qcocoatoolbardelegate_mac.mm2
-rw-r--r--src/gui/widgets/qcocoatoolbardelegate_mac_p.h2
-rw-r--r--src/gui/widgets/qmainwindowlayout_mac.mm2
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp11
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h2
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp7
-rw-r--r--src/network/access/qhttpnetworkrequest.cpp13
-rw-r--r--src/network/access/qhttpnetworkrequest_p.h4
-rw-r--r--src/network/access/qnetworkaccessbackend.cpp5
-rw-r--r--src/network/access/qnetworkaccessbackend_p.h1
-rw-r--r--src/network/access/qnetworkaccessfilebackend.cpp11
-rw-r--r--src/network/access/qnetworkaccessftpbackend.cpp2
-rw-r--r--src/network/access/qnetworkaccesshttpbackend.cpp13
-rw-r--r--src/network/access/qnetworkaccesshttpbackend_p.h1
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp38
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp8
-rw-r--r--src/network/access/qnetworkrequest.cpp52
-rw-r--r--src/network/access/qnetworkrequest.h7
-rw-r--r--src/network/kernel/qhostinfo.cpp29
-rw-r--r--src/network/kernel/qhostinfo_p.h4
-rw-r--r--src/network/socket/qtcpserver.cpp18
-rw-r--r--src/network/socket/qtcpserver.h1
-rw-r--r--tests/auto/gestures/tst_gestures.cpp71
-rw-r--r--tests/auto/qfile/largefile/tst_largefile.cpp4
-rw-r--r--tests/auto/qnetworkreply/smb-file.txt1
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp29
-rw-r--r--tests/auto/qprinter/tst_qprinter.cpp28
-rw-r--r--tests/auto/qurl/tst_qurl.cpp11
-rw-r--r--tests/auto/qxmlquery/tst_qxmlquery.cpp18
-rw-r--r--tools/configure/configureapp.cpp4
-rw-r--r--tools/qdoc3/htmlgenerator.cpp196
-rw-r--r--tools/qdoc3/htmlgenerator.h1
-rw-r--r--tools/qdoc3/node.cpp2
-rw-r--r--tools/qdoc3/test/assistant.qdocconf43
-rw-r--r--tools/qdoc3/test/designer.qdocconf57
-rw-r--r--tools/qdoc3/test/linguist.qdocconf57
-rw-r--r--tools/qdoc3/test/qdeclarative.qdocconf60
-rw-r--r--tools/qdoc3/test/qmake.qdocconf61
-rw-r--r--tools/qdoc3/test/qt-build-docs.qdocconf60
-rw-r--r--tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf60
-rw-r--r--tools/qdoc3/test/qt-defines.qdocconf45
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf82
-rw-r--r--tools/qdoc3/test/qt.qdocconf60
-rw-r--r--tools/qdoc3/test/qt_zh_CN.qdocconf60
-rw-r--r--tools/qdoc3/test/style/style.css797
171 files changed, 3509 insertions, 1578 deletions
diff --git a/config.tests/unix/bsymbolic_functions.test b/config.tests/unix/bsymbolic_functions.test
index 52fdb32..6c34895 100755
--- a/config.tests/unix/bsymbolic_functions.test
+++ b/config.tests/unix/bsymbolic_functions.test
@@ -4,11 +4,12 @@ BSYMBOLIC_FUNCTIONS_SUPPORT=no
COMPILER=$1
VERBOSE=$2
+
cat >>bsymbolic_functions.c << EOF
int main() { return 0; }
EOF
-"$COMPILER" -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c >/dev/null 2>&1 && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
+$COMPILER -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c >/dev/null 2>&1 && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
rm -f bsymbolic_functions.c libtest.so
# done
diff --git a/configure b/configure
index 6763969..3ed017d 100755
--- a/configure
+++ b/configure
@@ -3097,8 +3097,8 @@ fi
# auto-detect support for separate debug info in objcopy
if [ "$CFG_SEPARATE_DEBUG_INFO" != "no" ] && [ "$CFG_SHARED" = "yes" ]; then
- TEST_COMPILER_CFLAGS=`getQMakeConf "$XQMAKESPEC" | sed -n -e 's%QMAKE_CFLAGS[^_].*=%%p' | tr '\n' ' '`
- TEST_COMPILER_CXXFLAGS=`getQMakeConf "$XQMAKESPEC" | sed -n -e 's%QMAKE_CXXFLAGS[^_].*=%%p' | tr '\n' ' '`
+ TEST_COMPILER_CFLAGS=`getQMakeConf "$XQMAKESPEC" | sed -n -e 's%QMAKE_CFLAGS[^_=]*[+*]*=%%p' | tr '\n' ' '`
+ TEST_COMPILER_CXXFLAGS=`getQMakeConf "$XQMAKESPEC" | sed -n -e 's%QMAKE_CXXFLAGS[^_=]*[+*]*=%%p' | tr '\n' ' '`
TEST_OBJCOPY=`getQMakeConf "$XQMAKESPEC" | grep "^QMAKE_OBJCOPY" | sed "s%.* *= *\(.*\)$%\1%" | tail -1`
COMPILER_WITH_FLAGS="$TEST_COMPILER $TEST_COMPILER_CXXFLAGS"
COMPILER_WITH_FLAGS=`echo "$COMPILER_WITH_FLAGS" | sed -e "s%\\$\\$QMAKE_CFLAGS%$TEST_COMPILER_CFLAGS%g"`
@@ -5880,7 +5880,7 @@ if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" ]; then
fi
CFG_EGL=no
# If QtOpenGL would be built against OpenGL ES, disable it as we can't to that if EGL is missing
- if [ "$CFG_OPENGL" = "es1" || "$CFG_OPENGL" = "es2" ]; then
+ if [ "$CFG_OPENGL" = "es1" -o "$CFG_OPENGL" = "es2" ]; then
CFG_OPENGL=no
fi
fi
diff --git a/configure.exe b/configure.exe
index 35116ff..69e98dd 100755
--- a/configure.exe
+++ b/configure.exe
Binary files differ
diff --git a/dist/changes-4.7.0 b/dist/changes-4.7.0
index 4fd7fdb..6bf7ea5 100644
--- a/dist/changes-4.7.0
+++ b/dist/changes-4.7.0
@@ -27,6 +27,13 @@ General Improvements
- Support for the GL_EXT_geometry_shader4, aka Geometry Shaders, was added
to QGLShaderProgram.
+New features
+------------
+
+ - QNetworkSession, QNetworkConfiguration, QNetworkConfigurationManager
+ * New bearer management classes added.
+
+
Third party components
----------------------
@@ -44,6 +51,11 @@ Third party components
QtCore
------
+ - QXmlStreamReader
+ * [QTBUG-9196] fixed crash when parsing
+ - QTimer
+ * singleShot with 0 timeout will now avoid allocating objects
+
QtGui
-----
@@ -60,6 +72,82 @@ QtGui
* Fixed a bug that led to missing text pixels in QTabBar when using
small font sizes. (QTBUG-7137)
+ - QGraphicsEffect
+ * Fixed rendering bugs when scrolling graphics items with drop
+ shadows.
+
+ - QImage
+ * [QTBUG-9640] Prevented unneccessary copy in
+ QImage::setAlphaChannel().
+ * Added QImage::bitPlaneCount(). (QTBUG-7982)
+
+ - QPainter
+ * [QTBUG-10018] Fixed image drawing inconsistencies when drawing
+ 1x1 source rects with rotating / shear / perspective transforms.
+ * Optimized various blending and rendering operations for ARM
+ processors with a NEON vector unit.
+ * Fixed some performance issues when drawing sub-pixmaps of large
+ pixmaps and falling back to raster in the X11 paint engine.
+
+ - QPainterPath
+ * [QTBUG-3778] Fixed bug in painter path polygon intersection code.
+ * [QTBUG-7396] Optimized painter path intersections for when at
+ least one of the paths is a rectangle by special casing.
+ * [QTBUG-8035] Got rid of bezier intersection code in the boolean
+ operators (intersect, subtract, unite) to prevent numerical
+ stability issues.
+
+ - QRegion
+ * [QTBUG-7699] Fixed crash caused by large x-coordinates.
+
+ - QTransform
+ * [QTBUG-8557] Fixed bug in QTransform::type() potentially occuring
+ after using operator/ or operator* or their overloads.
+
+QtNetwork
+---------
+ - QHostInfo: Added a small 60 second DNS cache
+ - QNetworkAccessManager
+ * Performance improvements for file:// and http://
+ * Crash fixes
+ * Improvements on HTTP pipelining
+ * Fix problem with canReadLine()
+ * Fix problem with HTTP 100 reply
+ * Some new attributes for QNetworkRequest
+ * [QTBUG-8206] add method to send custom requests
+ * [QTBUG-9618] [MR 2372] send secure cookies only over secure connections
+ * [QTBUG-7713] Fix bug related to re-sending request
+ * [QTBUG-7673] Fix issue with some webservers
+ - Sockets
+ * Better support for derived QTcpServer
+ * [QTBUG-7054] Fix error handling with waitFor*() for socket engine
+ * [QTBUG-7316, QTBUG-7317] Also handle unknown errors from socket engine
+ - SSL
+ * [QTBUG-2515] Do not make OpenSSL prompt for a password
+ * [QTBUG-6504, QTBUG-8924, QTBUG-5645] Fix memleak
+
+QtXmlPatterns
+-------------
+
+ - [QTBUG-8920] fixed crash with anonymous types in XsdSchemaChecker
+ - [QTBUG-8394] include/import/redefine schemas only once
+ - QXmlSchema: fix crash with referencing elements
+
+Qt Plugins
+----------
+
+ - Jpeg image IO plugin
+ * Fixed failure to store certain QImage formats as jpeg (QTBUG-7780)
+ * Optimized smoothscaling
+ * Optimized to avoid data copy when reading from memory device (QTBUG-9095)
+
+ - SVG image IO plugin
+ * Added support for svgz format (QTBUG-8227)
+ * Fixed canRead() so that it can be used also for non-sequential
+ devices. (QTBUG-9053)
+ * Added support for clipping and scaling and backgroundcolor
+ * Optimized to avoid data copy when reading from memory device (QTBUG-9095)
+
****************************************************************************
* Database Drivers *
****************************************************************************
diff --git a/doc/src/classes.qdoc b/doc/src/classes.qdoc
index 1552f56..594c1fe 100644
--- a/doc/src/classes.qdoc
+++ b/doc/src/classes.qdoc
@@ -59,7 +59,7 @@
/*!
\page classes.html
- \title All Qt Classes
+ \title All Classes
\ingroup classlists
\brief If you know the name of the class you want, find it here.
@@ -71,7 +71,7 @@
\generatelist classes
- \sa {Qt3 Support Classes}, {All Qt Modules}, {Obsolete Classes}
+ \sa {Qt3 Support Classes}, {All Modules}, {Obsolete Classes}
*/
/*!
@@ -162,7 +162,7 @@
/*!
\page namespaces.html
- \title All Qt Namespaces
+ \title All Namespaces
\ingroup classlists
\brief A Qt namespace contains enum types, functions, and sometimes classes.
diff --git a/doc/src/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc
index d79c4d2..5283ba8 100644
--- a/doc/src/declarative/declarativeui.qdoc
+++ b/doc/src/declarative/declarativeui.qdoc
@@ -40,46 +40,42 @@
****************************************************************************/
/*!
-\title Declarative UI Using QML
+\title Qt Quick
\page declarativeui.html
-\brief The Qt Declarative module provides a declarative framework for building
-highly dynamic, custom user interfaces.
+\brief Qt Quick provides a declarative framework for building highly
+dynamic, custom user interfaces.
-\section1 \l{QML Elements}{Fast QML Elements Reference Page}
+Qt Quick provides a declarative framework for building highly dynamic,
+custom user interfaces from a rich set of \l {QML Elements}{QML elements}.
+Qt Quick helps programmers and designers collaborate to
+build the fluid user interfaces that are becoming common in portable
+consumer devices, such as mobile phones, media players, set-top boxes
+and netbooks.
-\raw HTML
-<br>
-\endraw
+QML is an extension to \l
+{http://www.ecma-international.org/publications/standards/Ecma-262.htm}
+{JavaScript}, that provides a mechanism to declaratively build an
+object tree of \l {QML Elements}{QML elements}. QML improves the
+integration between JavaScript and Qt's existing QObject based type
+system, adds support for automatic \l {Property Binding}{property
+bindings} and provides \l {Network Transparency}{network transparency}
+at the language level.
-\section1 Preamble
+The \l {QML Elements}{QML elements} are a sophisticated set of
+graphical and behavioral building blocks. These different elements
+are combined together in \l {QML Documents}{QML documents} to build
+components ranging in complexity from simple buttons and sliders, to
+complete internet-enabled applications like a \l
+{http://www.flickr.com}{Flickr} photo browser.
-Qt Declarative UI provides a declarative framework for building highly dynamic, custom
-user interfaces. Declarative UI helps programmers and designers collaborate to build
-the animation rich, fluid user interfaces that are becoming common in portable
-consumer devices, such as mobile phones, media players, set-top boxes and netbooks.
+Qt Quick builds on \l {QML for Qt programmers}{Qt's existing
+strengths}. QML can be be used to incrementally extend an existing
+application or to build completely new applications. QML is fully \l
+{Extending QML in C++}{extensible from C++}.
-The Qt Declarative module provides an engine for interpreting the declarative
-QML language, and a rich set of \bold { \l {QML Elements}{QML elements} }
-that can be used from QML.
+\section1 Getting Started
-QML is an extension to \l {http://www.ecma-international.org/publications/standards/Ecma-262.htm}
-{JavaScript}, that provides a mechanism to declaratively build an object tree
-of QML elements. QML improves the integration between JavaScript and Qt's
-existing QObject based type system, adds support for automatic
-\l {Property Binding}{property bindings} and provides \l {Network Transparency}{network transparency} at the language
-level.
-
-The QML elements are a sophisticated set of graphical and behavioral building
-blocks. These different elements are combined together in \l {QML Documents}{QML documents} to build components
-ranging in complexity from simple buttons and sliders, to complete
-internet-enabled applications like a \l {http://www.flickr.com}{Flickr} photo browser.
-
-Qt Declarative builds on \l {QML for Qt programmers}{Qt's existing strengths}.
-QML can be be used to incrementally extend an existing application or to build
-completely new applications. QML is fully \l {Extending QML in C++}{extensible from C++}.
-
-\section1 Getting Started:
\list
\o \l {Introduction to the QML language}
\o \l {QML Tutorial}{Tutorial: 'Hello World'}
@@ -88,7 +84,7 @@ completely new applications. QML is fully \l {Extending QML in C++}{extensible
\o \l {QML for Qt programmers}
\endlist
-\section1 Core QML Features:
+\section1 Core QML Features
\list
\o \l {QML Documents}
\o \l {Property Binding}
@@ -106,7 +102,7 @@ completely new applications. QML is fully \l {Extending QML in C++}{extensible
\o \l {qmlruntime.html}{The Qt Declarative Runtime}
\endlist
-\section1 Using QML with C++:
+\section1 Using QML with C++
\list
\o \l {Tutorial: Writing QML extensions with C++}
\o \l {Extending QML in C++}
@@ -114,7 +110,7 @@ completely new applications. QML is fully \l {Extending QML in C++}{extensible
\o \l {Integrating QML with existing Qt UI code}
\endlist
-\section1 Reference:
+\section1 Reference
\list
\o \l {QML Elements}
\o \l {QML Global Object}
diff --git a/doc/src/declarative/examples.qdoc b/doc/src/declarative/examples.qdoc
index e01459f..481617e 100644
--- a/doc/src/declarative/examples.qdoc
+++ b/doc/src/declarative/examples.qdoc
@@ -40,8 +40,9 @@
****************************************************************************/
/*!
-\page qdeclarativeexamples.html
-\title QML Examples and Demos
+ \page qdeclarativeexamples.html
+ \title QML Examples and Demos
+ \ingroup all-examples
\previouspage Graphics View Examples
\contentspage Qt Examples
diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index 688122b..c63e96c 100644
--- a/doc/src/development/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.qdoc
@@ -347,6 +347,7 @@
\row \o vcapp \o Creates a Visual Studio Project file to build
an application.
\row \o vclib \o Creates a Visual Studio Project file to build a library.
+ \row \o vcsubdirs \o Creates a Visual Studio Solution file to build projects in sub-directories.
\endtable
See the \l{qmake Tutorial} for advice on writing project files for
diff --git a/doc/src/diagrams/modelview-move-rows-1.sk b/doc/src/diagrams/modelview-move-rows-1.sk
new file mode 100644
index 0000000..dc90cfb
--- /dev/null
+++ b/doc/src/diagrams/modelview-move-rows-1.sk
@@ -0,0 +1,271 @@
+##Sketch 1 2
+document()
+layout('A4',0)
+layer('Layer 1',1,1,0,0,(0,0,0))
+fp((1,1,1))
+lw(1)
+ld((5, 5))
+r(30,0,0,-30,220,515)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,665)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415.038,664.044)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,425)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415,337.5)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,605)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415.038,515.177)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,575)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415.038,485.177)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,277.5,575)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,220,335)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,415,575)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,545)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30.262,220,305.262)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415,307.5)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415.038,455.177)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,635)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415.038,545.177)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,695)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30.956,415.038,695)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,455)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415,367.5)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,277.5,605)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,220,365)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,415,605)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,277.5,635)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,220,395)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,415,635)
+le()
+lw(1)
+r(165,0,0,-230,210,705)
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(229.44,673.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(424.478,672.184))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(229.44,433.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(424.44,345.64))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(229.44,643.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(424.478,642.184))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(229.44,403.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(424.44,315.64))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(229.44,613.14))
+fp((0.503,0.503,0.503))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(424.478,523.317))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(286.94,613.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(229.44,373.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(424.44,613.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(229.44,583.14))
+fp((0.503,0.503,0.503))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(424.478,493.317))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(286.94,583.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(229.44,343.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(424.44,583.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(229.44,553.14))
+fp((0.503,0.503,0.503))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(424.478,463.317))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(286.94,553.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(229.44,313.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(424.44,553.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(229.44,523.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(229.133,283.402))
+fp((0.503,0.503,0.503))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(424.44,285.64))
+fp((0.503,0.503,0.503))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(424.478,433.317))
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(277.5,635,0)
+bs(252.5,635,0)
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(292.5,380,0)
+bs(292.5,542.5,0)
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(250,380,0)
+bs(290,380,0)
+guidelayer('Guide Lines',1,0,0,1,(0,0,1))
+grid((0,0,2.5,2.5),1,(0,0,1),'Grid')
diff --git a/doc/src/diagrams/modelview-move-rows-2.sk b/doc/src/diagrams/modelview-move-rows-2.sk
new file mode 100644
index 0000000..7ddb95e
--- /dev/null
+++ b/doc/src/diagrams/modelview-move-rows-2.sk
@@ -0,0 +1,271 @@
+##Sketch 1 2
+document()
+layout('A4',0)
+layer('Layer 1',1,1,0,0,(0,0,0))
+fp((1,1,1))
+lw(1)
+ld((5, 5))
+r(30,0,0,-30,220,515)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,665)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415.038,664.044)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,425)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415,337.5)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,605)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415,605)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,575)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415,575)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,275,455)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,220,335)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,415,455)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,545)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415,545)
+fp((1,1,1))
+lw(1)
+r(29.6927,0,0,-30,220,305.262)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415,307.5)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,635)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415,635)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,695)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415.038,694.044)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,455)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,415,367.5)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,275,485)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,220,365)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,415,485)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,275,515)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,220,395)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,415,515)
+le()
+lw(1)
+r(165,0,0,-230,210,705)
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(229.44,673.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(424.478,672.184))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(229.44,433.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(424.44,345.64))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(229.44,643.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(424.478,642.184))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(229.44,403.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(424.44,315.64))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(229.44,613.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(424.44,613.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(284.44,493.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(229.44,373.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(424.44,493.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(229.44,583.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(424.44,583.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(284.44,463.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(229.44,343.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(424.44,463.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(229.44,553.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(424.44,553.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(284.44,433.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(229.44,313.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(424.44,433.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(229.44,523.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(424.44,523.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(229.133,283.402))
+fp((0.503,0.503,0.503))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(424.44,285.64))
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(275,515,0)
+bs(252.5,515,0)
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(292.5,380,0)
+bs(292.5,422.5,0)
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(250,380,0)
+bs(290,380,0)
+guidelayer('Guide Lines',1,0,0,1,(0,0,1))
+grid((0,0,2.5,2.5),1,(0,0,1),'Grid')
diff --git a/doc/src/diagrams/modelview-move-rows-3.sk b/doc/src/diagrams/modelview-move-rows-3.sk
new file mode 100644
index 0000000..33a9ad1
--- /dev/null
+++ b/doc/src/diagrams/modelview-move-rows-3.sk
@@ -0,0 +1,137 @@
+##Sketch 1 2
+document()
+layout('A4',0)
+layer('Layer 1',1,1,0,0,(0,0,0))
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,425)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,344.997,400)
+lw(1)
+r(30,0,0,-30,220,335)
+lw(1)
+r(30,0,0,-30,345,339.739)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,305.262)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,345,310)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,455)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,344.997,430)
+lw(1)
+r(30,0,0,-30,220,365)
+lw(1)
+r(30,0,0,-30,345,369.739)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,272.5,455)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,345,460)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,220,395)
+le()
+lw(1)
+r(165,0,0,-230,210,705)
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(229.44,433.14))
+fp((0.503,0.503,0.503))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(354.437,408.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(229.44,403.14))
+fp((0.503,0.503,0.503))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(354.437,378.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(281.94,433.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(354.44,438.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(229.44,373.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(229.44,343.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(354.44,347.879))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(229.44,313.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(354.44,317.879))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(229.133,283.402))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(355.049,288.14))
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(272.5,455,0)
+bs(252.5,455,0)
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(287.5,380,0)
+bs(287.5,422.5,0)
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(250,380,0)
+bs(285,380,0)
+guidelayer('Guide Lines',1,0,0,1,(0,0,1))
+grid((0,0,2.5,2.5),1,(0,0,1),'Grid')
diff --git a/doc/src/diagrams/modelview-move-rows-4.sk b/doc/src/diagrams/modelview-move-rows-4.sk
new file mode 100644
index 0000000..0531749
--- /dev/null
+++ b/doc/src/diagrams/modelview-move-rows-4.sk
@@ -0,0 +1,137 @@
+##Sketch 1 2
+document()
+layout('A4',0)
+layer('Layer 1',1,1,0,0,(0,0,0))
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,425)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,345,430)
+lw(1)
+r(30,0,0,-30,220,335.18)
+lw(1)
+r(30,0,0,-30,345,339.739)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30.442,220,305.442)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,345,310)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,220,455)
+fp((1,1,1))
+lw(1)
+r(30,0,0,-30,345,460)
+lw(1)
+r(30,0,0,-30,220,365)
+lw(1)
+r(30,0,0,-30,345,400)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,272.5,335)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,345,370)
+fp((0.753,0.753,1))
+lw(1)
+r(30,0,0,-30,220,395)
+le()
+lw(1)
+r(165,0,0,-230,210,705)
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(229.44,433.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('0',(354.44,438.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(229.44,403.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('1',(354.44,408.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(281.94,313.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(354.44,348.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('2',(229.44,373.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(229.44,343.14))
+fp((0.503,0.503,0.503))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('3',(354.44,378.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(229.44,313.14))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('4',(354.44,317.879))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(229.44,283.582))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(20)
+txt('5',(354.44,288.14))
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(272.5,335,0)
+bs(252.5,335,0)
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(287.5,380,0)
+bs(287.5,337.5,0)
+lw(1.5)
+la2(([(-4.0, 3.0), (2.0, 0.0), (-4.0, -3.0), (-4.0, 3.0)], 1))
+b()
+bs(250,380,0)
+bs(285,380,0)
+guidelayer('Guide Lines',1,0,0,1,(0,0,1))
+grid((0,0,2.5,2.5),1,(0,0,1),'Grid')
diff --git a/doc/src/frameworks-technologies/animation.qdoc b/doc/src/frameworks-technologies/animation.qdoc
index 5548b57..dc705ba 100644
--- a/doc/src/frameworks-technologies/animation.qdoc
+++ b/doc/src/frameworks-technologies/animation.qdoc
@@ -47,6 +47,7 @@
/*!
\page animation-overview.html
\title The Animation Framework
+ \ingroup qt-gui-concepts
\brief An overview of the Animation Framework
diff --git a/doc/src/frameworks-technologies/eventsandfilters.qdoc b/doc/src/frameworks-technologies/eventsandfilters.qdoc
index 96ee18c..0cd60b8 100644
--- a/doc/src/frameworks-technologies/eventsandfilters.qdoc
+++ b/doc/src/frameworks-technologies/eventsandfilters.qdoc
@@ -54,7 +54,8 @@
/*!
\page eventsandfilters.html
- \title Events and Event Filters
+ \title The Event System
+ \ingroup qt-basic-concepts
\brief A guide to event handling in Qt.
\ingroup frameworks-technologies
diff --git a/doc/src/frameworks-technologies/graphicsview.qdoc b/doc/src/frameworks-technologies/graphicsview.qdoc
index 6844aed..740fcac 100644
--- a/doc/src/frameworks-technologies/graphicsview.qdoc
+++ b/doc/src/frameworks-technologies/graphicsview.qdoc
@@ -47,6 +47,7 @@
/*!
\page graphicsview.html
\title The Graphics View Framework
+ \ingroup qt-graphics
\brief An overview of the Graphics View framework for interactive 2D
graphics.
diff --git a/doc/src/frameworks-technologies/model-view-programming.qdoc b/doc/src/frameworks-technologies/model-view-programming.qdoc
index 7568981..e02f1eb 100644
--- a/doc/src/frameworks-technologies/model-view-programming.qdoc
+++ b/doc/src/frameworks-technologies/model-view-programming.qdoc
@@ -50,6 +50,7 @@
\startpage index.html Qt Reference Documentation
\title Model/View Programming
+ \ingroup qt-gui-concepts
\brief A guide to the extensible model/view architecture used by Qt's
item view classes.
diff --git a/doc/src/frameworks-technologies/threads.qdoc b/doc/src/frameworks-technologies/threads.qdoc
index fd6bebb..f7dde59 100644
--- a/doc/src/frameworks-technologies/threads.qdoc
+++ b/doc/src/frameworks-technologies/threads.qdoc
@@ -47,6 +47,7 @@
/*!
\page threads.html
\title Thread Support in Qt
+ \ingroup qt-basic-concepts
\brief A detailed discussion of thread handling in Qt.
\ingroup frameworks-technologies
diff --git a/doc/src/getting-started/examples.qdoc b/doc/src/getting-started/examples.qdoc
index 542f672..0088817 100644
--- a/doc/src/getting-started/examples.qdoc
+++ b/doc/src/getting-started/examples.qdoc
@@ -50,6 +50,39 @@
*/
/*!
+ \group all-examples
+ \title Qt Examples
+
+ Qt includes a set of examples that cover nearly every aspect of Qt
+ development. They aren't meant to be impressive when you run them,
+ but in each case the source code has been carefully written to
+ illustrate one or more best Qt programming practices.
+
+ You can run the examples from the \l{Examples and Demos Launcher}
+ application (except see \l{QML Examples and Demos} {QML Examples}
+ for special instructions for running thos examples).
+
+ The examples are listed below by functional area. Each example
+ listed in a particular functional area is meant to illustrate how
+ best to use Qt to do some particular task in that functional area,
+ but the examples will often use features from other functional
+ areas as well for completeness.
+
+ If you are new to Qt, you should probably start by going through
+ the \l{Tutorials}, and then begin with the
+ \l{mainwindows/application} {Application} example.
+
+ In addition to these examples and the \l{Tutorials}{tutorials}, Qt
+ includes a \l{Qt Demonstrations}{selection of demos} that
+ deliberately show off Qt's features. You might want to look at
+ these as well.
+
+ \section1 Examples by functional area
+
+ \generatelist{related}
+*/
+
+/*!
\page examples.html
\title Qt Examples
\brief The example programs provided with Qt.
@@ -459,8 +492,18 @@
*/
/*!
+ \group gui-examples
+ \title GUI Examples
+ \brief These pages list examples of constructing GUI components.
+
+ \generatelist{related}
+*/
+
+/*!
\page examples-widgets.html
\title Widgets Examples
+ \ingroup all-examples
+ \ingroup gui-examples
\contentspage Qt Examples
\nextpage Dialog Examples
@@ -509,7 +552,9 @@
/*!
\page examples-dialogs.html
+ \ingroup all-examples
\title Dialog Examples
+ \ingroup gui-examples
\previouspage Widgets Examples
\contentspage Qt Examples
@@ -539,7 +584,9 @@
/*!
\page examples-mainwindow.html
+ \ingroup all-examples
\title Main Window Examples
+ \ingroup gui-examples
\previouspage Dialog Examples
\contentspage Qt Examples
@@ -567,7 +614,9 @@
/*!
\page examples-layouts.html
+ \ingroup all-examples
\title Layout Examples
+ \ingroup gui-examples
\previouspage Main Window Examples
\contentspage Qt Examples
@@ -594,6 +643,7 @@
/*!
\page examples-itemviews.html
+ \ingroup all-examples
\title Item Views Examples
\previouspage Layout Examples
@@ -631,8 +681,18 @@
*/
/*!
+ \group graphics-examples
+ \title Graphics Examples
+ \brief These pages list examples of doing graphics.
+
+ \generatelist{related}
+*/
+
+/*!
\page examples-graphicsview.html
+ \ingroup all-examples
\title Graphics View Examples
+ \ingroup graphics-examples
\previouspage Item Views Examples
\contentspage Qt Examples
@@ -677,7 +737,9 @@
/*!
\page examples-painting.html
+ \ingroup all-examples
\title Painting Examples
+ \ingroup graphics-examples
\previouspage QML Examples and Demos
\contentspage Qt Examples
@@ -709,6 +771,7 @@
/*!
\page examples-richtext.html
+ \ingroup all-examples
\title Rich Text Examples
\previouspage Painting Examples
@@ -732,6 +795,7 @@
/*!
\page examples-desktop.html
+ \ingroup all-examples
\title Desktop Examples
\previouspage Rich Text Examples
@@ -755,7 +819,9 @@
/*!
\page examples-draganddrop.html
+ \ingroup all-examples
\title Drag and Drop Examples
+ \ingroup gui-examples
\previouspage Desktop Examples
\contentspage Qt Examples
@@ -783,6 +849,7 @@
/*!
\page examples-threadandconcurrent.html
+ \ingroup all-examples
\title Threading and Concurrent Programming Examples
\previouspage Drag and Drop Examples
@@ -823,6 +890,7 @@
/*!
\page examples.tools.html
+ \ingroup all-examples
\title Tools Examples
\previouspage Threading and Concurrent Programming Examples
@@ -861,6 +929,7 @@
/*!
\page examples-network.html
+ \ingroup all-examples
\title Network Examples
\previouspage Tools Examples
@@ -899,6 +968,7 @@
/*!
\page examples-ipc.html
+ \ingroup all-examples
\title Inter-Process Communication Examples
\previouspage Network Examples
@@ -916,7 +986,9 @@
/*!
\page examples-opengl.html
+ \ingroup all-examples
\title OpenGL Examples
+ \ingroup graphics-examples
\previouspage Inter-Process Communication Examples
\contentspage Qt Examples
@@ -950,7 +1022,9 @@
/*!
\page examples-openvg.html
+ \ingroup all-examples
\title OpenVG Examples
+ \ingroup graphics-examples
\previouspage OpenGL Examples
\contentspage Qt Examples
@@ -971,6 +1045,7 @@
/*!
\page examples-multimedia.html
+ \ingroup all-examples
\title Multimedia Examples
\previouspage OpenGL Examples
@@ -1020,6 +1095,7 @@
/*!
\page examples-sql.html
+ \ingroup all-examples
\title SQL Examples
\previouspage Multimedia Examples
@@ -1049,6 +1125,7 @@
/*!
\page examples-xml.html
+ \ingroup all-examples
\title XML Examples
\previouspage SQL Examples
@@ -1085,6 +1162,7 @@
/*!
\page examples-designer.html
+ \ingroup all-examples
\title Qt Designer Examples
\previouspage XML Examples
@@ -1110,6 +1188,7 @@
/*!
\page examples-uitools.html
+ \ingroup all-examples
\title UiTools Examples
\previouspage Qt Designer Examples
@@ -1126,6 +1205,7 @@
/*!
\page examples-linguist.html
+ \ingroup all-examples
\title Qt Linguist Examples
\previouspage UiTools Examples
@@ -1146,6 +1226,7 @@
/*!
\page examples-script.html
+ \ingroup all-examples
\title Qt Script Examples
\previouspage Qt Linguist Examples
@@ -1175,6 +1256,7 @@
/*!
\page examples-webkit.html
+ \ingroup all-examples
\title WebKit Examples
\previouspage Qt Script Examples
@@ -1215,7 +1297,8 @@
*/
/*!
- \page examples-helpsystem.html
+ \page examples-helpsystem.html
+ \ingroup all-examples
\title Help System Examples
\previouspage WebKit Examples
@@ -1239,6 +1322,7 @@
/*!
\page examples-statemachine.html
+ \ingroup all-examples
\title State Machine Examples
\previouspage Help System Examples
@@ -1265,6 +1349,7 @@
/*!
\page examples-animation.html
+ \ingroup all-examples
\title Animation Framework Examples
\previouspage State Machine Examples
@@ -1287,6 +1372,7 @@
/*!
\page examples-multitouch.html
+ \ingroup all-examples
\title Multi-Touch Examples
\previouspage Animation Framework Examples
@@ -1306,6 +1392,7 @@
/*!
\page examples-gestures.html
+ \ingroup all-examples
\title Gestures Examples
\previouspage Multi-Touch Examples
@@ -1322,6 +1409,7 @@
/*!
\page examples-dbus.html
+ \ingroup all-examples
\title D-Bus Examples
\previouspage Gestures Examples
@@ -1341,6 +1429,7 @@
/*!
\page examples-embeddedlinux.html
+ \ingroup all-examples
\title Qt for Embedded Linux Examples
\previouspage D-Bus Examples
@@ -1363,6 +1452,7 @@
/*!
\page examples-activeqt.html
+ \ingroup all-examples
\title ActiveQt Examples
\previouspage Qt for Embedded Linux Examples
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
index 2e6f9bd..92f91e6 100644
--- a/doc/src/index.qdoc
+++ b/doc/src/index.qdoc
@@ -44,16 +44,15 @@
\keyword Qt Reference Documentation
\raw HTML
- <div class="indexbox" >
+ <div class="indexbox guide" >
<div class="heading">
Qt Developer Guide</div>
<div class="indexboxcont indexboxbar">
- <div class="section indexIcon">
- <img src="images/qt_guide.png" alt="" /></div>
+ <div class="section indexIcon"><span></span></div>
<div class="section">
<p>Qt is a cross-platform application and UI framework. Using Qt, you can write web-enabled applications once and deploy them across desktop, mobile and embedded operating systems without rewriting the source code.</p>
</div>
- <div class="section sectionlist lastcol">
+ <div class="section sectionlist">
<ul>
<li><a href="">Getting started</a></li>
<li><a href="installation.html">Installation &amp; first steps</a></li>
@@ -65,20 +64,20 @@
</div>
</div>
</div>
- <div class="indexbox">
+ <div class="indexbox api">
<div class="heading">
Qt API Overviews</div>
- <div class="indexboxcont indexboxbar tricol">
- <div class="sectionlist">
+ <div class="indexboxcont indexboxbar ">
+ <div class="sectionlist tricol">
<ul>
<li><a href="modules.html">All modules</a></li>
<li><a href="classes.html">All classes</a></li>
- <li><a href="namespaces.html">All namespaces</a></li>
<li><a href="functions.html">All functions</a></li>
+ <li><a href="namespaces.html">All namespaces</a></li>
<li><a href="platform-specific.html">Platform support &amp; specifics</a></li>
</ul>
</div>
- <div class="sectionlist">
+ <div class="sectionlist tricol">
<ul>
<li><a href="object.html">QObject model</a></li>
<li><a href="application-windows.html">Window architecture</a></li>
@@ -87,7 +86,7 @@
<li><a href="paintsystem.html">Paint system</a></li>
</ul>
</div>
- <div class="lastcol">
+ <div class="sectionlist">
<ul>
<li><a href="graphicsview.html">Canvas UI with Graphics View</a></li>
<li><a href="declarativeui.html">UI design &amp; Qt Quick</a></li>
@@ -98,17 +97,16 @@
</div>
</div>
</div>
- <div class="indexbox">
+ <div class="indexbox tools">
<div class="heading">
Qt Tools</div>
<div class="indexboxcont">
- <div class="section indexIcon">
- <img src="images/qt_tools.png" alt="" /></div>
+ <div class="section indexIcon"><span></span></div>
<div class="section">
<p>Qt offers a selection of development tools for different tasks. Use Qt Creator for
project and code management as well as building powerfull UIs.</p>
</div>
- <div class="section sectionlist lastcol">
+ <div class="section sectionlist">
<ul>
<li><a href="http://doc.qt.nokia.com/qtcreator-1.3/index.html">Qt Creator</a></li>
<li><a href="designer-manual.html">Qt Designer</a></li>
@@ -118,9 +116,8 @@
<li><a href="qvfb.html">Virtual Framebuffer</a></li>
</ul>
</div>
- </div>
- </div>
-
+ </div>
+ </div>
\endraw
*/
diff --git a/doc/src/modules.qdoc b/doc/src/modules.qdoc
index 1ab1c00..2c0744b 100644
--- a/doc/src/modules.qdoc
+++ b/doc/src/modules.qdoc
@@ -41,7 +41,7 @@
/*!
\group modules
- \title All Qt Modules
+ \title All Modules
\startpage index.html Qt Reference Documentation
\nextpage QtCore
@@ -96,8 +96,8 @@
/*!
\module QtCore
\title QtCore Module
- \contentspage All Qt Modules
- \previouspage All Qt Modules
+ \contentspage All Modules
+ \previouspage All Modules
\nextpage QtGui
\ingroup modules
@@ -115,7 +115,7 @@
/*!
\module QtGui
\title QtGui Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtCore
\nextpage QtNetwork
\ingroup modules
@@ -132,7 +132,7 @@
\module QtMultimedia
\page qtmultimedia-module.html
\title QtMultimedia Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtCore
\nextpage QtNetwork
\ingroup modules
@@ -156,7 +156,7 @@
/*!
\module QtNetwork
\title QtNetwork Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtMultimedia
\nextpage QtOpenGL
\ingroup modules
@@ -178,7 +178,7 @@
/*!
\module QtOpenGL
\title QtOpenGL Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtNetwork
\nextpage QtOpenVG
\ingroup modules
@@ -231,7 +231,7 @@
\module QtOpenVG
\title QtOpenVG Module
\since 4.6
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtOpenGL
\nextpage QtScript
\ingroup modules
@@ -286,7 +286,7 @@
\module QtScript
\title QtScript Module
\since 4.3
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtOpenVG
\nextpage QtScriptTools
\ingroup modules
@@ -346,7 +346,7 @@
\module QtScriptTools
\title QtScriptTools Module
\since 4.5
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtScript
\nextpage QtSql
\ingroup modules
@@ -370,7 +370,7 @@
/*!
\module QtSql
\title QtSql Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtScript
\nextpage QtSvg
\ingroup modules
@@ -393,7 +393,7 @@
\module QtSvg
\title QtSvg Module
\since 4.1
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtSql
\nextpage QtWebKit
\ingroup modules
@@ -444,7 +444,7 @@
/*!
\module QtXml
\title QtXml Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtSvg
\nextpage QtXmlPatterns
\ingroup modules
@@ -471,7 +471,7 @@
\module QtXmlPatterns
\title QtXmlPatterns Module
\since 4.4
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtXml
\nextpage Phonon Module
\ingroup modules
@@ -551,7 +551,7 @@
\page phonon-module.html
\module Phonon
\title Phonon Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtXmlPatterns
\nextpage Qt3Support
\ingroup modules
@@ -621,7 +621,7 @@
/*!
\module Qt3Support
\title Qt3Support Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage Phonon Module
\nextpage QtDesigner
\ingroup modules
@@ -654,7 +654,7 @@
/*!
\module QtDesigner
\title QtDesigner Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage Qt3Support
\nextpage QtUiTools
\ingroup modules
@@ -681,7 +681,7 @@
\module QtUiTools
\title QtUiTools Module
\since 4.1
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtDesigner
\nextpage QtHelp
\ingroup modules
@@ -717,7 +717,7 @@
/*!
\module QtHelp
\title QtHelp Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtUiTools
\nextpage QtTest
\ingroup modules
@@ -776,7 +776,7 @@
/*!
\module QtTest
\title QtTest Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtHelp
\nextpage QAxContainer
\ingroup modules
@@ -806,7 +806,7 @@
/*!
\module QAxContainer
\title QAxContainer Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QtTest
\nextpage QAxServer
\ingroup modules
@@ -858,7 +858,7 @@
/*!
\module QAxServer
\title QAxServer Module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QAxContainer
\nextpage QtDBus module
\ingroup modules
@@ -910,7 +910,7 @@
/*!
\module QtDBus
\title QtDBus module
- \contentspage All Qt Modules
+ \contentspage All Modules
\previouspage QAxServer
\ingroup modules
diff --git a/doc/src/objectmodel/metaobjects.qdoc b/doc/src/objectmodel/metaobjects.qdoc
index c1b0ea6..e891183 100644
--- a/doc/src/objectmodel/metaobjects.qdoc
+++ b/doc/src/objectmodel/metaobjects.qdoc
@@ -41,7 +41,8 @@
/*!
\page metaobjects.html
- \title Meta-Object System
+ \title The Meta-Object System
+ \ingroup qt-basic-concepts
\brief An overview of Qt's meta-object system and introspection capabilities.
\keyword meta-object
diff --git a/doc/src/objectmodel/object.qdoc b/doc/src/objectmodel/object.qdoc
index 2f06004..e0ba6ed 100644
--- a/doc/src/objectmodel/object.qdoc
+++ b/doc/src/objectmodel/object.qdoc
@@ -41,7 +41,8 @@
/*!
\page object.html
- \title Qt Object Model
+ \title Object Model
+ \ingroup qt-basic-concepts
\brief A description of the powerful features made possible by Qt's dynamic object model.
\ingroup frameworks-technologies
diff --git a/doc/src/objectmodel/objecttrees.qdoc b/doc/src/objectmodel/objecttrees.qdoc
index 11824ae..97d646a 100644
--- a/doc/src/objectmodel/objecttrees.qdoc
+++ b/doc/src/objectmodel/objecttrees.qdoc
@@ -41,7 +41,8 @@
/*!
\page objecttrees.html
- \title Object Trees and Object Ownership
+ \title Object Trees & Ownership
+ \ingroup qt-basic-concepts
\brief Information about the parent-child pattern used to describe
object ownership in Qt.
diff --git a/doc/src/objectmodel/properties.qdoc b/doc/src/objectmodel/properties.qdoc
index a807caf..bc9554c 100644
--- a/doc/src/objectmodel/properties.qdoc
+++ b/doc/src/objectmodel/properties.qdoc
@@ -41,7 +41,8 @@
/*!
\page properties.html
- \title Qt's Property System
+ \title The Property System
+ \ingroup qt-basic-concepts
\brief An overview of Qt's property system.
Qt provides a sophisticated property system similar to the ones
diff --git a/doc/src/objectmodel/signalsandslots.qdoc b/doc/src/objectmodel/signalsandslots.qdoc
index 0f3f618..f33badf 100644
--- a/doc/src/objectmodel/signalsandslots.qdoc
+++ b/doc/src/objectmodel/signalsandslots.qdoc
@@ -41,7 +41,8 @@
/*!
\page signalsandslots.html
- \title Signals and Slots
+ \title Signals & Slots
+ \ingroup qt-basic-concepts
\brief An overview of Qt's signals and slots inter-object
communication mechanism.
diff --git a/doc/src/overviews.qdoc b/doc/src/overviews.qdoc
index 7302e30..b2ba3a1 100644
--- a/doc/src/overviews.qdoc
+++ b/doc/src/overviews.qdoc
@@ -48,6 +48,38 @@
*/
/*!
+ \group qt-basic-concepts
+ \title Qt Basic Concepts
+
+ \brief The basic concepts of the Qt cross-platform application and UI framework.
+
+ Qt is a cross-platform application and UI framework for writing
+ web-enabled applications for desktop, mobile, and embedded
+ operating systems. These pages explain basic architectural
+ concepts of Qt:
+
+ \generatelist {related}
+ */
+
+/*!
+ \group qt-gui-concepts
+ \title Qt GUI Construction
+
+ \brief The Qt components for constructing Graphical User Intefaces.
+
+ \generatelist {related}
+ */
+
+/*!
+ \group qt-graphics
+ \title Qt Graphics
+
+ \brief The Qt components for doing graphics.
+
+ \generatelist {related}
+ */
+
+/*!
\group frameworks-technologies
\title Frameworks and Technologies
diff --git a/doc/src/painting-and-printing/coordsys.qdoc b/doc/src/painting-and-printing/coordsys.qdoc
index 5807f57..b0ba093 100644
--- a/doc/src/painting-and-printing/coordsys.qdoc
+++ b/doc/src/painting-and-printing/coordsys.qdoc
@@ -42,6 +42,7 @@
/*!
\page coordsys.html
\title The Coordinate System
+ \ingroup qt-graphics
\brief Information about the coordinate system used by the paint
system.
diff --git a/doc/src/painting-and-printing/paintsystem.qdoc b/doc/src/painting-and-printing/paintsystem.qdoc
index 802751f..b711b2f 100644
--- a/doc/src/painting-and-printing/paintsystem.qdoc
+++ b/doc/src/painting-and-printing/paintsystem.qdoc
@@ -61,6 +61,7 @@
/*!
\page paintsystem.html
\title The Paint System
+ \ingroup qt-graphics
\ingroup frameworks-technologies
Qt's paint system enables painting on screen and print devices
diff --git a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp b/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
index 22ea240..e3ad483 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
@@ -67,3 +67,23 @@ beginInsertColumns(parent, 6, 8);
//! [5]
beginRemoveColumns(parent, 4, 6);
//! [5]
+
+
+//! [6]
+beginMoveRows(sourceParent, 2, 4, destinationParent, 2);
+//! [6]
+
+
+//! [7]
+beginMoveRows(sourceParent, 2, 4, destinationParent, 6);
+//! [7]
+
+
+//! [8]
+beginMoveRows(parent, 2, 2, parent, 0);
+//! [8]
+
+
+//! [9]
+beginMoveRows(parent, 2, 2, parent, 4);
+//! [9]
diff --git a/doc/src/template/images/api_examples.png b/doc/src/template/images/api_examples.png
deleted file mode 100755
index 1fcbc96..0000000
--- a/doc/src/template/images/api_examples.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/api_lookup.png b/doc/src/template/images/api_lookup.png
deleted file mode 100755
index 1cffd5e..0000000
--- a/doc/src/template/images/api_lookup.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/api_topics.png b/doc/src/template/images/api_topics.png
deleted file mode 100755
index a76a6c3..0000000
--- a/doc/src/template/images/api_topics.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/bg_l.png b/doc/src/template/images/bg_l.png
index 95470c7..90b1da1 100755
--- a/doc/src/template/images/bg_l.png
+++ b/doc/src/template/images/bg_l.png
Binary files differ
diff --git a/doc/src/template/images/bg_l_blank.png b/doc/src/template/images/bg_l_blank.png
index e0eca3f..5a9673d 100755
--- a/doc/src/template/images/bg_l_blank.png
+++ b/doc/src/template/images/bg_l_blank.png
Binary files differ
diff --git a/doc/src/template/images/bg_ll.png b/doc/src/template/images/bg_ll.png
deleted file mode 100755
index 99796e7..0000000
--- a/doc/src/template/images/bg_ll.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/bg_ll_blank.png b/doc/src/template/images/bg_ll_blank.png
deleted file mode 100755
index 95a1c45..0000000
--- a/doc/src/template/images/bg_ll_blank.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/bg_lr.png b/doc/src/template/images/bg_lr.png
deleted file mode 100755
index fef1d17..0000000
--- a/doc/src/template/images/bg_lr.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/bg_r.png b/doc/src/template/images/bg_r.png
index 42a35a5..f0fb121 100755
--- a/doc/src/template/images/bg_r.png
+++ b/doc/src/template/images/bg_r.png
Binary files differ
diff --git a/doc/src/template/images/bg_ul.png b/doc/src/template/images/bg_ul.png
deleted file mode 100755
index 303181f..0000000
--- a/doc/src/template/images/bg_ul.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/bg_ul_blank.png b/doc/src/template/images/bg_ul_blank.png
deleted file mode 100755
index 7051261..0000000
--- a/doc/src/template/images/bg_ul_blank.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/bg_ur.png b/doc/src/template/images/bg_ur.png
deleted file mode 100755
index bfa51a4..0000000
--- a/doc/src/template/images/bg_ur.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/bg_ur_blank.png b/doc/src/template/images/bg_ur_blank.png
deleted file mode 100755
index 5779961..0000000
--- a/doc/src/template/images/bg_ur_blank.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/box_bg.png b/doc/src/template/images/box_bg.png
index 232655a..3322f92 100755
--- a/doc/src/template/images/box_bg.png
+++ b/doc/src/template/images/box_bg.png
Binary files differ
diff --git a/doc/src/template/images/breadcrumb.png b/doc/src/template/images/breadcrumb.png
index f0571ce..0ded551 100755
--- a/doc/src/template/images/breadcrumb.png
+++ b/doc/src/template/images/breadcrumb.png
Binary files differ
diff --git a/doc/src/template/images/bullet_gt.png b/doc/src/template/images/bullet_gt.png
index 8875925..7561b4e 100755
--- a/doc/src/template/images/bullet_gt.png
+++ b/doc/src/template/images/bullet_gt.png
Binary files differ
diff --git a/doc/src/template/images/bullet_sq.png b/doc/src/template/images/bullet_sq.png
index db85ee3..a84845e 100755
--- a/doc/src/template/images/bullet_sq.png
+++ b/doc/src/template/images/bullet_sq.png
Binary files differ
diff --git a/doc/src/template/images/content_bg.png b/doc/src/template/images/content_bg.png
deleted file mode 100755
index 416397d..0000000
--- a/doc/src/template/images/content_bg.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/form_bg.png b/doc/src/template/images/form_bg.png
deleted file mode 100755
index bf2ee54..0000000
--- a/doc/src/template/images/form_bg.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/header.png b/doc/src/template/images/header.png
deleted file mode 100644
index 141488b..0000000
--- a/doc/src/template/images/header.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/page_bg.png b/doc/src/template/images/page_bg.png
index fb7d051..9b3bd99 100755
--- a/doc/src/template/images/page_bg.png
+++ b/doc/src/template/images/page_bg.png
Binary files differ
diff --git a/doc/src/template/images/print.png b/doc/src/template/images/print.png
deleted file mode 100755
index 4581da1..0000000
--- a/doc/src/template/images/print.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/qt_guide.png b/doc/src/template/images/qt_guide.png
deleted file mode 100755
index 9f53a05..0000000
--- a/doc/src/template/images/qt_guide.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/qt_icon.png b/doc/src/template/images/qt_icon.png
deleted file mode 100755
index fbaee35..0000000
--- a/doc/src/template/images/qt_icon.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/qt_ref_doc.png b/doc/src/template/images/qt_ref_doc.png
deleted file mode 100755
index 141488b..0000000
--- a/doc/src/template/images/qt_ref_doc.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/qt_tools.png b/doc/src/template/images/qt_tools.png
deleted file mode 100755
index cc24179..0000000
--- a/doc/src/template/images/qt_tools.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/sep.png b/doc/src/template/images/sep.png
deleted file mode 100755
index c895646..0000000
--- a/doc/src/template/images/sep.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/template/images/sprites-combined.png b/doc/src/template/images/sprites-combined.png
index 4186022..3a48b21 100755
--- a/doc/src/template/images/sprites-combined.png
+++ b/doc/src/template/images/sprites-combined.png
Binary files differ
diff --git a/doc/src/template/scripts/functions.js b/doc/src/template/scripts/functions.js
index fa454e3..108590f 100755
--- a/doc/src/template/scripts/functions.js
+++ b/doc/src/template/scripts/functions.js
@@ -1,10 +1,8 @@
-
/* START non link areas where cursor should change to pointing hand */
$('.t_button').mouseover(function() {
$('.t_button').css('cursor','pointer');
/*document.getElementById(this.id).style.cursor='pointer';*/
});
-
/* END non link areas */
$('#smallA').click(function() {
$('.content .heading,.content h1, .content h2, .content h3, .content p, .content li, .content table').css('font-size','smaller');
@@ -35,27 +33,114 @@ $('#bigA').click(function() {
$(this).addClass('active')
});
-function doSearch(str){
-
-if (str.length>3)
- {
- alert('Search is not yet activated.');
- // document.getElementById("refWrapper").innerHTML="";
- return;
- }
- else
- return;
-
-// var url="indexSearch.php";
-// url=url+"?q="+str;
- // url=url+"&sid="+Math.random();
- // var url="http://localhost:8983/solr/select?";
- // url=url+"&q="+str;
- // url=url+"&fq=&start=0&rows=10&fl=&qt=&wt=&explainOther=&hl.fl=";
-
- // $.get(url, function(data){
- // alert(data);
- // document.getElementById("refWrapper").innerHTML=data;
- //});
-
-} \ No newline at end of file
+
+var lookupCount = 0;
+var articleCount = 0;
+var exampleCount = 0;
+var qturl = ""; // change from "http://doc.qt.nokia.com/4.6/" to 0 so we can have relative links
+
+function processNokiaData(response){
+ // debug $('.content').prepend('<li>handling search results</li>'); // debuging
+ var propertyTags = response.getElementsByTagName('page');
+
+ for (var i=0; i< propertyTags.length; i++) {
+ var linkStart = "<li class=\"liveResult\"><a href='"+qturl+"";
+ var linkEnd = "</a></li>";
+
+ if(propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'APIPage'){
+ lookupCount++;
+ //$('.live001').css('display','block');
+
+ for (var j=0; j< propertyTags[i].getElementsByTagName('pageWords').length; j++){
+ full_li_element = linkStart + propertyTags[i].getElementsByTagName('pageUrl')[j].firstChild.nodeValue;
+ full_li_element = full_li_element + "'>" + propertyTags[i].getElementsByTagName('pageTitle')[0].firstChild.nodeValue + linkEnd;
+
+ $('#ul001').append(full_li_element);
+ }
+ }
+
+ if(propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Article'){
+ articleCount++;
+ //$('.live002').css('display','block');
+
+ for (var j=0; j< propertyTags[i].getElementsByTagName('pageWords').length; j++){
+ full_li_element = linkStart + propertyTags[i].getElementsByTagName('pageUrl')[j].firstChild.nodeValue;
+ full_li_element =full_li_element + "'>" + propertyTags[i].getElementsByTagName('pageTitle')[0].firstChild.nodeValue + linkEnd ;
+
+ $('#ul002').append(full_li_element);
+ }
+ }
+ if(propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Example'){
+ exampleCount++;
+ //$('.live003').css('display','block');
+
+ for (var j=0; j< propertyTags[i].getElementsByTagName('pageWords').length; j++){
+ full_li_element = linkStart + propertyTags[i].getElementsByTagName('pageUrl')[j].firstChild.nodeValue;
+ full_li_element =full_li_element + "'>" + propertyTags[i].getElementsByTagName('pageTitle')[0].firstChild.nodeValue + linkEnd ;
+
+ $('#ul003').append(full_li_element);
+ }
+ }
+ }
+
+ if(lookupCount == 0){$('#ul001').prepend('<li class=\"liveResult noMatch\">Found no result</li>');$('#ul001 li').css('display','block');}
+ if(articleCount == 0){$('#ul002').prepend('<li class=\"liveResult noMatch\">Found no result</li>');$('#ul002 li').css('display','block');}
+ if(exampleCount == 0){$('#ul003').prepend('<li class=\"liveResult noMatch\">Found no result</li>');$('#ul003 li').css('display','block');}
+ // reset count variables;
+ lookupCount=0;
+ articleCount = 0;
+ exampleCount = 0;
+
+}
+
+//build regular expression object to find empty string or any number of blank
+var blankRE=/^\s*$/;
+function CheckEmptyAndLoadList()
+{
+ $('.liveResult').remove();
+ var value = document.getElementById('pageType').value;
+ if((blankRE.test(value)) || (value.length < 3))
+ {
+ //empty inputbox
+ // load default li elements into the ul if empty
+ // loadAllList(); // replaced
+ $('.defaultLink').css('display','block');
+ // $('.liveResult').css('display','none');
+ }else{
+ $('.defaultLink').css('display','none');
+ }
+}
+
+
+// Loads on doc ready
+ $(document).ready(function () {
+ $('#pageType').keyup(function () {
+ var searchString = $('#pageType').val() ;
+ if ((searchString == null) || (searchString.length < 3)) {
+ $('.liveResult').remove(); // replaces removeResults();
+ CheckEmptyAndLoadList();
+ $('.report').remove();
+ // debug$('.content').prepend('<li>too short or blank</li>'); // debug
+ return;
+ }
+ if (this.timer) clearTimeout(this.timer);
+ this.timer = setTimeout(function () {
+ // debug$('.content').prepend('<li>new search started </li>');// debug
+ // debug$('.content').prepend('<p class=\"report\">Search string ' +searchString +'</p>'); // debug
+
+ $.ajax({
+ contentType: "application/x-www-form-urlencoded",
+ url: 'http://' + location.host + '/nokiasearch/GetDataServlet',
+ data: 'searchString='+searchString,
+ dataType:'xml',
+ type: 'post',
+ success: function (response, textStatus) {
+
+ $('.liveResult').remove(); // replaces removeResults();
+ processNokiaData(response);
+
+ }
+ });
+ }, 500);
+ });
+ });
diff --git a/doc/src/template/style/style.css b/doc/src/template/style/style.css
index d5920b9..644e56b 100755
--- a/doc/src/template/style/style.css
+++ b/doc/src/template/style/style.css
@@ -58,6 +58,23 @@
{
vertical-align: baseline;
}
+ tt, .qmlreadonly span, .qmldefault span
+ {
+ word-spacing:5px;
+ }
+ .heading
+ {
+ font: normal 600 16px/1.0 Arial;
+ padding-bottom: 15px;
+ }
+ .subtitle
+ {
+ font-size: 13px;
+ }
+ .small-subtitle
+ {
+ font-size: 13px;
+ }
legend
{
color: #000000;
@@ -73,7 +90,6 @@
{
font-size: 100%;
}
- /* Page style */
html
{
background-color: #e5e5e5;
@@ -92,6 +108,11 @@
{
font-style: italic;
}
+ a
+ {
+ color: #00732f;
+ text-decoration: none;
+ }
.header, .footer, .wrapper
{
min-width: 600px;
@@ -106,23 +127,19 @@
{
padding-left: 216px;
height: 15px;
- background: url(../images/bg_ul.png) no-repeat 0 0;
+ background: url(../images/page.png) no-repeat 0 0;
overflow: hidden;
}
.offline .wrapper .hd
{
- background: url(../images/bg_ul_blank.png) no-repeat 0 0;
+ background: url(../images/page.png) no-repeat 0 -15px;
}
.wrapper .hd span
{
height: 15px;
display: block;
- background: url(../images/bg_ur.png) no-repeat 100% 0;
overflow: hidden;
- }
- .offline .wrapper .hd span
- {
- /* background: url(../images/bg_ur_blank.png) no-repeat 100% 0; */
+ background: url(../images/page.png) no-repeat 100% -30px;
}
.wrapper .bd
{
@@ -137,18 +154,18 @@
{
padding-left: 216px;
height: 15px;
- background: url(../images/bg_ll.png) no-repeat 0 0;
+ background: url(../images/page.png) no-repeat 0 -75px;
overflow: hidden;
}
.offline .wrapper .ft
{
- background: url(../images/bg_ll_blank.png) no-repeat 0 0;
+ background: url(../images/page.png) no-repeat 0 -90px;
}
.wrapper .ft span
{
height: 15px;
display: block;
- background: url(../images/bg_lr.png) no-repeat 100% 0;
+ background: url(../images/page.png) no-repeat 100% -60px;
overflow: hidden;
}
.header, .footer
@@ -182,186 +199,9 @@
width: 302px;
height: 22px;
text-indent: -999em;
- background: url(../images/qt_ref_doc.png) no-repeat 0 0;
- }
- /* header elements */
- #nav-topright
- {
- height: 70px;
- }
-
- #nav-topright ul
- {
- list-style-type: none;
- float: right;
- width: 370px;
- margin-top: 11px;
- }
-
- #nav-topright li
- {
- display: inline-block;
- margin-right: 20px;
- float: left;
- }
-
- #nav-topright li.nav-topright-last
- {
- margin-right: 0;
- }
-
- #nav-topright li a
- {
- background: transparent url(../images/sprites-combined.png) no-repeat;
- height: 18px;
- display: block;
- overflow: hidden;
- text-indent: -9999px;
- }
-
- #nav-topright li.nav-topright-home a
- {
- width: 65px;
- background-position: -2px -91px;
- }
-
- #nav-topright li.nav-topright-home a:hover
- {
- background-position: -2px -117px;
- }
-
-
- #nav-topright li.nav-topright-dev a
- {
- width: 30px;
- background-position: -76px -91px;
+ background: url(../images/sprites-combined.png) no-repeat -78px -235px;
}
- #nav-topright li.nav-topright-dev a:hover
- {
- background-position: -76px -117px;
- }
-
-
- #nav-topright li.nav-topright-labs a
- {
- width: 40px;
- background-position: -114px -91px;
- }
-
- #nav-topright li.nav-topright-labs a:hover
- {
- background-position: -114px -117px;
- }
-
- #nav-topright li.nav-topright-doc a
- {
- width: 32px;
- background-position: -162px -91px;
- }
-
- #nav-topright li.nav-topright-doc a:hover, #nav-topright li.nav-topright-doc-active a
- {
- background-position: -162px -117px;
- }
-
- #nav-topright li.nav-topright-blog a
- {
- width: 40px;
- background-position: -203px -91px;
- }
-
- #nav-topright li.nav-topright-blog a:hover, #nav-topright li.nav-topright-blog-active a
- {
- background-position: -203px -117px;
- }
-
- #nav-topright li.nav-topright-shop a
- {
- width: 40px;
- background-position: -252px -91px;
- }
-
- #nav-topright li.nav-topright-shop a:hover, #nav-topright li.nav-topright-shop-active a
- {
- background-position: -252px -117px;
- }
-
- #nav-logo
- {
- background: transparent url( "../images/sprites-combined.png" ) no-repeat 0 -225px;
- left: -3px;
- position: absolute;
- width: 75px;
- height: 75px;
- top: 13px;
- }
- #nav-logo a
- {
- width: 75px;
- height: 75px;
- display: block;
- text-indent: -9999px;
- overflow: hidden;
- }
- /* Clearing */
- .header:after, .footer:after, .breadcrumb:after, .wrap .content:after, .group:after
- {
- content: ".";
- display: block;
- height: 0;
- clear: both;
- visibility: hidden;
- }
- /* ^ Clearing */
-
-
-
- .shortCut-topleft-inactive
- {
- padding-left: 3px;
- background: transparent url( "../images/sprites-combined.png" ) no-repeat 0px -58px;
- height: 20px;
- width: 93px;
- }
- .shortCut-topleft-inactive span
- {
- font-variant: normal;
- }
- #shortCut
- {
- padding-top: 10px;
- font-weight: bolder;
- color: #b0adab;
- }
- #shortCut ul
- {
- list-style-type: none;
- float: left;
- width: 347px;
- margin-left: 100px;
- }
- #shortCut li
- {
- display: inline-block;
- margin-right: 25px;
- float: left;
- white-space: nowrap;
- }
- #shortCut li a
- {
- color: #b0adab;
- text-decoration: none;
- }
- #shortCut li a:hover
- {
- color: #44a51c;
- text-decoration: none;
- }
-
- /* end of header elements */
-
- /* menu element */
.sidebar
{
float: left;
@@ -369,32 +209,32 @@
width: 200px;
font-size: 11px;
}
- .sidebar a
- {
- color: #00732f;
- text-decoration: none;
- }
- .offline .sidebar, .offline .feedback
+
+ .offline .sidebar, .offline .feedback, .offline .t_button
{
display: none;
}
+
.sidebar .searchlabel
{
padding: 0 0 2px 17px;
font: normal bold 11px/1.2 Verdana;
}
+
.sidebar .search
{
padding: 0 15px 0 16px;
}
+
.sidebar .search form
{
- width: 167px;
- height: 21px;
- padding: 2px 0 0 5px;
- background: url(../images/form_bg.png) no-repeat 0 0;
+ background: url(../images/sprites-combined.png) no-repeat -6px -348px;
+ height:21px;
+ padding:2px 0 0 5px;
+ width:167px;
}
- .sidebar .search form fieldset input#searchstring
+
+ .sidebar .search form input#pageType
{
width: 158px;
height: 19px;
@@ -403,32 +243,62 @@
outline: none;
font: 13px/1.2 Verdana;
}
+
.sidebar .box
{
padding: 17px 15px 5px 16px;
}
+
.sidebar .box .first
{
background-image: none;
}
+
.sidebar .box h2
{
font: normal 18px/1.2 Arial;
- padding: 15px 0 0 40px;
+ padding: 0;
min-height: 32px;
}
+ .sidebar .box h2 span
+ {
+ overflow: hidden;
+ display: inline-block;
+ }
.sidebar .box#lookup h2
{
- background: url(../images/api_lookup.png) no-repeat 0 0;
+ background-image: none;
+ }
+ .sidebar #lookup.box h2 span
+ {
+ background: url(../images/sprites-combined.png) no-repeat -6px -311px;
+ width: 27px;
+ height: 35px;
+ margin-right: 13px;
}
.sidebar .box#topics h2
{
- background: url(../images/api_topics.png) no-repeat 0 0;
+ background-image: none;
+ }
+ .sidebar #topics.box h2 span
+ {
+ background: url(../images/sprites-combined.png) no-repeat -94px -311px;
+ width: 27px;
+ height: 32px;
+ margin-right: 13px;
}
.sidebar .box#examples h2
{
- background: url(../images/api_examples.png) no-repeat 0 0;
+ background-image: none;
}
+ .sidebar #examples.box h2 span
+ {
+ background: url(../images/sprites-combined.png) no-repeat -48px -311px;
+ width: 30px;
+ height: 31px;
+ margin-right: 9px;
+ }
+
.sidebar .box .list
{
display: block;
@@ -443,33 +313,34 @@
{
text-decoration: underline;
}
+ .sidebar .box ul
+ {
+ padding:10px 0 0 10px;
+ }
.sidebar .box ul li
{
padding-left: 12px;
background: url(../images/bullet_gt.png) no-repeat 0 5px;
- margin-bottom: 15px;
+ margin-bottom: 5px;
}
.sidebar .bottombar
{
background: url(../images/box_bg.png) repeat-x 0 bottom;
}
- /* content elements */
.wrap
{
- overflow: hidden;
+ margin: 0 5px 0 208px;
+ overflow: visible;
}
.offline .wrap
{
margin: 0 5px 0 5px;
}
- /* tool bar */
.wrap .toolbar
{
background-color: #fafafa;
border-bottom: 1px solid #d1d1d1;
- height: 20px;
- margin-left: 3px;
- margin-right: 5px;
+ height: 20px;
position: relative;
}
.wrap .toolbar .toolblock
@@ -487,7 +358,7 @@
{
padding: 0 0 10px 21px;
right: 5px;
- vertical-align: top;
+ vertical-align: middle;
overflow: hidden;
}
.wrap .toolbar .toolbuttons .active
@@ -507,32 +378,56 @@
font-weight: bold;
color: #B0ADAB;
}
- #smallA
+
+ .toolbuttons #print
+ {
+ border-left: 1px solid #c5c4c4;
+ margin-top: 0;
+ padding-left: 7px;
+ text-indent: 0;
+ }
+ .toolbuttons #print a
+ {
+ width: 16px;
+ height: 16px;
+ }
+
+ .toolbuttons #print a span
+ {
+ width: 16px;
+ height: 16px;
+ text-indent: -999em;
+ display: block;
+ overflow: hidden;
+ background: url(../images/sprites-combined.png) no-repeat -137px -311px;
+ }
+
+ .toolbuttons #smallA
{
font-size: 10pt;
}
- #medA
+ .toolbuttons #medA
{
font-size: 12pt;
}
- #bigA
+ .toolbuttons #bigA
{
font-size: 14pt;
+ margin-right: 7px;
}
+
#smallA:hover, #medA:hover, #bigA:hover
{
color: #00732F;
}
- #print
+
+ .offline .wrap .breadcrumb
{
- font-size: 14pt;
- line-height: 20pt;
}
- #printIcon
+
+ .wrap .breadcrumb ul
{
- margin-left: 5px;
}
- /* bread crumbs */
.wrap .breadcrumb ul li
{
float: left;
@@ -545,6 +440,10 @@
{
font-weight: normal;
}
+ .wrap .breadcrumb ul li a
+ {
+ color: #363534;
+ }
.wrap .breadcrumb ul li.first
{
background-image: none;
@@ -554,29 +453,29 @@
.wrap .content
{
padding: 30px;
- position: relative;
}
- /* text elements */
- .heading
+
+ .wrap .content li
{
- font: normal 600 16px/1.0 Arial;
- padding-bottom: 15px;
+ padding-left: 12px;
+ background: url(../images/bullet_sq.png) no-repeat 0 5px;
+ font: normal 400 10pt/1 Verdana;
+ /* color: #44a51c;*/
+ margin-bottom: 10px;
}
-
- .subtitle
+ .content li:hover
{
- font-size: 13px;
+ /* text-decoration: underline;*/
}
- .small-subtitle
+ .offline .wrap .content
{
- font-size: 13px;
+ padding-top: 15px;
}
-
+
.wrap .content h1
{
font: 600 18px/1.2 Arial;
- padding-bottom: 15px;
}
.wrap .content h2
{
@@ -588,25 +487,13 @@
}
.wrap .content p
{
- line-height:20px;
- padding:10px 5px 10px 5px;
+ line-height: 20px;
+ padding: 5px 5px 5px 5px;
}
.wrap .content ul
{
padding-left: 25px;
- }
- .wrap .content li
- {
- padding-left: 12px;
- background: url(../images/bullet_sq.png) no-repeat 0 5px;
- font: normal 400 10pt/1 Verdana;
- margin-bottom: 10px;
- line-height: 14px;
- }
- a
- {
- color: #00732F;
- text-decoration: none;
+ padding-top: 10px;
}
a:hover
{
@@ -618,22 +505,26 @@
color: #4c0033;
text-decoration: none;
}
- .offline .wrap .content
+ .content a:visited:hover
{
- padding-top: 15px;
- }
- .footer
+ color: #4c0033;
+ text-decoration: underline;
+ } .footer
{
min-height: 100px;
color: #797775;
font: normal 9px/1 Verdana;
text-align: center;
padding-top: 40px;
+ background-color: #E6E7E8;
+ margin: 0;
}
.feedback
{
- float: right;
- padding-right: 10px;
+ float: none;
+ position: absolute;
+ right: 15px;
+ bottom: 10px;
font: normal 8px/1 Verdana;
color: #B0ADAB;
}
@@ -644,37 +535,243 @@
color: #00732F;
text-decoration: underline;
}
+ .header:after, .footer:after, .breadcrumb:after, .wrap .content:after, .group:after
+ {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
+ #nav-topright
+ {
+ height: 70px;
+ }
+
+ #nav-topright ul
+ {
+ list-style-type: none;
+ float: right;
+ width: 370px;
+ margin-top: 11px;
+ }
+
+ #nav-topright li
+ {
+ display: inline-block;
+ margin-right: 20px;
+ float: left;
+ }
+
+ #nav-topright li.nav-topright-last
+ {
+ margin-right: 0;
+ }
+
+ #nav-topright li a
+ {
+ background: transparent url(../images/sprites-combined.png) no-repeat;
+ height: 18px;
+ display: block;
+ overflow: hidden;
+ text-indent: -9999px;
+ }
+
+ #nav-topright li.nav-topright-home a
+ {
+ width: 65px;
+ background-position: -2px -91px;
+ }
+
+ #nav-topright li.nav-topright-home a:hover
+ {
+ background-position: -2px -117px;
+ }
+
+
+ #nav-topright li.nav-topright-dev a
+ {
+ width: 30px;
+ background-position: -76px -91px;
+ }
+
+ #nav-topright li.nav-topright-dev a:hover
+ {
+ background-position: -76px -117px;
+ }
+
+
+ #nav-topright li.nav-topright-labs a
+ {
+ width: 40px;
+ background-position: -114px -91px;
+ }
+
+ #nav-topright li.nav-topright-labs a:hover
+ {
+ background-position: -114px -117px;
+ }
+
+ #nav-topright li.nav-topright-doc a
+ {
+ width: 32px;
+ background-position: -162px -91px;
+ }
+
+ #nav-topright li.nav-topright-doc a:hover, #nav-topright li.nav-topright-doc-active a
+ {
+ background-position: -162px -117px;
+ }
+
+ #nav-topright li.nav-topright-blog a
+ {
+ width: 40px;
+ background-position: -203px -91px;
+ }
+
+ #nav-topright li.nav-topright-blog a:hover, #nav-topright li.nav-topright-blog-active a
+ {
+ background-position: -203px -117px;
+ }
+
+ #nav-topright li.nav-topright-shop a
+ {
+ width: 40px;
+ background-position: -252px -91px;
+ }
+
+ #nav-topright li.nav-topright-shop a:hover, #nav-topright li.nav-topright-shop-active a
+ {
+ background-position: -252px -117px;
+ }
+
+ #nav-logo
+ {
+ background: transparent url(../images/sprites-combined.png ) no-repeat 0 -225px;
+ left: -3px;
+ position: absolute;
+ width: 75px;
+ height: 75px;
+ top: 13px;
+ }
+ #nav-logo a
+ {
+ width: 75px;
+ height: 75px;
+ display: block;
+ text-indent: -9999px;
+ overflow: hidden;
+ }
+
+
+ .shortCut-topleft-inactive
+ {
+ padding-left: 3px;
+ background: transparent url( ../images/sprites-combined.png) no-repeat 0px -58px;
+ height: 20px;
+ width: 47px;
+ }
+ .shortCut-topleft-inactive span
+ {
+ font-variant: normal;
+ }
+ .shortCut-topleft-inactive span a:hover, .shortCut-topleft-active a:hover
+ {
+ text-decoration:none;
+ }
+ #shortCut
+ {
+ padding-top: 10px;
+ font-weight: bolder;
+ color: #b0adab;
+ }
+ #shortCut ul
+ {
+ list-style-type: none;
+ float: left;
+ width: 347px;
+ margin-left: 100px;
+ }
+ #shortCut li
+ {
+ display: inline-block;
+ margin-right: 25px;
+ float: left;
+ white-space: nowrap;
+ }
+ #shortCut li a
+ {
+ color: #b0adab;
+ }
+ #shortCut li a:hover
+ {
+ color: #44a51c;
+ }
+
hr
{
- background-color: #e0e0e0;
+ background-color: #E6E6E6;
+ border: 1px solid #E6E6E6;
height: 1px;
width: 100%;
text-align: left;
margin: 15px 0px 15px 0px;
}
-
+
.content .alignedsummary
{
margin: 15px;
}
- /* tables */
+ pre
+ {
+ border: 1px solid #DDDDDD;
+ margin: 0 20px 10px 10px;
+ padding: 20px 15px 20px 20px;
+ overflow-x: auto;
+ }
table, pre
{
-moz-border-radius: 7px 7px 7px 7px;
background-color: #F6F6F6;
border: 1px solid #E6E6E6;
border-collapse: separate;
- font-size: 11px;
- min-width: 395px;
+ font-size: 11px;
+ /*min-width: 395px;*/
margin-bottom: 25px;
+ display: inline-block;
+ }
+ thead
+ {
+ margin-top: 5px;
}
- thead{margin-top: 5px;}
- th{ padding: 3px 15px 3px 15px;}
- td{padding: 3px 15px 3px 20px;}
+ th
+ {
+ padding: 5px 15px 5px 15px;
+ background-color: #E1E1E1;
+ border-bottom: 1px solid #E6E6E6;
+ border-left: 1px solid #E6E6E6;
+ border-right: 1px solid #E6E6E6;
+ }
+ td
+ {
+ padding: 3px 15px 3px 20px;
+ border-left: 1px solid #E6E6E6;
+ border-right: 1px solid #E6E6E6;
+ }
+ tr.odd td:hover, tr.even td:hover
+ {
+ /* border-right: 1px solid #C3C3C3;
+ border-left: 1px solid #C3C3C3;*/
+ }
+
+ td.rightAlign
+ {
+ padding: 3px 15px 3px 10px;
+ }
table tr.odd
{
border-left: 1px solid #E6E6E6;
- background-color: #F6F6F6;
+ background-color: #F6F6F6;
color: #66666E;
}
table tr.even
@@ -685,12 +782,13 @@
}
table tr.odd:hover
{
- background-color: #E6E6E6;
+ background-color: #E6E6E6;
}
table tr.even:hover
{
background-color: #E6E6E6;
}
+
span.comment
{
color: #8B0000;
@@ -700,15 +798,7 @@
{
color: #254117;
}
- pre
- {
- -moz-border-radius:7px 7px 7px 7px;
- background-color:#F6F6F6;
- border:1px solid #DDDDDD;
- margin:0 20px 10px 10px;
- padding:20px 15px 20px 20px;
- overflow-x:auto;
- }
+
.qmltype
{
text-align: center;
@@ -736,11 +826,11 @@
#feedbackBox
{
- display:none;
- -moz-border-radius:7px 7px 7px 7px;
- border:1px solid #DDDDDD;
- position:fixed;
- top:100px;
+ display: none;
+ -moz-border-radius: 7px 7px 7px 7px;
+ border: 1px solid #DDDDDD;
+ position: fixed;
+ top: 100px;
left: 33%;
height: 190px;
width: 400px;
@@ -750,27 +840,27 @@
}
#feedcloseX a
{
- display:inline;
+ display: inline;
padding: 5px 5px 0 0;
- margin-bottom:3px;
+ margin-bottom: 3px;
color: #363534;
- font-weight:600;
+ font-weight: 600;
float: right;
text-decoration: none;
}
+
#feedbox
- /* here */
{
- display:inline;
+ display: inline;
width: 370px;
height: 120px;
- margin:0px 25px 10px 15px;
+ margin: 0px 25px 10px 15px;
}
#feedsubmit
{
- display:inline;
- float:right;
- margin:4px 32px 0 0;
+ display: inline;
+ float: right;
+ margin: 4px 32px 0 0;
}
#blurpage
{
@@ -786,36 +876,64 @@
}
.toc
{
- float: right;
- -moz-border-radius:7px 7px 7px 7px;
- background-color:#F6F6F6;
- border:1px solid #DDDDDD;
- margin:0 20px 10px 10px;
- padding:20px 15px 20px 20px;
+ float: right;
+ -moz-border-radius: 7px 7px 7px 7px;
+ background-color: #F6F6F6;
+ border: 1px solid #DDDDDD;
+ margin: 0 20px 10px 10px;
+ padding: 20px 15px 20px 20px;
height: auto;
width: 200px;
}
- .toc h3
+ .toc h3, .generic a
{
- font:600 12px/1.2 Arial;
+ font: 600 12px/1.2 Arial;
}
+
+ .generic{
+ max-width:100%;
+ }
+ .generic td{
+ padding:0;
+ }
+
+ .alignedsummary{}
+ .propsummary{}
+ .memItemLeft{}
+ .memItemRight{}
+ .bottomAlign{}
+ .highlightedCode
+ {
+ margin:10px;
+ }
+ .LegaleseLeft{}
+ .valuelist{}
+ .annotated{}
+ .obsolete{}
+ .compat{}
+ .flags{}
+ .qmlsummary{}
+ .qmlitem{}
+ .qmlproto{}
+ .qmlname{}
+ .qmlreadonly{}
+ .qmldefault{}
+ .qmldoc{}
+ .qt-style{}
+ .redFont{}
+ code{}
.wrap .content .toc ul
{
- /* float: left;*/
padding-left: 0px;
-
}
.wrap .content .toc .level2
{
- /* float: left;*/
- padding-left: 15px;
-
+ margin-left: 15px;
}
-
.content .toc li
{
@@ -823,133 +941,187 @@
background: url(../images/bullet_dn.png) no-repeat 0 5px;
}
- .relpage
+ .relpage
{
-moz-border-radius: 7px 7px 7px 7px;
border: 1px solid #DDDDDD;
padding: 25px 25px;
- clear:both;
+ clear: both;
}
.relpage ul
{
float: none;
padding: 15px;
}
- .content .relpage li
+ .content .relpage li
{
font: normal 11px/1.2 Verdana;
}
- /* edit */
h3.fn, span.fn
{
background-color: #F6F6F6;
border-width: 1px;
border-style: solid;
border-color: #E6E6E6;
- font-weight: bold;
- /* padding: 6px 0px 6px 10px;*/
- /* margin: 42px 0px 0px 0px;*/
+ font-weight: bold;
+ word-spacing:3px;
}
- /* edit */
- .indexbox
- {
- width: 100%;
- }
- .content .indexboxcont li
- {
- font: normal 600 13px/1 Verdana;
- }
+ .functionIndex {
+ font-size:12pt;
+ word-spacing:10px;
+ margin-bottom:10px;
+ background-color: #F6F6F6;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #E6E6E6;
+ }
+
+ .centerAlign
+ {
+ text-align:center;
+ }
+
+ .rightAlign
+ {
+ text-align:right;
+ }
- /* .indexbox a
- {
- color: #00732f;
- text-decoration: none;
- }*/
- .indexbox a:hover, .indexbox a:visited:hover
- {
- color: #4c0033;
- text-decoration: underline;
- }
- .indexbox a:visited
+
+ .leftAlign
+ {
+ text-align:left;
+ }
+
+ .topAlign{
+ vertical-align:top
+ }
+
+ .functionIndex a{
+ display:inline-block;
+ }
+
+ /* start index box */
+ .indexbox
{
- color: #00732f;
- text-decoration: none;
+ width: 100%;
+ display:inline-block;
}
.indexboxcont
{
display: block;
+ /* overflow: hidden;*/
}
.indexboxbar
{
- background: transparent url( "../images/horBar.png" ) repeat-x left bottom;
+ background: transparent url(../images/horBar.png ) repeat-x left bottom;
margin-bottom: 25px;
+ /* background-image: none;
+ border-bottom: 1px solid #e2e2e2;*/
}
.indexboxcont .section
{
- display: inline-block;
+ display: inline-block;
width: 49%;
- *width:42%;
- _width:42%;
+ /* *width:42%;
+ _width:42%;*/
padding:0 2% 0 1%;
vertical-align:top;
+
}
.indexboxcont .indexIcon
- {
+ {
width: 11%;
- *width:18%;
- _width:18%;
+ /* *width:18%;
+ _width:18%;*/
overflow:hidden;
+
+}
+
+.indexboxcont .section {
+ float: left;
}
+
.indexboxcont .section p
- {
+ {
padding-top: 20px;
padding-bottom: 20px;
}
-
.indexboxcont .sectionlist
{
display: inline-block;
- width: 33%;
- margin-right: -2px;
- vertical-align: top;
+ width: 32.5%;
padding: 0;
}
- .tricol
- {
-
- }
.indexboxcont .sectionlist ul
{
- padding-left: 15px;
margin-bottom: 20px;
}
-/*
+
.indexboxcont .sectionlist ul li
{
line-height: 12px;
}
-*/
- .lastcol
+
+ .content .indexboxcont li
+ {
+ font: normal 600 13px/1 Verdana;
+ }
+
+ .indexbox a:hover, .indexbox a:visited:hover
{
- display: inline-block;
- vertical-align: top;
- padding: 0;
- max-width: 25%;
+ color: #4c0033;
+ text-decoration: underline;
}
- .tricol .lastcol
+ .indexbox a:visited
{
- margin-left:-6px;
+ color: #00732f;
+ text-decoration: none;
}
+
+ .indexbox .indexIcon {
+ width: 11%;
+ }
- /*.toc ul*/
+
+ .indexbox .indexIcon span
+ {
+ display: block;
+ }
+
+ .indexbox.guide .indexIcon span
+ {
+ width: 96px;
+ height: 137px;
+ background: url(../images/sprites-combined.png) no-repeat -5px -376px;
+ padding: 0;
+ }
+
+ .indexbox.tools .indexIcon span
+ {
+ width: 115px;
+ height: 137px;
+ background: url(../images/sprites-combined.png) no-repeat -111px -376px;
+ padding: 0;
+ }
+ .indexboxcont:after
+ {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
+
- /* end page elements */
+ /* end of screen media */
+
+
}
/* end of screen media */
@@ -957,7 +1129,7 @@
@media print
{
- .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft
+ input, textarea, .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft
{
display: none;
background: none;
diff --git a/doc/src/widgets-and-layouts/layout.qdoc b/doc/src/widgets-and-layouts/layout.qdoc
index 0cfde22..2ca202f 100644
--- a/doc/src/widgets-and-layouts/layout.qdoc
+++ b/doc/src/widgets-and-layouts/layout.qdoc
@@ -47,6 +47,7 @@
/*!
\page layout.html
\title Layout Management
+ \ingroup qt-gui-concepts
\brief A tour of the standard layout managers and an introduction to custom
layouts.
diff --git a/doc/src/widgets-and-layouts/styles.qdoc b/doc/src/widgets-and-layouts/styles.qdoc
index 9a28715..b4bec8c 100644
--- a/doc/src/widgets-and-layouts/styles.qdoc
+++ b/doc/src/widgets-and-layouts/styles.qdoc
@@ -48,6 +48,7 @@
/*!
\page style-reference.html
\title Implementing Styles and Style Aware Widgets
+ \ingroup qt-gui-concepts
\brief An overview of styles and the styling of widgets.
\ingroup frameworks-technologies
diff --git a/doc/src/widgets-and-layouts/widgets.qdoc b/doc/src/widgets-and-layouts/widgets.qdoc
index 7bd27b6..ac0bf77 100644
--- a/doc/src/widgets-and-layouts/widgets.qdoc
+++ b/doc/src/widgets-and-layouts/widgets.qdoc
@@ -42,6 +42,7 @@
/*!
\page widgets-and-layouts.html
\title Widgets and Layouts
+ \ingroup qt-gui-concepts
\ingroup frameworks-technologies
diff --git a/doc/src/windows-and-dialogs/dialogs.qdoc b/doc/src/windows-and-dialogs/dialogs.qdoc
index acee0c5..0b0a842 100644
--- a/doc/src/windows-and-dialogs/dialogs.qdoc
+++ b/doc/src/windows-and-dialogs/dialogs.qdoc
@@ -52,6 +52,7 @@
/*!
\page dialogs.html
\title Dialog Windows
+ \ingroup qt-gui-concepts
\brief An overview over dialog windows.
\previouspage The Application Main Window
diff --git a/doc/src/windows-and-dialogs/mainwindow.qdoc b/doc/src/windows-and-dialogs/mainwindow.qdoc
index 6adfa75..b282dab 100644
--- a/doc/src/windows-and-dialogs/mainwindow.qdoc
+++ b/doc/src/windows-and-dialogs/mainwindow.qdoc
@@ -47,6 +47,7 @@
/*!
\page application-windows.html
\title Application Windows and Dialogs
+ \ingroup qt-gui-concepts
\ingroup frameworks-technologies
\nextpage The Application Main Window
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index 0bd0bf2..89034ca 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -66,7 +66,7 @@ QMAKE_LINK_OBJECT_MAX =
QMAKE_LINK_OBJECT_SCRIPT=
QMAKE_LIBS = -llibc -llibm -leuser -llibdl
-QMAKE_LIBS_CORE = $$QMAKE_LIBS -lefsrv -lhal
+QMAKE_LIBS_CORE = $$QMAKE_LIBS -lefsrv -lhal -lbafl
QMAKE_LIBS_GUI = $$QMAKE_LIBS_CORE -lfbscli -lbitgdi -lgdi -lws32 -lapgrfx -lcone -leikcore -lmediaclientaudio -leikcoctl -leiksrv -lapparc -lcentralrepository
QMAKE_LIBS_NETWORK =
QMAKE_LIBS_EGL = -llibEGL
diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h
index 3f60a13..97f8570 100644
--- a/qmake/generators/win32/msvc_objectmodel.h
+++ b/qmake/generators/win32/msvc_objectmodel.h
@@ -59,7 +59,7 @@ enum DotNET {
NET2003 = 0x71,
NET2005 = 0x80,
NET2008 = 0x90,
- NET2010 = 0x91
+ NET2010 = 0xa0
};
/*
diff --git a/qmake/generators/win32/msvc_vcxproj.cpp b/qmake/generators/win32/msvc_vcxproj.cpp
index da93fe3..05c1511 100644
--- a/qmake/generators/win32/msvc_vcxproj.cpp
+++ b/qmake/generators/win32/msvc_vcxproj.cpp
@@ -89,7 +89,6 @@ bool VcxprojGenerator::writeMakefile(QTextStream &t)
return true;
}
return project->isActiveConfig("build_pass");
- return true;
}
diff --git a/qmake/qmake.pri b/qmake/qmake.pri
index 0163839..6e0f8a2 100644
--- a/qmake/qmake.pri
+++ b/qmake/qmake.pri
@@ -13,7 +13,8 @@ SOURCES += project.cpp property.cpp main.cpp generators/makefile.cpp \
generators/xmloutput.cpp generators/win32/borland_bmake.cpp \
generators/win32/msvc_nmake.cpp generators/projectgenerator.cpp \
generators/win32/msvc_vcproj.cpp \
- generators/win32/msvc_objectmodel.cpp \
+ generators/win32/msvc_vcxproj.cpp \
+ generators/win32/msvc_objectmodel.cpp generators/win32/msbuild_objectmodel.cpp \
generators/symbian/symbiancommon.cpp \
generators/symbian/symmake.cpp \
generators/symbian/symmake_abld.cpp \
@@ -24,11 +25,12 @@ SOURCES += project.cpp property.cpp main.cpp generators/makefile.cpp \
HEADERS += project.h property.h generators/makefile.h \
generators/unix/unixmake.h meta.h option.h cachekeys.h \
- generators/win32/winmakefile.h generators/projectgenerator.h \
+ generators/win32/winmakefile.h generators/win32/mingw_make.h generators/projectgenerator.h \
generators/makefiledeps.h generators/metamakefile.h generators/mac/pbuilder_pbx.h \
generators/xmloutput.h generators/win32/borland_bmake.h generators/win32/msvc_nmake.h \
generators/win32/msvc_vcproj.h \
- generators/win32/mingw_make.h generators/win32/msvc_objectmodel.h \
+ generators/win32/msvc_vcxproj.h \
+ generators/win32/msvc_objectmodel.h generators/win32/msbuild_objectmodel.h \
generators/symbian/symbiancommon.h \
generators/symbian/symmake.h \
generators/symbian/symmake_abld.h \
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 4e580dd..d6ded9d 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -5557,6 +5557,12 @@ QUrl QUrl::resolved(const QUrl &relative) const
removeDotsFromPath(&t.d->encodedPath);
t.d->path.clear();
+#if defined(QURL_DEBUG)
+ qDebug("QUrl(\"%s\").resolved(\"%s\") = \"%s\"",
+ toEncoded().constData(),
+ relative.toEncoded().constData(),
+ t.toEncoded().constData());
+#endif
return t;
}
@@ -5970,19 +5976,22 @@ bool QUrl::isDetached() const
/*!
- Returns a QUrl representation of \a localFile, interpreted as a
- local file.
+ Returns a QUrl representation of \a localFile, interpreted as a local
+ file. This function accepts paths separated by slashes as well as the
+ native separator for this platform.
+
+ This function also accepts paths with a doubled leading slash (or
+ backslash) to indicate a remote file, as in
+ "//servername/path/to/file.txt". Note that only certain platforms can
+ actually open this file using QFile::open().
- \sa toLocalFile()
+ \sa toLocalFile(), isLocalFile(), QDir::toNativeSeparators
*/
QUrl QUrl::fromLocalFile(const QString &localFile)
{
QUrl url;
url.setScheme(QLatin1String("file"));
- QString deslashified = localFile;
- deslashified.replace(QLatin1Char('\\'), QLatin1Char('/'));
-
-
+ QString deslashified = QDir::fromNativeSeparators(localFile);
// magic for drives on windows
if (deslashified.length() > 1 && deslashified.at(1) == QLatin1Char(':') && deslashified.at(0) != QLatin1Char('/')) {
@@ -6001,35 +6010,61 @@ QUrl QUrl::fromLocalFile(const QString &localFile)
}
/*!
- Returns the path of this URL formatted as a local file path.
+ Returns the path of this URL formatted as a local file path. The path
+ returned will use forward slashes, even if it was originally created
+ from one with backslashes.
+
+ If this URL contains a non-empty hostname, it will be encoded in the
+ returned value in the form found on SMB networks (for example,
+ "//servername/path/to/file.txt").
- \sa fromLocalFile()
+ \sa fromLocalFile(), isLocalFile()
*/
QString QUrl::toLocalFile() const
{
- if (!d) return QString();
- if (!QURL_HASFLAG(d->stateFlags, QUrlPrivate::Parsed)) d->parse();
+ // the call to isLocalFile() also ensures that we're parsed
+ if (!isLocalFile())
+ return QString();
QString tmp;
QString ourPath = path();
- if (d->scheme.isEmpty() || QString::compare(d->scheme, QLatin1String("file"), Qt::CaseInsensitive) == 0) {
- // magic for shared drive on windows
- if (!d->host.isEmpty()) {
- tmp = QLatin1String("//") + d->host + (ourPath.length() > 0 && ourPath.at(0) != QLatin1Char('/')
- ? QLatin1Char('/') + ourPath : ourPath);
- } else {
- tmp = ourPath;
- // magic for drives on windows
- if (ourPath.length() > 2 && ourPath.at(0) == QLatin1Char('/') && ourPath.at(2) == QLatin1Char(':'))
- tmp.remove(0, 1);
- }
+ // magic for shared drive on windows
+ if (!d->host.isEmpty()) {
+ tmp = QLatin1String("//") + d->host + (ourPath.length() > 0 && ourPath.at(0) != QLatin1Char('/')
+ ? QLatin1Char('/') + ourPath : ourPath);
+ } else {
+ tmp = ourPath;
+ // magic for drives on windows
+ if (ourPath.length() > 2 && ourPath.at(0) == QLatin1Char('/') && ourPath.at(2) == QLatin1Char(':'))
+ tmp.remove(0, 1);
}
return tmp;
}
/*!
+ \since 4.7
+ Returns true if this URL is pointing to a local file path. A URL is a
+ local file path if the scheme is "file".
+
+ Note that this function considers URLs with hostnames to be local file
+ paths, even if the eventual file path cannot be opened with
+ QFile::open().
+
+ \sa fromLocalFile(), toLocalFile()
+*/
+bool QUrl::isLocalFile() const
+{
+ if (!d) return false;
+ if (!QURL_HASFLAG(d->stateFlags, QUrlPrivate::Parsed)) d->parse();
+
+ if (d->scheme.compare(QLatin1String("file"), Qt::CaseInsensitive) != 0)
+ return false; // not file
+ return true;
+}
+
+/*!
Returns true if this URL is a parent of \a childUrl. \a childUrl is a child
of this URL if the two URLs share the same scheme and authority,
and this URL's path is a parent of the path of \a childUrl.
diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h
index 6f8331a..162aa7c 100644
--- a/src/corelib/io/qurl.h
+++ b/src/corelib/io/qurl.h
@@ -183,6 +183,7 @@ public:
static QUrl fromLocalFile(const QString &localfile);
QString toLocalFile() const;
+ bool isLocalFile() const;
QString toString(FormattingOptions options = None) const;
diff --git a/src/corelib/kernel/qabstractitemmodel.cpp b/src/corelib/kernel/qabstractitemmodel.cpp
index b0503be..3660a3c 100644
--- a/src/corelib/kernel/qabstractitemmodel.cpp
+++ b/src/corelib/kernel/qabstractitemmodel.cpp
@@ -2530,6 +2530,62 @@ bool QAbstractItemModelPrivate::allowMove(const QModelIndex &srcParent, int star
condition is true, in which case you should abort your move
operation.
+ \table 80%
+ \row
+ \o \inlineimage modelview-move-rows-1.png Moving rows to another parent
+ \o Specify the first and last row numbers for the span of rows in
+ the source parent you want to move in the model. Also specify
+ the row in the destination parent to move the span to.
+
+ For example, as shown in the diagram, we move three rows from
+ row 2 to 4 in the source, so \a sourceFirst is 2 and \a sourceLast is 4.
+ We move those items to above row 2 in the destination, so \a destinationRow is 2.
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp 6
+
+ This moves the three rows rows 2, 3, and 4 in the source to become 2, 3 and 4 in
+ the destination. Other affected siblings are displaced accordingly.
+ \row
+ \o \inlineimage modelview-move-rows-2.png Moving rows to append to another parent
+ \o To append rows to another parent, move them to after the last row.
+
+ For example, as shown in the diagram, we move three rows to a
+ collection of 6 existing rows (ending in row 5), so \a destinationStart is 6:
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp 7
+
+ This moves the target rows to the end of the target parent as 6, 7 and 8.
+ \row
+ \o \inlineimage modelview-move-rows-3.png Moving rows in the same parent up
+ \o To move rows within the same parent, specify the row to move them to.
+
+ For example, as shown in the diagram, we move one item from row 2 to row 0,
+ so \a sourceFirst and \a sourceLast are 2 and \a destinationChild is 0.
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp 8
+
+ Note that other rows may be displaced accordingly. Note also that when moving
+ items within the same parent you should not attempt invalid or no-op moves. In
+ the above example, item 2 is at row 2 before the move, so it can not be moved
+ to row 2 (where it is already) or row 3 (no-op as row 3 means above row 3, where
+ it is already)
+
+ \row
+ \o \inlineimage modelview-move-rows-4.png Moving rows in the same parent down
+ \o To move rows within the same parent, specify the row to move them to.
+
+ For example, as shown in the diagram, we move one item from row 2 to row 4,
+ so \a sourceFirst and \a sourceLast are 2 and \a destinationChild is 4.
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp 9
+
+ Note that other rows may be displaced accordingly.
+ \endtable
+
+ \note This function emits the rowsAboutToBeInserted() signal which
+ connected views (or proxies) must handle before the data is inserted.
+ Otherwise, the views may end up in an invalid state.
+
\sa endMoveRows()
\since 4.6
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 609e6b3..4e6e6b9 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -63,6 +63,7 @@
#include <qvarlengtharray.h>
#include <private/qfactoryloader_p.h>
#include <private/qfunctions_p.h>
+#include <private/qlocale_p.h>
#ifdef Q_OS_SYMBIAN
# include <exception>
@@ -521,6 +522,9 @@ QCoreApplication::QCoreApplication(int &argc, char **argv)
QFactoryLoader::refreshAll();
#endif
+#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_SYSTEMLOCALE)
+ d_func()->symbianInit();
+#endif
}
// ### move to QCoreApplicationPrivate constructor?
@@ -597,6 +601,15 @@ void QCoreApplication::init()
qt_startup_hook();
}
+#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_SYSTEMLOCALE)
+void QCoreApplicationPrivate::symbianInit()
+{
+ if (!environmentChangeNotifier)
+ environmentChangeNotifier.reset(new QEnvironmentChangeNotifier);
+}
+#endif
+
+
/*!
Destroys the QCoreApplication object.
*/
diff --git a/src/corelib/kernel/qcoreapplication_p.h b/src/corelib/kernel/qcoreapplication_p.h
index 77188d3..e066137 100644
--- a/src/corelib/kernel/qcoreapplication_p.h
+++ b/src/corelib/kernel/qcoreapplication_p.h
@@ -65,6 +65,9 @@ QT_BEGIN_NAMESPACE
typedef QList<QTranslator*> QTranslatorList;
+#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_SYSTEMLOCALE)
+class QEnvironmentChangeNotifier;
+#endif
class QAbstractEventDispatcher;
class Q_CORE_EXPORT QCoreApplicationPrivate : public QObjectPrivate
@@ -113,6 +116,10 @@ public:
bool aboutToQuitEmitted;
QString cachedApplicationDirPath;
QString cachedApplicationFilePath;
+#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_SYSTEMLOCALE)
+ QScopedPointer<QEnvironmentChangeNotifier> environmentChangeNotifier;
+ void symbianInit();
+#endif
static bool isTranslatorInstalled(QTranslator *translator);
diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp
index a6d486e..687a6d9 100644
--- a/src/corelib/kernel/qeventdispatcher_symbian.cpp
+++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp
@@ -1105,3 +1105,5 @@ void CQtActiveScheduler::Error(TInt aError) const
}
QT_END_NAMESPACE
+
+#include "moc_qeventdispatcher_symbian_p.cpp"
diff --git a/src/corelib/kernel/qeventdispatcher_symbian_p.h b/src/corelib/kernel/qeventdispatcher_symbian_p.h
index 05758ca..bc42753 100644
--- a/src/corelib/kernel/qeventdispatcher_symbian_p.h
+++ b/src/corelib/kernel/qeventdispatcher_symbian_p.h
@@ -221,6 +221,7 @@ public: // from CActiveScheduler
class Q_CORE_EXPORT QEventDispatcherSymbian : public QAbstractEventDispatcher
{
+ Q_OBJECT
Q_DECLARE_PRIVATE(QAbstractEventDispatcher)
public:
diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp
index 67ea00d..2f09b0e 100644
--- a/src/corelib/tools/qchar.cpp
+++ b/src/corelib/tools/qchar.cpp
@@ -653,14 +653,41 @@ bool QChar::isSymbol() const
\fn bool QChar::isHighSurrogate() const
Returns true if the QChar is the high part of a utf16 surrogate
- (ie. if its code point is between 0xd800 and 0xdbff).
+ (ie. if its code point is between 0xd800 and 0xdbff, inclusive).
*/
/*!
\fn bool QChar::isLowSurrogate() const
Returns true if the QChar is the low part of a utf16 surrogate
- (ie. if its code point is between 0xdc00 and 0xdfff).
+ (ie. if its code point is between 0xdc00 and 0xdfff, inclusive).
+*/
+
+/*!
+ \fn static bool QChar::isHighSurrogate(uint ucs4)
+ \since 4.7
+
+ Returns true if the UCS-4-encoded character specified by \a ucs4
+ is the high part of a utf16 surrogate
+ (ie. if its code point is between 0xd800 and 0xdbff, inclusive).
+*/
+
+/*!
+ \fn static bool QChar::isLowSurrogate(uint ucs4)
+ \since 4.7
+
+ Returns true if the UCS-4-encoded character specified by \a ucs4
+ is the high part of a utf16 surrogate
+ (ie. if its code point is between 0xdc00 and 0xdfff, inclusive).
+*/
+
+/*!
+ \fn static bool QChar::requiresSurrogates(uint ucs4)
+ \since 4.7
+
+ Returns true if the UCS-4-encoded character specified by \a ucs4
+ can be splited to the high and low parts of a utf16 surrogate
+ (ie. if its code point is greater than or equals to 0x10000).
*/
/*!
diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h
index 1432c7f..205f911 100644
--- a/src/corelib/tools/qchar.h
+++ b/src/corelib/tools/qchar.h
@@ -285,6 +285,15 @@ public:
inline void setCell(uchar cell);
inline void setRow(uchar row);
+ static inline bool isHighSurrogate(uint ucs4) {
+ return ((ucs4 & 0xfffffc00) == 0xd800);
+ }
+ static inline bool isLowSurrogate(uint ucs4) {
+ return ((ucs4 & 0xfffffc00) == 0xdc00);
+ }
+ static inline bool requiresSurrogates(uint ucs4) {
+ return (ucs4 >= 0x10000);
+ }
static inline uint surrogateToUcs4(ushort high, ushort low) {
return (uint(high)<<10) + low - 0x35fdc00;
}
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index c3f6783..20c2e27 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -129,6 +129,11 @@ inline bool isascii(int c)
}
#endif
+#if defined(Q_OS_SYMBIAN)
+void qt_symbianUpdateSystemPrivate();
+void qt_symbianInitSystemLocale();
+#endif
+
/******************************************************************************
** Helpers for accessing Qt locale database
*/
@@ -1407,6 +1412,9 @@ static const QSystemLocale *systemLocale()
{
if (_systemLocale)
return _systemLocale;
+#if defined(Q_OS_SYMBIAN)
+ qt_symbianInitSystemLocale();
+#endif
return QSystemLocale_globalSystemLocale();
}
@@ -1417,6 +1425,10 @@ void QLocalePrivate::updateSystemPrivate()
system_lp = globalLocalePrivate();
*system_lp = *sys_locale->fallbackLocale().d();
+#if defined(Q_OS_SYMBIAN)
+ qt_symbianUpdateSystemPrivate();
+#endif
+
QVariant res = sys_locale->query(QSystemLocale::LanguageId, QVariant());
if (!res.isNull())
system_lp->m_language_id = res.toInt();
diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h
index ecf79e9..6205745 100644
--- a/src/corelib/tools/qlocale_p.h
+++ b/src/corelib/tools/qlocale_p.h
@@ -58,6 +58,10 @@
#include "qlocale.h"
+#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_SYSTEMLOCALE)
+class CEnvironmentChangeNotifier;
+#endif
+
QT_BEGIN_NAMESPACE
struct Q_CORE_EXPORT QLocalePrivate
@@ -201,6 +205,20 @@ inline char QLocalePrivate::digitToCLocale(const QChar &in) const
return 0;
}
+#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_SYSTEMLOCALE)
+class QEnvironmentChangeNotifier
+{
+public:
+ QEnvironmentChangeNotifier();
+ ~QEnvironmentChangeNotifier();
+
+ static TInt localeChanged(TAny *data);
+
+private:
+ CEnvironmentChangeNotifier *iChangeNotifier;
+};
+#endif
+
QT_END_NAMESPACE
#endif // QLOCALE_P_H
diff --git a/src/corelib/tools/qlocale_symbian.cpp b/src/corelib/tools/qlocale_symbian.cpp
index 01f56cc..6e36dcd 100644
--- a/src/corelib/tools/qlocale_symbian.cpp
+++ b/src/corelib/tools/qlocale_symbian.cpp
@@ -46,8 +46,14 @@
#include <QThread>
#include <e32std.h>
+#include <e32const.h>
+#include <e32base.h>
+#include <e32property.h>
+#include <bacntf.h>
#include "private/qcore_symbian_p.h"
-
+#include "private/qcoreapplication_p.h"
+#include "private/qlocale_p.h"
+#include <qdebug.h>
QT_BEGIN_NAMESPACE
@@ -771,13 +777,18 @@ static QLocale::MeasurementSystem symbianMeasurementSystem()
return QLocale::MetricSystem;
}
-QLocale QSystemLocale::fallbackLocale() const
+void qt_symbianUpdateSystemPrivate()
{
// load system data before query calls
+ _s60Locale.LoadSystemSettings();
+}
+
+void qt_symbianInitSystemLocale()
+{
static QBasicAtomicInt initDone = Q_BASIC_ATOMIC_INITIALIZER(0);
+ if (initDone == 2)
+ return;
if (initDone.testAndSetRelaxed(0, 1)) {
- _s60Locale.LoadSystemSettings();
-
// Initialize platform version dependent function pointers
ptrTimeFormatL = reinterpret_cast<FormatFunc>
(qt_resolveS60PluginFunc(S60Plugin_TimeFormatL));
@@ -801,7 +812,10 @@ QLocale QSystemLocale::fallbackLocale() const
}
while(initDone != 2)
QThread::yieldCurrentThread();
+}
+QLocale QSystemLocale::fallbackLocale() const
+{
TLanguage lang = User::Language();
QString locale = QLatin1String(qt_symbianLocaleName(lang));
return QLocale(locale);
@@ -884,4 +898,35 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const
return QVariant();
}
+#if !defined(QT_NO_SYSTEMLOCALE)
+QEnvironmentChangeNotifier::QEnvironmentChangeNotifier()
+{
+ // Create the change notifier and install the callback function
+ const TCallBack callback(&QEnvironmentChangeNotifier::localeChanged, this);
+ QT_TRAP_THROWING(iChangeNotifier = CEnvironmentChangeNotifier::NewL(CActive::EPriorityStandard, callback));
+ iChangeNotifier->Start();
+}
+
+TInt QEnvironmentChangeNotifier::localeChanged(TAny *data)
+{
+ QEnvironmentChangeNotifier *that = reinterpret_cast<QEnvironmentChangeNotifier *>(data);
+
+ TInt flag = that->iChangeNotifier->Change();
+ if (flag & EChangesLocale) {
+ static bool first = true;
+ if (!first) { // skip the first notification on app startup
+ QT_TRYCATCH_LEAVING(QLocalePrivate::updateSystemPrivate());
+ QT_TRYCATCH_LEAVING(QCoreApplication::postEvent(qApp, new QEvent(QEvent::LocaleChange)));
+ }
+ first = false;
+ }
+ return KErrNone;
+}
+
+QEnvironmentChangeNotifier::~QEnvironmentChangeNotifier()
+{
+ delete iChangeNotifier;
+}
+#endif
+
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h
index df0ae46..5696ba6 100644
--- a/src/corelib/tools/qmap.h
+++ b/src/corelib/tools/qmap.h
@@ -125,6 +125,10 @@ template <class Key, class T>
struct QMapNode {
Key key;
T value;
+
+private:
+ // never access these members through this structure.
+ // see below
QMapData::Node *backward;
QMapData::Node *forward[1];
};
@@ -134,6 +138,22 @@ struct QMapPayloadNode
{
Key key;
T value;
+
+private:
+ // QMap::e is a pointer to QMapData::Node, which matches the member
+ // below. However, the memory allocation node in QMapData::node_create
+ // allocates sizeof(QMapPayloNode) and incorrectly calculates the offset
+ // of 'backward' below. If the alignment of QMapPayloadNode is larger
+ // than the alignment of a pointer, the 'backward' member is aligned to
+ // the end of this structure, not to 'value' above, and will occupy the
+ // tail-padding area.
+ //
+ // e.g., on a 32-bit archictecture with Key = int and
+ // sizeof(T) = alignof(T) = 8
+ // 0 4 8 12 16 20 24 byte
+ // | key | PAD | value |backward| PAD | correct layout
+ // | key | PAD | value | |backward| how it's actually used
+ // |<----- value of QMap::payload() = 20 ----->|
QMapData::Node *backward;
};
diff --git a/src/dbus/qdbusinternalfilters.cpp b/src/dbus/qdbusinternalfilters.cpp
index 8fc219a..78abf94 100644
--- a/src/dbus/qdbusinternalfilters.cpp
+++ b/src/dbus/qdbusinternalfilters.cpp
@@ -87,7 +87,7 @@ static const char propertiesInterfaceXml[] =
" <method name=\"GetAll\">\n"
" <arg name=\"interface_name\" type=\"s\" direction=\"in\"/>\n"
" <arg name=\"values\" type=\"a{sv}\" direction=\"out\"/>\n"
- " <annotation name=\"com.trolltech.QtDBus.QtTypeName.Out0\" value=\"QVariantMap\"/>"
+ " <annotation name=\"com.trolltech.QtDBus.QtTypeName.Out0\" value=\"QVariantMap\"/>\n"
" </method>\n"
" </interface>\n";
diff --git a/src/dbus/qdbusxmlgenerator.cpp b/src/dbus/qdbusxmlgenerator.cpp
index 9c25d82..463ac73 100644
--- a/src/dbus/qdbusxmlgenerator.cpp
+++ b/src/dbus/qdbusxmlgenerator.cpp
@@ -160,7 +160,7 @@ static QString generateInterfaceXml(const QMetaObject *mo, int flags, int method
// do we need to describe this argument?
if (QDBusMetaType::signatureToType(typeName) == QVariant::Invalid)
xml += QString::fromLatin1(" <annotation name=\"com.trolltech.QtDBus.QtTypeName.Out0\" value=\"%1\"/>\n")
- .arg(typeNameToXml(mm.typeName()));
+ .arg(typeNameToXml(QVariant::typeToName(QVariant::Type(typeId))));
} else
continue;
}
diff --git a/src/declarative/graphicsitems/qdeclarativegridview_p.h b/src/declarative/graphicsitems/qdeclarativegridview_p.h
index c06879e..f5d061d 100644
--- a/src/declarative/graphicsitems/qdeclarativegridview_p.h
+++ b/src/declarative/graphicsitems/qdeclarativegridview_p.h
@@ -142,7 +142,7 @@ public:
void setSnapMode(SnapMode mode);
enum PositionMode { Beginning, Center, End, Visible, Contain };
- Q_ENUMS(PositionMode);
+ Q_ENUMS(PositionMode)
Q_INVOKABLE void positionViewAtIndex(int index, int mode);
Q_INVOKABLE int indexAt(int x, int y) const;
diff --git a/src/declarative/graphicsitems/qdeclarativelistview_p.h b/src/declarative/graphicsitems/qdeclarativelistview_p.h
index 9c0b7dd..051455c 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview_p.h
+++ b/src/declarative/graphicsitems/qdeclarativelistview_p.h
@@ -200,7 +200,7 @@ public:
static QDeclarativeListViewAttached *qmlAttachedProperties(QObject *);
enum PositionMode { Beginning, Center, End, Visible, Contain };
- Q_ENUMS(PositionMode);
+ Q_ENUMS(PositionMode)
Q_INVOKABLE void positionViewAtIndex(int index, int mode);
Q_INVOKABLE int indexAt(int x, int y) const;
diff --git a/src/declarative/qml/qdeclarativebinding_p.h b/src/declarative/qml/qdeclarativebinding_p.h
index 2d3acf5..598f09f 100644
--- a/src/declarative/qml/qdeclarativebinding_p.h
+++ b/src/declarative/qml/qdeclarativebinding_p.h
@@ -164,6 +164,6 @@ private:
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QDeclarativeBinding*);
+Q_DECLARE_METATYPE(QDeclarativeBinding*)
#endif // QDECLARATIVEBINDING_P_H
diff --git a/src/declarative/qml/qdeclarativecompiledbindings_p.h b/src/declarative/qml/qdeclarativecompiledbindings_p.h
index a17bc84..d5c6a02 100644
--- a/src/declarative/qml/qdeclarativecompiledbindings_p.h
+++ b/src/declarative/qml/qdeclarativecompiledbindings_p.h
@@ -104,8 +104,8 @@ protected:
int qt_metacall(QMetaObject::Call, int, void **);
private:
- Q_DISABLE_COPY(QDeclarativeCompiledBindings);
- Q_DECLARE_PRIVATE(QDeclarativeCompiledBindings);
+ Q_DISABLE_COPY(QDeclarativeCompiledBindings)
+ Q_DECLARE_PRIVATE(QDeclarativeCompiledBindings)
};
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativecomponent_p.h b/src/declarative/qml/qdeclarativecomponent_p.h
index 24e5386..8b95945 100644
--- a/src/declarative/qml/qdeclarativecomponent_p.h
+++ b/src/declarative/qml/qdeclarativecomponent_p.h
@@ -149,7 +149,7 @@ Q_SIGNALS:
void destruction();
private:
- friend class QDeclarativeContextData;;
+ friend class QDeclarativeContextData;
friend class QDeclarativeComponentPrivate;
};
diff --git a/src/declarative/qml/qdeclarativecompositetypemanager.cpp b/src/declarative/qml/qdeclarativecompositetypemanager.cpp
index 0eb7e1b..625356c 100644
--- a/src/declarative/qml/qdeclarativecompositetypemanager.cpp
+++ b/src/declarative/qml/qdeclarativecompositetypemanager.cpp
@@ -338,7 +338,7 @@ void QDeclarativeCompositeTypeManager::resourceReplyFinished()
// WARNING, there is a copy of this function in qdeclarativeengine.cpp
static QString toLocalFileOrQrc(const QUrl& url)
{
- if (url.scheme() == QLatin1String("qrc")) {
+ if (url.scheme().compare(QLatin1String("qrc"), Qt::CaseInsensitive) == 0) {
if (url.authority().isEmpty())
return QLatin1Char(':') + url.path();
return QString();
@@ -360,7 +360,10 @@ void QDeclarativeCompositeTypeManager::loadResource(QDeclarativeCompositeTypeRes
} else {
resource->status = QDeclarativeCompositeTypeResource::Error;
}
+ } else if (url.scheme().isEmpty()) {
+ // We can't open this, so just declare as an error
+ resource->status = QDeclarativeCompositeTypeResource::Error;
} else {
QNetworkReply *reply =
@@ -382,27 +385,29 @@ void QDeclarativeCompositeTypeManager::loadSource(QDeclarativeCompositeTypeData
if (file.open(QFile::ReadOnly)) {
QByteArray data = file.readAll();
setData(unit, data, url);
- } else {
- QString errorDescription;
- // ### - Fill in error
- errorDescription = QLatin1String("File error for URL ") + url.toString();
- unit->status = QDeclarativeCompositeTypeData::Error;
- // ### FIXME
- QDeclarativeError error;
- error.setDescription(errorDescription);
- unit->errorType = QDeclarativeCompositeTypeData::AccessError;
- unit->errors << error;
- doComplete(unit);
+ return; // success
}
-
- } else {
+ } else if (!url.scheme().isEmpty()) {
QNetworkReply *reply =
engine->networkAccessManager()->get(QNetworkRequest(url));
QObject::connect(reply, SIGNAL(finished()),
this, SLOT(replyFinished()));
QObject::connect(reply, SIGNAL(downloadProgress(qint64,qint64)),
this, SLOT(requestProgress(qint64,qint64)));
+ return; // waiting
}
+
+ // error happened
+ QString errorDescription;
+ // ### - Fill in error
+ errorDescription = QLatin1String("File error for URL ") + url.toString();
+ unit->status = QDeclarativeCompositeTypeData::Error;
+ // ### FIXME
+ QDeclarativeError error;
+ error.setDescription(errorDescription);
+ unit->errorType = QDeclarativeCompositeTypeData::AccessError;
+ unit->errors << error;
+ doComplete(unit);
}
void QDeclarativeCompositeTypeManager::requestProgress(qint64 received, qint64 total)
@@ -724,8 +729,10 @@ void QDeclarativeCompositeTypeManager::compile(QDeclarativeCompositeTypeData *un
}
}
- QUrl importUrl = unit->imports.baseUrl().resolved(QUrl(QLatin1String("qmldir")));
- if (toLocalFileOrQrc(importUrl).isEmpty())
+ QUrl importUrl;
+ if (!unit->imports.baseUrl().scheme().isEmpty())
+ importUrl = unit->imports.baseUrl().resolved(QUrl(QLatin1String("qmldir")));
+ if (!importUrl.scheme().isEmpty() && toLocalFileOrQrc(importUrl).isEmpty())
resourceList.prepend(importUrl);
for (int ii = 0; ii < resourceList.count(); ++ii) {
diff --git a/src/declarative/qml/qdeclarativecontext.h b/src/declarative/qml/qdeclarativecontext.h
index 548869c..d87123a 100644
--- a/src/declarative/qml/qdeclarativecontext.h
+++ b/src/declarative/qml/qdeclarativecontext.h
@@ -107,7 +107,7 @@ private:
};
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QList<QObject*>);
+Q_DECLARE_METATYPE(QList<QObject*>)
QT_END_HEADER
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index 0ee6dfe..1387432 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -1526,7 +1526,7 @@ QVariant QDeclarativeEnginePrivate::scriptValueToVariant(const QScriptValue &val
// WARNING, there is a copy of this function in qdeclarativecompositetypemanager.cpp
static QString toLocalFileOrQrc(const QUrl& url)
{
- if (url.scheme() == QLatin1String("qrc")) {
+ if (url.scheme().compare(QLatin1String("qrc"), Qt::CaseInsensitive) == 0) {
if (url.authority().isEmpty())
return QLatin1Char(':') + url.path();
return QString();
diff --git a/src/declarative/qml/qdeclarativeguard_p.h b/src/declarative/qml/qdeclarativeguard_p.h
index be60ce4..02fed0b 100644
--- a/src/declarative/qml/qdeclarativeguard_p.h
+++ b/src/declarative/qml/qdeclarativeguard_p.h
@@ -97,7 +97,7 @@ private:
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QDeclarativeGuard<QObject>);
+Q_DECLARE_METATYPE(QDeclarativeGuard<QObject>)
#include "private/qdeclarativedata_p.h"
diff --git a/src/declarative/qml/qdeclarativepropertycache.cpp b/src/declarative/qml/qdeclarativepropertycache.cpp
index 888945b..26bddde 100644
--- a/src/declarative/qml/qdeclarativepropertycache.cpp
+++ b/src/declarative/qml/qdeclarativepropertycache.cpp
@@ -45,7 +45,7 @@
#include "private/qdeclarativebinding_p.h"
#include <QtCore/qdebug.h>
-Q_DECLARE_METATYPE(QScriptValue);
+Q_DECLARE_METATYPE(QScriptValue)
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativescriptstring.h b/src/declarative/qml/qdeclarativescriptstring.h
index 43bef44..fc92a9b 100644
--- a/src/declarative/qml/qdeclarativescriptstring.h
+++ b/src/declarative/qml/qdeclarativescriptstring.h
@@ -79,7 +79,7 @@ private:
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QDeclarativeScriptString);
+Q_DECLARE_METATYPE(QDeclarativeScriptString)
QT_END_HEADER
diff --git a/src/declarative/qml/qdeclarativestringconverters_p.h b/src/declarative/qml/qdeclarativestringconverters_p.h
index 7afdfd3..97f72fc 100644
--- a/src/declarative/qml/qdeclarativestringconverters_p.h
+++ b/src/declarative/qml/qdeclarativestringconverters_p.h
@@ -80,7 +80,7 @@ namespace QDeclarativeStringConverters
QSizeF Q_DECLARATIVE_EXPORT sizeFFromString(const QString &, bool *ok = 0);
QRectF Q_DECLARATIVE_EXPORT rectFFromString(const QString &, bool *ok = 0);
QVector3D Q_DECLARATIVE_EXPORT vector3DFromString(const QString &, bool *ok = 0);
-};
+}
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativeworkerscript_p.h b/src/declarative/qml/qdeclarativeworkerscript_p.h
index 6cce799..4019d13 100644
--- a/src/declarative/qml/qdeclarativeworkerscript_p.h
+++ b/src/declarative/qml/qdeclarativeworkerscript_p.h
@@ -119,7 +119,7 @@ private:
QT_END_NAMESPACE
-QML_DECLARE_TYPE(QDeclarativeWorkerScript);
+QML_DECLARE_TYPE(QDeclarativeWorkerScript)
QT_END_HEADER
diff --git a/src/declarative/qml/qdeclarativexmlhttprequest.cpp b/src/declarative/qml/qdeclarativexmlhttprequest.cpp
index b7e1832..e034165 100644
--- a/src/declarative/qml/qdeclarativexmlhttprequest.cpp
+++ b/src/declarative/qml/qdeclarativexmlhttprequest.cpp
@@ -318,9 +318,9 @@ public:
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(Node);
-Q_DECLARE_METATYPE(NodeList);
-Q_DECLARE_METATYPE(NamedNodeMap);
+Q_DECLARE_METATYPE(Node)
+Q_DECLARE_METATYPE(NodeList)
+Q_DECLARE_METATYPE(NamedNodeMap)
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/util/qdeclarativelistmodelworkeragent_p.h b/src/declarative/util/qdeclarativelistmodelworkeragent_p.h
index 53d30c2..1622144 100644
--- a/src/declarative/util/qdeclarativelistmodelworkeragent_p.h
+++ b/src/declarative/util/qdeclarativelistmodelworkeragent_p.h
@@ -146,7 +146,7 @@ private:
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QDeclarativeListModelWorkerAgent::VariantRef);
+Q_DECLARE_METATYPE(QDeclarativeListModelWorkerAgent::VariantRef)
QT_END_HEADER
diff --git a/src/declarative/util/qdeclarativesmoothedanimation_p.h b/src/declarative/util/qdeclarativesmoothedanimation_p.h
index 17aafa4..f45d19f 100644
--- a/src/declarative/util/qdeclarativesmoothedanimation_p.h
+++ b/src/declarative/util/qdeclarativesmoothedanimation_p.h
@@ -96,7 +96,7 @@ Q_SIGNALS:
QT_END_NAMESPACE
-QML_DECLARE_TYPE(QDeclarativeSmoothedAnimation);
+QML_DECLARE_TYPE(QDeclarativeSmoothedAnimation)
QT_END_HEADER
diff --git a/src/declarative/util/qdeclarativesmoothedfollow_p.h b/src/declarative/util/qdeclarativesmoothedfollow_p.h
index d860052..6319192 100644
--- a/src/declarative/util/qdeclarativesmoothedfollow_p.h
+++ b/src/declarative/util/qdeclarativesmoothedfollow_p.h
@@ -106,7 +106,7 @@ Q_SIGNALS:
QT_END_NAMESPACE
-QML_DECLARE_TYPE(QDeclarativeSmoothedFollow);
+QML_DECLARE_TYPE(QDeclarativeSmoothedFollow)
QT_END_HEADER
diff --git a/src/declarative/util/qdeclarativetransitionmanager_p_p.h b/src/declarative/util/qdeclarativetransitionmanager_p_p.h
index 4131391..2e23898 100644
--- a/src/declarative/util/qdeclarativetransitionmanager_p_p.h
+++ b/src/declarative/util/qdeclarativetransitionmanager_p_p.h
@@ -70,7 +70,7 @@ public:
void cancel();
private:
- Q_DISABLE_COPY(QDeclarativeTransitionManager);
+ Q_DISABLE_COPY(QDeclarativeTransitionManager)
QDeclarativeTransitionManagerPrivate *d;
void complete();
diff --git a/src/gui/dialogs/qcolordialog_mac.mm b/src/gui/dialogs/qcolordialog_mac.mm
index 8af0d2b..82cfa24 100644
--- a/src/gui/dialogs/qcolordialog_mac.mm
+++ b/src/gui/dialogs/qcolordialog_mac.mm
@@ -65,9 +65,9 @@ typedef float CGFloat; // Should only not be defined on 32-bit platforms
QT_USE_NAMESPACE
-@class QCocoaColorPanelDelegate;
+@class QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate);
-@interface QCocoaColorPanelDelegate : NSObject<NSWindowDelegate> {
+@interface QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) : NSObject<NSWindowDelegate> {
NSColorPanel *mColorPanel;
NSView *mStolenContentView;
NSButton *mOkButton;
@@ -99,7 +99,7 @@ QT_USE_NAMESPACE
- (void)setResultSet:(BOOL)result;
@end
-@implementation QCocoaColorPanelDelegate
+@implementation QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate)
- (id)initWithColorPanel:(NSColorPanel *)panel
stolenContentView:(NSView *)stolenContentView
okButton:(NSButton *)okButton
@@ -432,26 +432,26 @@ void QColorDialogPrivate::openCocoaColorPanel(const QColor &initial,
[colorPanel setDefaultButtonCell:[okButton cell]];
}
- delegate = [[QCocoaColorPanelDelegate alloc] initWithColorPanel:colorPanel
+ delegate = [[QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) alloc] initWithColorPanel:colorPanel
stolenContentView:stolenContentView
okButton:okButton
cancelButton:cancelButton
priv:this];
- [colorPanel setDelegate:static_cast<QCocoaColorPanelDelegate *>(delegate)];
+ [colorPanel setDelegate:static_cast<QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) *>(delegate)];
}
[delegate setResultSet:false];
setCocoaPanelColor(initial);
- [static_cast<QCocoaColorPanelDelegate *>(delegate) showColorPanel];
+ [static_cast<QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) *>(delegate) showColorPanel];
}
void QColorDialogPrivate::closeCocoaColorPanel()
{
- [static_cast<QCocoaColorPanelDelegate *>(delegate) onCancelClicked];
+ [static_cast<QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) *>(delegate) onCancelClicked];
}
void QColorDialogPrivate::releaseCocoaColorPanelDelegate()
{
- [static_cast<QCocoaColorPanelDelegate *>(delegate) release];
+ [static_cast<QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) *>(delegate) release];
}
void QColorDialogPrivate::mac_nativeDialogModalHelp()
@@ -471,13 +471,13 @@ void QColorDialogPrivate::mac_nativeDialogModalHelp()
void QColorDialogPrivate::_q_macRunNativeAppModalPanel()
{
- [static_cast<QCocoaColorPanelDelegate *>(delegate) exec];
+ [static_cast<QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) *>(delegate) exec];
}
void QColorDialogPrivate::setCocoaPanelColor(const QColor &color)
{
QMacCocoaAutoReleasePool pool;
- QCocoaColorPanelDelegate *theDelegate = static_cast<QCocoaColorPanelDelegate *>(delegate);
+ QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) *theDelegate = static_cast<QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) *>(delegate);
NSColor *nsColor;
const QColor::Spec spec = color.spec();
if (spec == QColor::Cmyk) {
diff --git a/src/gui/dialogs/qfiledialog_mac.mm b/src/gui/dialogs/qfiledialog_mac.mm
index 28acf24..b07b1ea 100644
--- a/src/gui/dialogs/qfiledialog_mac.mm
+++ b/src/gui/dialogs/qfiledialog_mac.mm
@@ -82,9 +82,9 @@ QT_FORWARD_DECLARE_CLASS(QAction)
QT_FORWARD_DECLARE_CLASS(QFileInfo)
QT_USE_NAMESPACE
-@class QNSOpenSavePanelDelegate;
+@class QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate);
-@interface QNSOpenSavePanelDelegate : NSObject {
+@interface QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) : NSObject {
@public
NSOpenPanel *mOpenPanel;
NSSavePanel *mSavePanel;
@@ -123,7 +123,7 @@ QT_USE_NAMESPACE
@end
-@implementation QNSOpenSavePanelDelegate
+@implementation QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate)
- (id)initWithAcceptMode:(QT_PREPEND_NAMESPACE(QFileDialog::AcceptMode))acceptMode
title:(const QString &)title
@@ -554,7 +554,7 @@ void QFileDialogPrivate::setDirectory_sys(const QString &directory)
}
#else
QMacCocoaAutoReleasePool pool;
- QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
[delegate->mSavePanel setDirectory:qt_mac_QStringToNSString(directory)];
#endif
}
@@ -565,7 +565,7 @@ QString QFileDialogPrivate::directory_sys() const
return mCurrentLocation;
#else
QMacCocoaAutoReleasePool pool;
- QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
return qt_mac_NSStringToQString([delegate->mSavePanel directory]);
#endif
}
@@ -622,7 +622,7 @@ QStringList QFileDialogPrivate::selectedFiles_sys() const
}
#else
QMacCocoaAutoReleasePool pool;
- QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
return [delegate selectedFiles];
#endif
}
@@ -633,7 +633,7 @@ void QFileDialogPrivate::setNameFilters_sys(const QStringList &filters)
Q_UNUSED(filters);
#else
QMacCocoaAutoReleasePool pool;
- QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
bool hideDetails = q_func()->testOption(QFileDialog::HideNameFilterDetails);
[delegate setNameFilters:filters hideDetails:hideDetails];
#endif
@@ -645,7 +645,7 @@ void QFileDialogPrivate::setFilter_sys()
#else
Q_Q(QFileDialog);
QMacCocoaAutoReleasePool pool;
- QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
*(delegate->mQDirFilter) = model->filter();
delegate->mFileMode = fileMode;
[delegate->mSavePanel setTitle:qt_mac_QStringToNSString(q->windowTitle())];
@@ -668,7 +668,7 @@ void QFileDialogPrivate::selectNameFilter_sys(const QString &filter)
NavCustomControl(mDialog, kNavCtlSelectCustomType, &navSpec);
#else
QMacCocoaAutoReleasePool pool;
- QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
[delegate->mPopUpButton selectItemAtIndex:index];
[delegate filterChanged:nil];
#endif
@@ -681,7 +681,7 @@ QString QFileDialogPrivate::selectedNameFilter_sys() const
int index = filterInfo.currentSelection;
#else
QMacCocoaAutoReleasePool pool;
- QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
int index = [delegate->mPopUpButton indexOfSelectedItem];
#endif
return index != -1 ? nameFilters.at(index) : QString();
@@ -696,7 +696,7 @@ void QFileDialogPrivate::deleteNativeDialog_sys()
mDialogStarted = false;
#else
QMacCocoaAutoReleasePool pool;
- [reinterpret_cast<QNSOpenSavePanelDelegate *>(mDelegate) release];
+ [reinterpret_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate) release];
mDelegate = 0;
#endif
nativeDialogInUse = false;
@@ -1034,7 +1034,7 @@ void QFileDialogPrivate::createNSOpenSavePanelDelegate()
bool selectDir = q->selectedFiles().isEmpty();
QString selection(selectDir ? q->directory().absolutePath() : q->selectedFiles().value(0));
- QNSOpenSavePanelDelegate *delegate = [[QNSOpenSavePanelDelegate alloc]
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = [[QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) alloc]
initWithAcceptMode:acceptMode
title:q->windowTitle()
nameFilters:q->nameFilters()
@@ -1055,7 +1055,7 @@ bool QFileDialogPrivate::showCocoaFilePanel()
Q_Q(QFileDialog);
QMacCocoaAutoReleasePool pool;
createNSOpenSavePanelDelegate();
- QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
if (qt_mac_is_macsheet(q))
[delegate showWindowModalSheet:q->parentWidget()];
else
@@ -1071,7 +1071,7 @@ bool QFileDialogPrivate::hideCocoaFilePanel()
return false;
} else {
QMacCocoaAutoReleasePool pool;
- QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
[delegate closePanel];
// Even when we hide it, we are still using a
// native dialog, so return true:
@@ -1104,7 +1104,7 @@ void QFileDialogPrivate::_q_macRunNativeAppModalPanel()
#else
Q_Q(QFileDialog);
QMacCocoaAutoReleasePool pool;
- QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
[delegate runApplicationModalPanel];
dialogResultCode_sys() == QDialog::Accepted ? q->accept() : q->reject();
#endif
@@ -1119,7 +1119,7 @@ QDialog::DialogCode QFileDialogPrivate::dialogResultCode_sys()
else
return QDialog::Accepted;
#else
- QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
+ QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
return [delegate dialogResultCode];
#endif
}
diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm
index 919790b..bb8ef3f 100644
--- a/src/gui/dialogs/qfontdialog_mac.mm
+++ b/src/gui/dialogs/qfontdialog_mac.mm
@@ -82,7 +82,7 @@ const CGFloat DialogSideMargin = 9.0;
const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask;
-@class QCocoaFontPanelDelegate;
+@class QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate);
#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5
@@ -93,7 +93,7 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin
#endif
-@interface QCocoaFontPanelDelegate : NSObject <NSWindowDelegate> {
+@interface QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate) : NSObject <NSWindowDelegate> {
NSFontPanel *mFontPanel;
NSView *mStolenContentView;
NSButton *mOkButton;
@@ -156,7 +156,7 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont)
return newFont;
}
-@implementation QCocoaFontPanelDelegate
+@implementation QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate)
- (id)initWithFontPanel:(NSFontPanel *)panel
stolenContentView:(NSView *)stolenContentView
okButton:(NSButton *)okButton
@@ -478,7 +478,7 @@ QT_BEGIN_NAMESPACE
void QFontDialogPrivate::closeCocoaFontPanel()
{
QMacCocoaAutoReleasePool pool;
- QCocoaFontPanelDelegate *theDelegate = static_cast<QCocoaFontPanelDelegate *>(delegate);
+ QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate) *theDelegate = static_cast<QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate) *>(delegate);
NSWindow *ourPanel = [theDelegate actualPanel];
[ourPanel close];
[theDelegate cleanUpAfterMyself];
@@ -519,7 +519,7 @@ void QFontDialogPrivate::setFont(void *delegate, const QFont &font)
}
[mgr setSelectedFont:nsFont isMultiple:NO];
- [static_cast<QCocoaFontPanelDelegate *>(delegate) setQtFont:font];
+ [static_cast<QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate) *>(delegate) setQtFont:font];
}
void QFontDialogPrivate::createNSFontPanelDelegate()
@@ -584,7 +584,7 @@ void QFontDialogPrivate::createNSFontPanelDelegate()
}
// create the delegate and set it
- QCocoaFontPanelDelegate *del = [[QCocoaFontPanelDelegate alloc] initWithFontPanel:sharedFontPanel
+ QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate) *del = [[QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate) alloc] initWithFontPanel:sharedFontPanel
stolenContentView:stolenContentView
okButton:okButton
cancelButton:cancelButton
@@ -637,7 +637,7 @@ void QFontDialogPrivate::mac_nativeDialogModalHelp()
void QFontDialogPrivate::_q_macRunNativeAppModalPanel()
{
createNSFontPanelDelegate();
- QCocoaFontPanelDelegate *del = static_cast<QCocoaFontPanelDelegate *>(delegate);
+ QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate) *del = static_cast<QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate) *>(delegate);
[del runApplicationModalPanel];
}
@@ -649,7 +649,7 @@ bool QFontDialogPrivate::showCocoaFontPanel()
Q_Q(QFontDialog);
QMacCocoaAutoReleasePool pool;
createNSFontPanelDelegate();
- QCocoaFontPanelDelegate *del = static_cast<QCocoaFontPanelDelegate *>(delegate);
+ QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate) *del = static_cast<QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate) *>(delegate);
if (qt_mac_is_macsheet(q))
[del showWindowModalSheet:q->parentWidget()];
else
diff --git a/src/gui/dialogs/qnspanelproxy_mac.mm b/src/gui/dialogs/qnspanelproxy_mac.mm
index 3229a4d..0bd5c63 100644
--- a/src/gui/dialogs/qnspanelproxy_mac.mm
+++ b/src/gui/dialogs/qnspanelproxy_mac.mm
@@ -52,9 +52,9 @@ QT_END_NAMESPACE
QT_USE_NAMESPACE
-@class QNSPanelProxy;
+@class QT_MANGLE_NAMESPACE(QNSPanelProxy);
-@interface QNSPanelProxy : NSWindow {
+@interface QT_MANGLE_NAMESPACE(QNSPanelProxy) : NSWindow {
}
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle
backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation;
@@ -66,7 +66,7 @@ QT_USE_NAMESPACE
backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation screen:(NSScreen *)screen;
@end
-@implementation QNSPanelProxy
+@implementation QT_MANGLE_NAMESPACE(QNSPanelProxy)
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle
backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation
{
@@ -108,15 +108,15 @@ QT_USE_NAMESPACE
}
@end
-@class QNSWindowProxy;
+@class QT_MANGLE_NAMESPACE(QNSWindowProxy);
-@interface QNSWindowProxy : NSWindow {
+@interface QT_MANGLE_NAMESPACE(QNSWindowProxy) : NSWindow {
}
- (void)setTitle:(NSString *)title;
- (void)qt_fakeSetTitle:(NSString *)title;
@end
-@implementation QNSWindowProxy
+@implementation QT_MANGLE_NAMESPACE(QNSWindowProxy)
- (void)setTitle:(NSString *)title
{
QCFString cftitle(currentWindow->windowTitle());
@@ -190,10 +190,10 @@ void macStartInterceptNSPanelCtor()
{
macStartIntercept(@selector(initWithContentRect:styleMask:backing:defer:),
@selector(qt_fakeInitWithContentRect:styleMask:backing:defer:),
- [NSPanel class], [QNSPanelProxy class]);
+ [NSPanel class], [QT_MANGLE_NAMESPACE(QNSPanelProxy) class]);
macStartIntercept(@selector(initWithContentRect:styleMask:backing:defer:screen:),
@selector(qt_fakeInitWithContentRect:styleMask:backing:defer:screen:),
- [NSPanel class], [QNSPanelProxy class]);
+ [NSPanel class], [QT_MANGLE_NAMESPACE(QNSPanelProxy) class]);
}
/*
@@ -203,10 +203,10 @@ void macStopInterceptNSPanelCtor()
{
macStopIntercept(@selector(initWithContentRect:styleMask:backing:defer:screen:),
@selector(qt_fakeInitWithContentRect:styleMask:backing:defer:screen:),
- [NSPanel class], [QNSPanelProxy class]);
+ [NSPanel class], [QT_MANGLE_NAMESPACE(QNSPanelProxy) class]);
macStopIntercept(@selector(initWithContentRect:styleMask:backing:defer:),
@selector(qt_fakeInitWithContentRect:styleMask:backing:defer:),
- [NSPanel class], [QNSPanelProxy class]);
+ [NSPanel class], [QT_MANGLE_NAMESPACE(QNSPanelProxy) class]);
}
/*
@@ -217,7 +217,7 @@ void macStartInterceptWindowTitle(QWidget *window)
{
currentWindow = window;
macStartIntercept(@selector(setTitle:), @selector(qt_fakeSetTitle:),
- [NSWindow class], [QNSWindowProxy class]);
+ [NSWindow class], [QT_MANGLE_NAMESPACE(QNSWindowProxy) class]);
}
/*
@@ -227,7 +227,7 @@ void macStopInterceptWindowTitle()
{
currentWindow = 0;
macStopIntercept(@selector(setTitle:), @selector(qt_fakeSetTitle:),
- [NSWindow class], [QNSWindowProxy class]);
+ [NSWindow class], [QT_MANGLE_NAMESPACE(QNSWindowProxy) class]);
}
/*
diff --git a/src/gui/dialogs/qpagesetupdialog_mac.mm b/src/gui/dialogs/qpagesetupdialog_mac.mm
index cfcde0f..0302be4 100644
--- a/src/gui/dialogs/qpagesetupdialog_mac.mm
+++ b/src/gui/dialogs/qpagesetupdialog_mac.mm
@@ -50,9 +50,9 @@
QT_USE_NAMESPACE
-@class QCocoaPageLayoutDelegate;
+@class QT_MANGLE_NAMESPACE(QCocoaPageLayoutDelegate);
-@interface QCocoaPageLayoutDelegate : NSObject {
+@interface QT_MANGLE_NAMESPACE(QCocoaPageLayoutDelegate) : NSObject {
QMacPrintEnginePrivate *pe;
}
- (id)initWithMacPrintEngine:(QMacPrintEnginePrivate *)printEngine;
@@ -60,7 +60,7 @@ QT_USE_NAMESPACE
returnCode:(int)returnCode contextInfo:(void *)contextInfo;
@end
-@implementation QCocoaPageLayoutDelegate
+@implementation QT_MANGLE_NAMESPACE(QCocoaPageLayoutDelegate)
- (id)initWithMacPrintEngine:(QMacPrintEnginePrivate *)printEngine;
{
self = [super init];
@@ -213,7 +213,7 @@ void QPageSetupDialogPrivate::openCocoaPageLayout(Qt::WindowModality modality)
pageLayout = [NSPageLayout pageLayout];
// Keep a copy to this since we plan on using it for a bit.
[pageLayout retain];
- QCocoaPageLayoutDelegate *delegate = [[QCocoaPageLayoutDelegate alloc] initWithMacPrintEngine:ep];
+ QT_MANGLE_NAMESPACE(QCocoaPageLayoutDelegate) *delegate = [[QT_MANGLE_NAMESPACE(QCocoaPageLayoutDelegate) alloc] initWithMacPrintEngine:ep];
if (modality == Qt::ApplicationModal) {
int rval = [pageLayout runModalWithPrintInfo:ep->printInfo];
diff --git a/src/gui/dialogs/qprintdialog_mac.mm b/src/gui/dialogs/qprintdialog_mac.mm
index 6a8d6a4..84a72db 100644
--- a/src/gui/dialogs/qprintdialog_mac.mm
+++ b/src/gui/dialogs/qprintdialog_mac.mm
@@ -124,15 +124,15 @@ QT_USE_NAMESPACE
#ifdef QT_MAC_USE_COCOA
-@class QCocoaPrintPanelDelegate;
+@class QT_MANGLE_NAMESPACE(QCocoaPrintPanelDelegate);
-@interface QCocoaPrintPanelDelegate : NSObject {
+@interface QT_MANGLE_NAMESPACE(QCocoaPrintPanelDelegate) : NSObject {
}
- (void)printPanelDidEnd:(NSPrintPanel *)printPanel
returnCode:(int)returnCode contextInfo:(void *)contextInfo;
@end
-@implementation QCocoaPrintPanelDelegate
+@implementation QT_MANGLE_NAMESPACE(QCocoaPrintPanelDelegate)
- (void)printPanelDidEnd:(NSPrintPanel *)printPanel
returnCode:(int)returnCode contextInfo:(void *)contextInfo
{
@@ -313,7 +313,7 @@ void QPrintDialogPrivate::openCocoaPrintPanel(Qt::WindowModality modality)
macStartInterceptWindowTitle(q);
printPanel = [NSPrintPanel printPanel];
- QCocoaPrintPanelDelegate *delegate = [[QCocoaPrintPanelDelegate alloc] init];
+ QT_MANGLE_NAMESPACE(QCocoaPrintPanelDelegate) *delegate = [[QT_MANGLE_NAMESPACE(QCocoaPrintPanelDelegate) alloc] init];
[printPanel setOptions:macOptions];
if (modality == Qt::ApplicationModal) {
diff --git a/src/gui/dialogs/qwizard_win.cpp b/src/gui/dialogs/qwizard_win.cpp
index 1390b21..e406cba 100644
--- a/src/gui/dialogs/qwizard_win.cpp
+++ b/src/gui/dialogs/qwizard_win.cpp
@@ -237,7 +237,8 @@ void QVistaBackButton::paintEvent(QPaintEvent *)
*/
QVistaHelper::QVistaHelper(QWizard *wizard)
- : pressed(false)
+ : QObject(wizard)
+ , pressed(false)
, wizard(wizard)
, backButton_(0)
{
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 326f130..7fcf4d2 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -1423,6 +1423,13 @@ QGraphicsItem::~QGraphicsItem()
d_ptr->inDestructor = 1;
d_ptr->removeExtraItemCache();
+ if (d_ptr->isObject && !d_ptr->gestureContext.isEmpty()) {
+ QGraphicsObject *o = static_cast<QGraphicsObject *>(this);
+ QGestureManager *manager = QGestureManager::instance();
+ foreach (Qt::GestureType type, d_ptr->gestureContext.keys())
+ manager->cleanupCachedGestures(o, type);
+ }
+
clearFocus();
// Update focus scope item ptr.
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp
index ec635d4..7b62de1 100644
--- a/src/gui/kernel/qapplication.cpp
+++ b/src/gui/kernel/qapplication.cpp
@@ -788,6 +788,10 @@ void QApplicationPrivate::construct(
qt_gui_eval_init(application_type);
#endif
+#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_SYSTEMLOCALE)
+ symbianInit();
+#endif
+
#ifndef QT_NO_LIBRARY
if(load_testability) {
QLibrary testLib(QLatin1String("qttestability"));
@@ -2364,6 +2368,19 @@ bool QApplication::event(QEvent *e)
if (!(w->windowType() == Qt::Desktop))
postEvent(w, new QEvent(QEvent::LanguageChange));
}
+#ifndef Q_OS_WIN
+ } else if (e->type() == QEvent::LocaleChange) {
+ // on Windows the event propagation is taken care by the
+ // WM_SETTINGCHANGE event handler.
+ QWidgetList list = topLevelWidgets();
+ for (int i = 0; i < list.size(); ++i) {
+ QWidget *w = list.at(i);
+ if (!(w->windowType() == Qt::Desktop)) {
+ if (!w->testAttribute(Qt::WA_SetLocale))
+ w->d_func()->setLocale_helper(QLocale(), true);
+ }
+ }
+#endif
} else if (e->type() == QEvent::Timer) {
QTimerEvent *te = static_cast<QTimerEvent*>(e);
Q_ASSERT(te != 0);
diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp
index fb2837e..50b9759 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -1936,6 +1936,8 @@ extern "C" LRESULT QT_WIN_CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wPa
QLocalePrivate::updateSystemPrivate();
if (!widget->testAttribute(Qt::WA_SetLocale))
widget->dptr()->setLocale_helper(QLocale(), true);
+ QEvent e(QEvent::LocaleChange);
+ QApplication::sendEvent(qApp, &e);
}
}
else if (msg.wParam == SPI_SETICONTITLELOGFONT) {
diff --git a/src/gui/kernel/qdnd_qws.cpp b/src/gui/kernel/qdnd_qws.cpp
index e47de00..7e5afc7 100644
--- a/src/gui/kernel/qdnd_qws.cpp
+++ b/src/gui/kernel/qdnd_qws.cpp
@@ -192,6 +192,10 @@ bool QDragManager::eventFilter(QObject *o, QEvent *e)
return false;
switch(e->type()) {
+ case QEvent::ShortcutOverride:
+ // prevent accelerators from firing while dragging
+ e->accept();
+ return true;
case QEvent::KeyPress:
case QEvent::KeyRelease:
diff --git a/src/gui/kernel/qdnd_x11.cpp b/src/gui/kernel/qdnd_x11.cpp
index 0a05d8e..2b12317 100644
--- a/src/gui/kernel/qdnd_x11.cpp
+++ b/src/gui/kernel/qdnd_x11.cpp
@@ -1299,6 +1299,12 @@ bool QDragManager::eventFilter(QObject * o, QEvent * e)
return true;
}
+ if (e->type() == QEvent::ShortcutOverride) {
+ // prevent accelerators from firing while dragging
+ e->accept();
+ return true;
+ }
+
if (e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease) {
QKeyEvent *ke = ((QKeyEvent*)e);
if (ke->key() == Qt::Key_Escape && e->type() == QEvent::KeyPress) {
diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp
index aa6720e..9495f40 100644
--- a/src/gui/kernel/qgesturemanager.cpp
+++ b/src/gui/kernel/qgesturemanager.cpp
@@ -132,20 +132,21 @@ void QGestureManager::unregisterGestureRecognizer(Qt::GestureType type)
QGestureRecognizer *recognizer = m_gestureToRecognizer.value(g);
if (list.contains(recognizer)) {
m_deletedRecognizers.insert(g, recognizer);
- m_gestureToRecognizer.remove(g);
}
}
- foreach (QGestureRecognizer *recognizer, list) {
- QList<QGesture *> obsoleteGestures;
- QMap<ObjectGesture, QList<QGesture *> >::Iterator iter = m_objectGestures.begin();
- while (iter != m_objectGestures.end()) {
- ObjectGesture objectGesture = iter.key();
- if (objectGesture.gesture == type)
- obsoleteGestures << iter.value();
- ++iter;
+ QMap<ObjectGesture, QList<QGesture *> >::const_iterator iter = m_objectGestures.begin();
+ while (iter != m_objectGestures.end()) {
+ ObjectGesture objectGesture = iter.key();
+ if (objectGesture.gesture == type) {
+ foreach (QGesture *g, iter.value()) {
+ if (QGestureRecognizer *recognizer = m_gestureToRecognizer.value(g)) {
+ m_gestureToRecognizer.remove(g);
+ m_obsoleteGestures[recognizer].insert(g);
+ }
+ }
}
- m_obsoleteGestures.insert(recognizer, obsoleteGestures);
+ ++iter;
}
}
@@ -155,7 +156,14 @@ void QGestureManager::cleanupCachedGestures(QObject *target, Qt::GestureType typ
while (iter != m_objectGestures.end()) {
ObjectGesture objectGesture = iter.key();
if (objectGesture.gesture == type && target == objectGesture.object.data()) {
- qDeleteAll(iter.value());
+ QSet<QGesture *> gestures = iter.value().toSet();
+ for (QHash<QGestureRecognizer *, QSet<QGesture *> >::iterator
+ it = m_obsoleteGestures.begin(), e = m_obsoleteGestures.end(); it != e; ++it) {
+ it.value() -= gestures;
+ }
+ foreach (QGesture *g, gestures)
+ m_deletedRecognizers.remove(g);
+ qDeleteAll(gestures);
iter = m_objectGestures.erase(iter);
} else {
++iter;
@@ -177,6 +185,9 @@ QGesture *QGestureManager::getState(QObject *object, QGestureRecognizer *recogni
#ifndef QT_NO_GRAPHICSVIEW
} else {
Q_ASSERT(qobject_cast<QGraphicsObject *>(object));
+ QGraphicsObject *graphicsObject = static_cast<QGraphicsObject *>(object);
+ if (graphicsObject->QGraphicsItem::d_func()->inDestructor)
+ return 0;
#endif
}
diff --git a/src/gui/kernel/qgesturemanager_p.h b/src/gui/kernel/qgesturemanager_p.h
index a0ff83f..c105c9b 100644
--- a/src/gui/kernel/qgesturemanager_p.h
+++ b/src/gui/kernel/qgesturemanager_p.h
@@ -127,7 +127,7 @@ private:
int m_lastCustomGestureId;
- QHash<QGestureRecognizer *, QList<QGesture *> > m_obsoleteGestures;
+ QHash<QGestureRecognizer *, QSet<QGesture *> > m_obsoleteGestures;
QHash<QGesture *, QGestureRecognizer *> m_deletedRecognizers;
void cleanupGesturesForRemovedRecognizer(QGesture *gesture);
diff --git a/src/gui/kernel/qsound_mac.mm b/src/gui/kernel/qsound_mac.mm
index 71fd663..2aff44d 100644
--- a/src/gui/kernel/qsound_mac.mm
+++ b/src/gui/kernel/qsound_mac.mm
@@ -88,14 +88,14 @@ QT_END_NAMESPACE
QT_USE_NAMESPACE
-@interface QMacSoundDelegate : NSObject<NSSoundDelegate> {
+@interface QT_MANGLE_NAMESPACE(QMacSoundDelegate) : NSObject<NSSoundDelegate> {
QSound *qSound; // may be null.
QAuServerMac* server;
}
-(id)initWithQSound:(QSound*)sound:(QAuServerMac*)server;
@end
-@implementation QMacSoundDelegate
+@implementation QT_MANGLE_NAMESPACE(QMacSoundDelegate)
-(id)initWithQSound:(QSound*)s:(QAuServerMac*)serv {
self = [super init];
if(self) {
@@ -172,7 +172,7 @@ NSSound *QAuServerMac::createNSSound(const QString &fileName, QSound *qSound)
{
NSString *nsFileName = const_cast<NSString *>(reinterpret_cast<const NSString *>(QCFString::toCFStringRef(fileName)));
NSSound * const nsSound = [[NSSound alloc] initWithContentsOfFile: nsFileName byReference:YES];
- QMacSoundDelegate * const delegate = [[QMacSoundDelegate alloc] initWithQSound:qSound:this];
+ QT_MANGLE_NAMESPACE(QMacSoundDelegate) * const delegate = [[QT_MANGLE_NAMESPACE(QMacSoundDelegate) alloc] initWithQSound:qSound:this];
[nsSound setDelegate:delegate];
[nsFileName release];
return nsSound;
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index 20d1d30..0334d47 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -1388,6 +1388,9 @@ QWidget::~QWidget()
qWarning("QWidget: %s (%s) deleted while being painted", className(), name());
#endif
+ foreach (Qt::GestureType type, d->gestureContext.keys())
+ ungrabGesture(type);
+
// force acceptDrops false before winId is destroyed.
d->registerDropSite(false);
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index e29b755..f12c956 100644
--- a/src/gui/kernel/qwidget_mac.mm
+++ b/src/gui/kernel/qwidget_mac.mm
@@ -3824,9 +3824,35 @@ void QWidgetPrivate::raise_sys()
#if QT_MAC_USE_COCOA
QMacCocoaAutoReleasePool pool;
if (isRealWindow()) {
- // Calling orderFront shows the window on Cocoa too.
+ // With the introduction of spaces it is not as simple as just raising the window.
+ // First we need to check if we are in the right space. If we are, then we just continue
+ // as usual. The problem comes when we are not in the active space. There are two main cases:
+ // 1. Our parent was moved to a new space. In this case we want the window to be raised
+ // in the same space as its parent.
+ // 2. We don't have a parent. For this case we will just raise the window and let Cocoa
+ // switch to the corresponding space.
+ // NOTICE: There are a lot of corner cases here. We are keeping this simple for now, if
+ // required we will introduce special handling for some of them.
if (!q->testAttribute(Qt::WA_DontShowOnScreen) && q->isVisible()) {
- [qt_mac_window_for(q) orderFront:qt_mac_window_for(q)];
+ OSWindowRef window = qt_mac_window_for(q);
+ // isOnActiveSpace is available only from 10.6 onwards, so we need to check if it is
+ // available before calling it.
+ if([window respondsToSelector:@selector(isOnActiveSpace)]) {
+ if(![window performSelector:@selector(isOnActiveSpace)]) {
+ QWidget *parentWidget = q->parentWidget();
+ if(parentWidget) {
+ OSWindowRef parentWindow = qt_mac_window_for(parentWidget);
+ if(parentWindow && [parentWindow isOnActiveSpace]) {
+ // The window was created in a different space. Therefore if we want
+ // to show it in the current space we need to recreate it in the new
+ // space.
+ recreateMacWindow();
+ window = qt_mac_window_for(q);
+ }
+ }
+ }
+ }
+ [window orderFront:window];
}
if (qt_mac_raise_process) { //we get to be the active process now
ProcessSerialNumber psn;
diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp
index 7d647b7..4912291 100644
--- a/src/gui/kernel/qwidget_win.cpp
+++ b/src/gui/kernel/qwidget_win.cpp
@@ -512,8 +512,10 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
DestroyWindow(destroyw);
}
+#ifndef QT_NO_TABLETEVENT
if (q != qt_tablet_widget && QWidgetPrivate::mapper)
qt_tablet_init();
+#endif // QT_NO_TABLETEVENT
if (q->testAttribute(Qt::WA_DropSiteRegistered))
registerDropSite(true);
diff --git a/src/gui/kernel/qwidget_wince.cpp b/src/gui/kernel/qwidget_wince.cpp
index 509847b..e352f5c 100644
--- a/src/gui/kernel/qwidget_wince.cpp
+++ b/src/gui/kernel/qwidget_wince.cpp
@@ -358,8 +358,10 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
DestroyWindow(destroyw);
}
+#ifndef QT_NO_TABLETEVENT
if (q != qt_tablet_widget && QWidgetPrivate::mapper)
qt_tablet_init_wce();
+#endif // QT_NO_TABLETEVENT
if (q->testAttribute(Qt::WA_DropSiteRegistered))
registerDropSite(true);
diff --git a/src/gui/painting/qprintengine_pdf.cpp b/src/gui/painting/qprintengine_pdf.cpp
index b8bf15e..2955e39 100644
--- a/src/gui/painting/qprintengine_pdf.cpp
+++ b/src/gui/painting/qprintengine_pdf.cpp
@@ -931,29 +931,16 @@ void QPdfEnginePrivate::writeHeader()
void QPdfEnginePrivate::writeInfo()
{
info = addXrefEntry(-1);
-
- // The 'text string' type in PDF is encoded either as PDFDocEncoding, or
- // Unicode UTF-16 with a Unicode byte order mark as the first character
- // (0xfeff), with the high-order byte first.
- QByteArray array("<<\n/Title (\xfe\xff");
- const ushort *utf16Title = title.utf16();
- for (int i=0; i < title.size(); ++i) {
- array.append((*(utf16Title + i)) >> 8);
- array.append((*(utf16Title + i)) & 0xff);
- }
- array.append(")\n/Creator (\xfe\xff");
- const ushort *utf16Creator = creator.utf16();
- for (int i=0; i < creator.size(); ++i) {
- array.append((*(utf16Creator + i)) >> 8);
- array.append((*(utf16Creator + i)) & 0xff);
- }
- array.append(")\n/Producer (Qt " QT_VERSION_STR " (C) 2010 Nokia Corporation and/or its subsidiary(-ies))\n");
- write(array);
-
+ xprintf("<<\n/Title ");
+ printString(title);
+ xprintf("\n/Creator ");
+ printString(creator);
+ xprintf("\n/Producer ");
+ printString(QString::fromLatin1("Qt " QT_VERSION_STR " (C) 2010 Nokia Corporation and/or its subsidiary(-ies)"));
QDateTime now = QDateTime::currentDateTime().toUTC();
QTime t = now.time();
QDate d = now.date();
- xprintf("/CreationDate (D:%d%02d%02d%02d%02d%02d)\n",
+ xprintf("\n/CreationDate (D:%d%02d%02d%02d%02d%02d)\n",
d.year(),
d.month(),
d.day(),
@@ -1230,6 +1217,25 @@ int QPdfEnginePrivate::addXrefEntry(int object, bool printostr)
return object;
}
+void QPdfEnginePrivate::printString(const QString &string) {
+ // The 'text string' type in PDF is encoded either as PDFDocEncoding, or
+ // Unicode UTF-16 with a Unicode byte order mark as the first character
+ // (0xfeff), with the high-order byte first.
+ QByteArray array("(\xfe\xff");
+ const ushort *utf16 = string.utf16();
+
+ for (int i=0; i < string.size(); ++i) {
+ char part[2] = {char((*(utf16 + i)) >> 8), char((*(utf16 + i)) & 0xff)};
+ for(int j=0; j < 2; ++j) {
+ if (part[j] == '(' || part[j] == ')' || part[j] == '\\')
+ array.append('\\');
+ array.append(part[j]);
+ }
+ }
+ array.append(")");
+ write(array);
+}
+
QT_END_NAMESPACE
#endif // QT_NO_PRINTER
diff --git a/src/gui/painting/qprintengine_pdf_p.h b/src/gui/painting/qprintengine_pdf_p.h
index cb6c59d..e0ca56f 100644
--- a/src/gui/painting/qprintengine_pdf_p.h
+++ b/src/gui/painting/qprintengine_pdf_p.h
@@ -170,6 +170,7 @@ private:
void writePage();
int addXrefEntry(int object, bool printostr = true);
+ void printString(const QString &string);
void xprintf(const char* fmt, ...);
inline void write(const QByteArray &data) {
stream->writeRawData(data.constData(), data.size());
diff --git a/src/gui/styles/qcleanlooksstyle.cpp b/src/gui/styles/qcleanlooksstyle.cpp
index 0f39b23..d9f7df0 100644
--- a/src/gui/styles/qcleanlooksstyle.cpp
+++ b/src/gui/styles/qcleanlooksstyle.cpp
@@ -1397,7 +1397,6 @@ void QCleanlooksStyle::drawControl(ControlElement element, const QStyleOption *o
dark.lighter(135), 60);
QColor highlight = option->palette.highlight().color();
- QColor highlightText = option->palette.highlightedText().color();
switch(element) {
case CE_RadioButton: //fall through
@@ -2723,7 +2722,6 @@ void QCleanlooksStyle::drawComplexControl(ComplexControl control, const QStyleOp
{
// Fill title bar gradient
QColor titlebarColor = QColor(active ? highlight: palette.background().color());
- QColor titleBarGradientStop(active ? highlight.darker(150): palette.background().color().darker(120));
QLinearGradient gradient(option->rect.center().x(), option->rect.top(),
option->rect.center().x(), option->rect.bottom());
@@ -2986,7 +2984,6 @@ void QCleanlooksStyle::drawComplexControl(ComplexControl control, const QStyleOp
painter->fillRect(option->rect, option->palette.background());
- QRect rect = scrollBar->rect;
QRect scrollBarSubLine = proxy()->subControlRect(control, scrollBar, SC_ScrollBarSubLine, widget);
QRect scrollBarAddLine = proxy()->subControlRect(control, scrollBar, SC_ScrollBarAddLine, widget);
QRect scrollBarSlider = proxy()->subControlRect(control, scrollBar, SC_ScrollBarSlider, widget);
@@ -3714,6 +3711,9 @@ int QCleanlooksStyle::pixelMetric(PixelMetric metric, const QStyleOption *option
{
int ret = -1;
switch (metric) {
+ case PM_ToolTipLabelFrameWidth:
+ ret = 2;
+ break;
case PM_ButtonDefaultIndicator:
ret = 0;
break;
diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp
index 9c61023..6c8d561 100644
--- a/src/gui/styles/qgtkstyle.cpp
+++ b/src/gui/styles/qgtkstyle.cpp
@@ -1163,7 +1163,6 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
if (const QStyleOptionTabBarBase *tbb
= qstyleoption_cast<const QStyleOptionTabBarBase *>(option)) {
QRect tabRect = tbb->rect;
- QRegion region(tabRect);
painter->save();
painter->setPen(QPen(option->palette.dark().color().dark(110), 0));
switch (tbb->shape) {
@@ -1245,8 +1244,6 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
else
alphaCornerColor = mergedColors(option->palette.background().color(), darkOutline);
- QPalette palette = option->palette;
-
switch (control) {
case CC_TitleBar:
@@ -1333,11 +1330,8 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
bool isEnabled = (comboBox->state & State_Enabled);
bool focus = isEnabled && (comboBox->state & State_HasFocus);
- QColor buttonShadow = option->palette.dark().color();
GtkStateType state = gtkPainter.gtkState(option);
int appears_as_list = !proxy()->styleHint(QStyle::SH_ComboBox_Popup, comboBox, widget);
- QPixmap cache;
- QString pixmapName;
QStyleOptionComboBox comboBoxCopy = *comboBox;
comboBoxCopy.rect = option->rect;
@@ -1345,8 +1339,6 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
QRect rect = option->rect;
QRect arrowButtonRect = proxy()->subControlRect(CC_ComboBox, &comboBoxCopy,
SC_ComboBoxArrow, widget);
- QRect editRect = proxy()->subControlRect(CC_ComboBox, &comboBoxCopy,
- SC_ComboBoxEditField, widget);
GtkShadowType shadow = (option->state & State_Sunken || option->state & State_On ) ?
GTK_SHADOW_IN : GTK_SHADOW_OUT;
@@ -1414,9 +1406,6 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
else if (option->state & State_MouseOver && comboBox->activeSubControls & SC_ComboBoxArrow)
buttonState = GTK_STATE_PRELIGHT;
- QRect buttonrect = QRect(gtkToggleButton->allocation.x, gtkToggleButton->allocation.y,
- gtkToggleButton->allocation.width, gtkToggleButton->allocation.height);
-
Q_ASSERT(gtkToggleButton);
gtkCachedPainter.paintBox( gtkToggleButton, "button", arrowButtonRect, buttonState,
shadow, gtkToggleButton->style, buttonPath.toString() +
@@ -1436,8 +1425,6 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
if (focus)
GTK_WIDGET_UNSET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
- QHashableLatin1Literal buttonPath = comboBox->editable ? QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton")
- : QHashableLatin1Literal("GtkComboBox.GtkToggleButton");
// Draw the separator between label and arrows
QHashableLatin1Literal vSeparatorPath = comboBox->editable
@@ -1643,6 +1630,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
style = scrollbarWidget->style;
gboolean trough_under_steppers = true;
gboolean trough_side_details = false;
+ gboolean activate_slider = false;
gboolean stepper_size = 14;
gint trough_border = 1;
if (!d->gtk_check_version(2, 10, 0)) {
@@ -1650,6 +1638,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
"trough-border", &trough_border,
"trough-side-details", &trough_side_details,
"trough-under-steppers", &trough_under_steppers,
+ "activate-slider", &activate_slider,
"stepper-size", &stepper_size, NULL);
}
if (trough_under_steppers) {
@@ -1695,6 +1684,9 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
if (!(option->state & State_Enabled))
state = GTK_STATE_INSENSITIVE;
+ else if (activate_slider &&
+ option->state & State_Sunken && (scrollBar->activeSubControls & SC_ScrollBarSlider))
+ state = GTK_STATE_ACTIVE;
else if (option->state & State_MouseOver && (scrollBar->activeSubControls & SC_ScrollBarSlider))
state = GTK_STATE_PRELIGHT;
@@ -1932,14 +1924,11 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
QRect groove = proxy()->subControlRect(CC_Slider, option, SC_SliderGroove, widget);
QRect handle = proxy()->subControlRect(CC_Slider, option, SC_SliderHandle, widget);
- QRect ticks = proxy()->subControlRect(CC_Slider, option, SC_SliderTickmarks, widget);
bool horizontal = slider->orientation == Qt::Horizontal;
bool ticksAbove = slider->tickPosition & QSlider::TicksAbove;
bool ticksBelow = slider->tickPosition & QSlider::TicksBelow;
- QColor activeHighlight = option->palette.color(QPalette::Normal, QPalette::Highlight);
- QPixmap cache;
QBrush oldBrush = painter->brush();
QPen oldPen = painter->pen();
@@ -1948,6 +1937,8 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
QColor highlightAlpha(Qt::white);
highlightAlpha.setAlpha(80);
+ QGtkStylePrivate::gtk_widget_set_direction(hScaleWidget, slider->upsideDown ?
+ GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
GtkWidget *scaleWidget = horizontal ? hScaleWidget : vScaleWidget;
style = scaleWidget->style;
@@ -1981,11 +1972,21 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
QRect lowerGroove = grooveRect;
if (horizontal) {
- upperGroove.setLeft(handle.center().x());
- lowerGroove.setRight(handle.center().x());
+ if (slider->upsideDown) {
+ lowerGroove.setLeft(handle.center().x());
+ upperGroove.setRight(handle.center().x());
+ } else {
+ upperGroove.setLeft(handle.center().x());
+ lowerGroove.setRight(handle.center().x());
+ }
} else {
- upperGroove.setBottom(handle.center().y());
- lowerGroove.setTop(handle.center().y());
+ if (!slider->upsideDown) {
+ lowerGroove.setBottom(handle.center().y());
+ upperGroove.setTop(handle.center().y());
+ } else {
+ upperGroove.setBottom(handle.center().y());
+ lowerGroove.setTop(handle.center().y());
+ }
}
gtkPainter.paintBox( scaleWidget, "trough-upper", upperGroove, state,
@@ -2543,7 +2544,6 @@ void QGtkStyle::drawControl(ControlElement element,
d->gtkWidget("GtkMenu.GtkMenuItem");
style = gtkPainter.getStyle(gtkMenuItem);
- QColor borderColor = option->palette.background().color().darker(160);
QColor shadow = option->palette.dark().color();
if (menuItem->menuItemType == QStyleOptionMenuItem::Separator) {
@@ -2768,8 +2768,6 @@ void QGtkStyle::drawControl(ControlElement element,
// Arrow
if (menuItem->menuItemType == QStyleOptionMenuItem::SubMenu) {// draw sub menu arrow
- QPoint buttonShift(pixelMetric(PM_ButtonShiftHorizontal, option, widget),
- proxy()->pixelMetric(PM_ButtonShiftVertical, option, widget));
QFontMetrics fm(menuitem->font);
int arrow_size = fm.ascent() + fm.descent() - 2 * gtkMenuItem->style->ythickness;
@@ -3116,7 +3114,6 @@ QRect QGtkStyle::subControlRect(ComplexControl control, const QStyleOptionComple
case CC_ComboBox:
if (const QStyleOptionComboBox *box = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
// We employ the gtk widget to position arrows and separators for us
- QString comboBoxPath = box->editable ? QLS("GtkComboBoxEntry") : QLS("GtkComboBox");
GtkWidget *gtkCombo = box->editable ? d->gtkWidget("GtkComboBoxEntry")
: d->gtkWidget("GtkComboBox");
d->gtk_widget_set_direction(gtkCombo, (option->direction == Qt::RightToLeft) ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
diff --git a/src/gui/util/qcompleter.cpp b/src/gui/util/qcompleter.cpp
index 8e7ec80..05fe744 100644
--- a/src/gui/util/qcompleter.cpp
+++ b/src/gui/util/qcompleter.cpp
@@ -873,7 +873,7 @@ void QCompleterPrivate::showPopup(const QRect& rect)
const QRect screen = QApplication::desktop()->availableGeometry(widget);
Qt::LayoutDirection dir = widget->layoutDirection();
QPoint pos;
- int rw, rh, w;
+ int rh, w;
int h = (popup->sizeHintForRow(0) * qMin(maxVisibleItems, popup->model()->rowCount()) + 3) + 3;
QScrollBar *hsb = popup->horizontalScrollBar();
if (hsb && hsb->isVisible())
@@ -881,21 +881,30 @@ void QCompleterPrivate::showPopup(const QRect& rect)
if (rect.isValid()) {
rh = rect.height();
- w = rw = rect.width();
+ w = rect.width();
pos = widget->mapToGlobal(dir == Qt::RightToLeft ? rect.bottomRight() : rect.bottomLeft());
} else {
rh = widget->height();
- rw = widget->width();
pos = widget->mapToGlobal(QPoint(0, widget->height() - 2));
w = widget->width();
}
- if ((pos.x() + rw) > (screen.x() + screen.width()))
+ if (w > screen.width())
+ w = screen.width();
+ if ((pos.x() + w) > (screen.x() + screen.width()))
pos.setX(screen.x() + screen.width() - w);
if (pos.x() < screen.x())
pos.setX(screen.x());
- if (((pos.y() + rh) > (screen.y() + screen.height())) && ((pos.y() - h - rh) >= 0))
- pos.setY(pos.y() - qMax(h, popup->minimumHeight()) - rh + 2);
+
+ int top = pos.y() - rh - screen.top() + 2;
+ int bottom = screen.bottom() - pos.y();
+ h = qMax(h, popup->minimumHeight());
+ if (h > bottom) {
+ h = qMin(qMax(top, bottom), h);
+
+ if (top > bottom)
+ pos.setY(pos.y() - h - rh + 2);
+ }
popup->setGeometry(pos.x(), pos.y(), w, h);
diff --git a/src/gui/util/qsystemtrayicon_mac.mm b/src/gui/util/qsystemtrayicon_mac.mm
index d943c8c..8aaaa0f 100644
--- a/src/gui/util/qsystemtrayicon_mac.mm
+++ b/src/gui/util/qsystemtrayicon_mac.mm
@@ -75,8 +75,6 @@
#define QT_MAC_SYSTEMTRAY_USE_GROWL
-@class QNSMenu;
-
#include <private/qt_cocoa_helpers_mac_p.h>
#include <private/qsystemtrayicon_p.h>
#include <qtemporaryfile.h>
@@ -98,13 +96,14 @@ QT_END_NAMESPACE
QT_USE_NAMESPACE
-@class QNSImageView;
+@class QT_MANGLE_NAMESPACE(QNSMenu);
+@class QT_MANGLE_NAMESPACE(QNSImageView);
-@interface QNSStatusItem : NSObject {
+@interface QT_MANGLE_NAMESPACE(QNSStatusItem) : NSObject {
NSStatusItem *item;
QSystemTrayIcon *icon;
QSystemTrayIconPrivate *iconPrivate;
- QNSImageView *imageCell;
+ QT_MANGLE_NAMESPACE(QNSImageView) *imageCell;
}
-(id)initWithIcon:(QSystemTrayIcon*)icon iconPrivate:(QSystemTrayIconPrivate *)iprivate;
-(void)dealloc;
@@ -115,11 +114,11 @@ QT_USE_NAMESPACE
- (void)doubleClickSelector:(id)sender;
@end
-@interface QNSImageView : NSImageView {
+@interface QT_MANGLE_NAMESPACE(QNSImageView) : NSImageView {
BOOL down;
- QNSStatusItem *parent;
+ QT_MANGLE_NAMESPACE(QNSStatusItem) *parent;
}
--(id)initWithParent:(QNSStatusItem*)myParent;
+-(id)initWithParent:(QT_MANGLE_NAMESPACE(QNSStatusItem)*)myParent;
-(QSystemTrayIcon*)icon;
-(void)menuTrackingDone:(NSNotification*)notification;
-(void)mousePressed:(NSEvent *)mouseEvent button:(Qt::MouseButton)mouseButton;
@@ -134,7 +133,7 @@ QT_USE_NAMESPACE
#endif
-@interface QNSMenu : NSMenu <NSMenuDelegate> {
+@interface QT_MANGLE_NAMESPACE(QNSMenu) : NSMenu <NSMenuDelegate> {
QMenu *qmenu;
}
-(QMenu*)menu;
@@ -148,14 +147,14 @@ class QSystemTrayIconSys
public:
QSystemTrayIconSys(QSystemTrayIcon *icon, QSystemTrayIconPrivate *d) {
QMacCocoaAutoReleasePool pool;
- item = [[QNSStatusItem alloc] initWithIcon:icon iconPrivate:d];
+ item = [[QT_MANGLE_NAMESPACE(QNSStatusItem) alloc] initWithIcon:icon iconPrivate:d];
}
~QSystemTrayIconSys() {
QMacCocoaAutoReleasePool pool;
[[[item item] view] setHidden: YES];
[item release];
}
- QNSStatusItem *item;
+ QT_MANGLE_NAMESPACE(QNSStatusItem) *item;
};
void QSystemTrayIconPrivate::install_sys()
@@ -299,8 +298,8 @@ QT_END_NAMESPACE
@implementation NSStatusItem (Qt)
@end
-@implementation QNSImageView
--(id)initWithParent:(QNSStatusItem*)myParent {
+@implementation QT_MANGLE_NAMESPACE(QNSImageView)
+-(id)initWithParent:(QT_MANGLE_NAMESPACE(QNSStatusItem)*)myParent {
self = [super init];
parent = myParent;
down = NO;
@@ -400,7 +399,7 @@ QT_END_NAMESPACE
}
@end
-@implementation QNSStatusItem
+@implementation QT_MANGLE_NAMESPACE(QNSStatusItem)
-(id)initWithIcon:(QSystemTrayIcon*)i iconPrivate:(QSystemTrayIconPrivate *)iPrivate
{
@@ -409,7 +408,7 @@ QT_END_NAMESPACE
icon = i;
iconPrivate = iPrivate;
item = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
- imageCell = [[QNSImageView alloc] initWithParent:self];
+ imageCell = [[QT_MANGLE_NAMESPACE(QNSImageView) alloc] initWithParent:self];
[item setView: imageCell];
}
return self;
@@ -453,7 +452,7 @@ QT_END_NAMESPACE
[[[self item] view] removeAllToolTips];
iconPrivate->updateToolTip_sys();
#endif
- NSMenu *m = [[QNSMenu alloc] initWithQMenu:icon->contextMenu()];
+ NSMenu *m = [[QT_MANGLE_NAMESPACE(QNSMenu) alloc] initWithQMenu:icon->contextMenu()];
[m setAutoenablesItems: NO];
[[NSNotificationCenter defaultCenter] addObserver:imageCell
selector:@selector(menuTrackingDone:)
@@ -481,7 +480,7 @@ private:
QSystemTrayIconQMenu();
};
-@implementation QNSMenu
+@implementation QT_MANGLE_NAMESPACE(QNSMenu)
-(id)initWithQMenu:(QMenu*)qm {
self = [super init];
if(self) {
@@ -494,7 +493,7 @@ private:
return qmenu;
}
-(void)menuNeedsUpdate:(NSMenu*)nsmenu {
- QNSMenu *menu = static_cast<QNSMenu *>(nsmenu);
+ QT_MANGLE_NAMESPACE(QNSMenu) *menu = static_cast<QT_MANGLE_NAMESPACE(QNSMenu) *>(nsmenu);
emit static_cast<QSystemTrayIconQMenu*>(menu->qmenu)->doAboutToShow();
for(int i = [menu numberOfItems]-1; i >= 0; --i)
[menu removeItemAtIndex:i];
@@ -539,7 +538,7 @@ private:
[nsimage release];
}
if(action->menu()) {
- QNSMenu *sub = [[QNSMenu alloc] initWithQMenu:action->menu()];
+ QT_MANGLE_NAMESPACE(QNSMenu) *sub = [[QT_MANGLE_NAMESPACE(QNSMenu) alloc] initWithQMenu:action->menu()];
[item setSubmenu:sub];
} else {
[item setAction:@selector(selectedAction:)];
diff --git a/src/gui/widgets/qcocoatoolbardelegate_mac.mm b/src/gui/widgets/qcocoatoolbardelegate_mac.mm
index b2a0e0c..e68ee7c 100644
--- a/src/gui/widgets/qcocoatoolbardelegate_mac.mm
+++ b/src/gui/widgets/qcocoatoolbardelegate_mac.mm
@@ -58,7 +58,7 @@ QT_FORWARD_DECLARE_CLASS(QMainWindowLayout);
QT_FORWARD_DECLARE_CLASS(QToolBar);
QT_FORWARD_DECLARE_CLASS(QCFString);
-@implementation QCocoaToolBarDelegate
+@implementation QT_MANGLE_NAMESPACE(QCocoaToolBarDelegate)
- (id)initWithMainWindowLayout:(QMainWindowLayout *)layout
{
diff --git a/src/gui/widgets/qcocoatoolbardelegate_mac_p.h b/src/gui/widgets/qcocoatoolbardelegate_mac_p.h
index 8e3d06f..b4af54f 100644
--- a/src/gui/widgets/qcocoatoolbardelegate_mac_p.h
+++ b/src/gui/widgets/qcocoatoolbardelegate_mac_p.h
@@ -61,7 +61,7 @@ QT_END_NAMESPACE
@class NSToolbarItem;
-@interface QCocoaToolBarDelegate : NSObject {
+@interface QT_MANGLE_NAMESPACE(QCocoaToolBarDelegate) : NSObject {
QT_PREPEND_NAMESPACE(QMainWindowLayout) *mainWindowLayout;
NSToolbarItem *toolbarItem;
}
diff --git a/src/gui/widgets/qmainwindowlayout_mac.mm b/src/gui/widgets/qmainwindowlayout_mac.mm
index 9527057..b8cef93 100644
--- a/src/gui/widgets/qmainwindowlayout_mac.mm
+++ b/src/gui/widgets/qmainwindowlayout_mac.mm
@@ -410,7 +410,7 @@ void QMainWindowLayout::insertIntoMacToolbar(QToolBar *before, QToolBar *toolbar
macToolbar = [[NSToolbar alloc] initWithIdentifier:(NSString *)kQMainWindowMacToolbarID];
[macToolbar setDisplayMode:NSToolbarDisplayModeIconOnly];
[macToolbar setSizeMode:NSToolbarSizeModeRegular];
- [macToolbar setDelegate:[[QCocoaToolBarDelegate alloc] initWithMainWindowLayout:this]];
+ [macToolbar setDelegate:[[QT_MANGLE_NAMESPACE(QCocoaToolBarDelegate) alloc] initWithMainWindowLayout:this]];
[window setToolbar:macToolbar];
[macToolbar release];
}
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index 559124f..31c64f0 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -343,9 +343,16 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
copyCredentials(i, auth, isProxy);
QMetaObject::invokeMethod(q, "_q_restartAuthPendingRequests", Qt::QueuedConnection);
}
+ } else if (priv->phase == QAuthenticatorPrivate::Start) {
+ // If the url's authenticator has a 'user' set we will end up here (phase is only set to 'Done' by
+ // parseHttpResponse above if 'user' is empty). So if credentials were supplied with the request,
+ // such as in the case of an XMLHttpRequest, this is our only opportunity to cache them.
+ emit q->cacheCredentials(reply->request(), auth, q);
}
- // changing values in QAuthenticator will reset the 'phase'
- if (priv->phase == QAuthenticatorPrivate::Done) {
+ // - Changing values in QAuthenticator will reset the 'phase'.
+ // - If withCredentials has been set to false (e.g. by QtWebKit for a cross-origin XMLHttpRequest) then
+ // we need to bail out if authentication is required.
+ if (priv->phase == QAuthenticatorPrivate::Done || !reply->request().withCredentials()) {
// authentication is cancelled, send the current contents to the user.
emit channels[i].reply->headerChanged();
emit channels[i].reply->readyRead();
diff --git a/src/network/access/qhttpnetworkconnection_p.h b/src/network/access/qhttpnetworkconnection_p.h
index b5bd300..51666d6 100644
--- a/src/network/access/qhttpnetworkconnection_p.h
+++ b/src/network/access/qhttpnetworkconnection_p.h
@@ -133,6 +133,8 @@ Q_SIGNALS:
#endif
void authenticationRequired(const QHttpNetworkRequest &request, QAuthenticator *authenticator,
const QHttpNetworkConnection *connection = 0);
+ void cacheCredentials(const QHttpNetworkRequest &request, QAuthenticator *authenticator,
+ const QHttpNetworkConnection *connection = 0);
void error(QNetworkReply::NetworkError errorCode, const QString &detail = QString());
private:
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 3b7bc9e..d24eb1f 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -173,7 +173,7 @@ bool QHttpNetworkConnectionChannel::sendRequest()
pendingEncrypt = false;
// if the url contains authentication parameters, use the new ones
// both channels will use the new authentication parameters
- if (!request.url().userInfo().isEmpty()) {
+ if (!request.url().userInfo().isEmpty() && request.withCredentials()) {
QUrl url = request.url();
QAuthenticator &auth = authenticator;
if (url.userName() != auth.user()
@@ -187,7 +187,10 @@ bool QHttpNetworkConnectionChannel::sendRequest()
url.setUserInfo(QString());
request.setUrl(url);
}
- connection->d_func()->createAuthorization(socket, request);
+ // Will only be false if QtWebKit is performing a cross-origin XMLHttpRequest
+ // and withCredentials has not been set to true.
+ if (request.withCredentials())
+ connection->d_func()->createAuthorization(socket, request);
#ifndef QT_NO_NETWORKPROXY
QByteArray header = QHttpNetworkRequestPrivate::header(request,
(connection->d_func()->networkProxy.type() != QNetworkProxy::NoProxy));
diff --git a/src/network/access/qhttpnetworkrequest.cpp b/src/network/access/qhttpnetworkrequest.cpp
index 9eb2399..639025e 100644
--- a/src/network/access/qhttpnetworkrequest.cpp
+++ b/src/network/access/qhttpnetworkrequest.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
QHttpNetworkRequestPrivate::QHttpNetworkRequestPrivate(QHttpNetworkRequest::Operation op,
QHttpNetworkRequest::Priority pri, const QUrl &newUrl)
: QHttpNetworkHeaderPrivate(newUrl), operation(op), priority(pri), uploadByteDevice(0),
- autoDecompress(false), pipeliningAllowed(false)
+ autoDecompress(false), pipeliningAllowed(false), withCredentials(true)
{
}
@@ -62,6 +62,7 @@ QHttpNetworkRequestPrivate::QHttpNetworkRequestPrivate(const QHttpNetworkRequest
autoDecompress = other.autoDecompress;
pipeliningAllowed = other.pipeliningAllowed;
customVerb = other.customVerb;
+ withCredentials = other.withCredentials;
}
QHttpNetworkRequestPrivate::~QHttpNetworkRequestPrivate()
@@ -274,6 +275,16 @@ void QHttpNetworkRequest::setPipeliningAllowed(bool b)
d->pipeliningAllowed = b;
}
+bool QHttpNetworkRequest::withCredentials() const
+{
+ return d->withCredentials;
+}
+
+void QHttpNetworkRequest::setWithCredentials(bool b)
+{
+ d->withCredentials = b;
+}
+
void QHttpNetworkRequest::setUploadByteDevice(QNonContiguousByteDevice *bd)
{
d->uploadByteDevice = bd;
diff --git a/src/network/access/qhttpnetworkrequest_p.h b/src/network/access/qhttpnetworkrequest_p.h
index 1b35a84..15cab73 100644
--- a/src/network/access/qhttpnetworkrequest_p.h
+++ b/src/network/access/qhttpnetworkrequest_p.h
@@ -113,6 +113,9 @@ public:
bool isPipeliningAllowed() const;
void setPipeliningAllowed(bool b);
+ bool withCredentials() const;
+ void setWithCredentials(bool b);
+
void setUploadByteDevice(QNonContiguousByteDevice *bd);
QNonContiguousByteDevice* uploadByteDevice() const;
@@ -142,6 +145,7 @@ public:
mutable QNonContiguousByteDevice* uploadByteDevice;
bool autoDecompress;
bool pipeliningAllowed;
+ bool withCredentials;
};
diff --git a/src/network/access/qnetworkaccessbackend.cpp b/src/network/access/qnetworkaccessbackend.cpp
index f188bd5..2a02c99 100644
--- a/src/network/access/qnetworkaccessbackend.cpp
+++ b/src/network/access/qnetworkaccessbackend.cpp
@@ -327,6 +327,11 @@ void QNetworkAccessBackend::authenticationRequired(QAuthenticator *authenticator
manager->authenticationRequired(this, authenticator);
}
+void QNetworkAccessBackend::cacheCredentials(QAuthenticator *authenticator)
+{
+ manager->addCredentials(this->reply->url, authenticator);
+}
+
void QNetworkAccessBackend::metaDataChanged()
{
reply->metaDataChanged();
diff --git a/src/network/access/qnetworkaccessbackend_p.h b/src/network/access/qnetworkaccessbackend_p.h
index 4ce37a6..4fe6de6 100644
--- a/src/network/access/qnetworkaccessbackend_p.h
+++ b/src/network/access/qnetworkaccessbackend_p.h
@@ -188,6 +188,7 @@ protected slots:
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth);
#endif
void authenticationRequired(QAuthenticator *auth);
+ void cacheCredentials(QAuthenticator *auth);
void metaDataChanged();
void redirectionRequested(const QUrl &destination);
void sslErrors(const QList<QSslError> &errors);
diff --git a/src/network/access/qnetworkaccessfilebackend.cpp b/src/network/access/qnetworkaccessfilebackend.cpp
index 4560153..710c258 100644
--- a/src/network/access/qnetworkaccessfilebackend.cpp
+++ b/src/network/access/qnetworkaccessfilebackend.cpp
@@ -65,10 +65,15 @@ QNetworkAccessFileBackendFactory::create(QNetworkAccessManager::Operation op,
}
QUrl url = request.url();
- if (url.scheme() == QLatin1String("qrc") || !url.toLocalFile().isEmpty())
+ if (url.scheme().compare(QLatin1String("qrc"), Qt::CaseInsensitive) == 0 || url.isLocalFile()) {
return new QNetworkAccessFileBackend;
- else if (!url.isEmpty() && url.authority().isEmpty()) {
- // check if QFile could, in theory, open this URL
+ } else if (!url.scheme().isEmpty() && url.authority().isEmpty()) {
+ // check if QFile could, in theory, open this URL via the file engines
+ // it has to be in the format:
+ // prefix:path/to/file
+ // or prefix:/path/to/file
+ //
+ // this construct here must match the one below in open()
QFileInfo fi(url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery));
if (fi.exists() || (op == QNetworkAccessManager::PutOperation && fi.dir().exists()))
return new QNetworkAccessFileBackend;
diff --git a/src/network/access/qnetworkaccessftpbackend.cpp b/src/network/access/qnetworkaccessftpbackend.cpp
index 1a59011..da336d0 100644
--- a/src/network/access/qnetworkaccessftpbackend.cpp
+++ b/src/network/access/qnetworkaccessftpbackend.cpp
@@ -77,7 +77,7 @@ QNetworkAccessFtpBackendFactory::create(QNetworkAccessManager::Operation op,
}
QUrl url = request.url();
- if (url.scheme() == QLatin1String("ftp"))
+ if (url.scheme().compare(QLatin1String("ftp"), Qt::CaseInsensitive) == 0)
return new QNetworkAccessFtpBackend;
return 0;
}
diff --git a/src/network/access/qnetworkaccesshttpbackend.cpp b/src/network/access/qnetworkaccesshttpbackend.cpp
index 3154ed6..a6c5c02 100644
--- a/src/network/access/qnetworkaccesshttpbackend.cpp
+++ b/src/network/access/qnetworkaccesshttpbackend.cpp
@@ -346,6 +346,8 @@ void QNetworkAccessHttpBackend::setupConnection()
#endif
connect(http, SIGNAL(authenticationRequired(QHttpNetworkRequest,QAuthenticator*)),
SLOT(httpAuthenticationRequired(QHttpNetworkRequest,QAuthenticator*)));
+ connect(http, SIGNAL(cacheCredentials(QHttpNetworkRequest,QAuthenticator*)),
+ SLOT(httpCacheCredentials(QHttpNetworkRequest,QAuthenticator*)));
connect(http, SIGNAL(error(QNetworkReply::NetworkError,QString)),
SLOT(httpError(QNetworkReply::NetworkError,QString)));
#ifndef QT_NO_OPENSSL
@@ -578,6 +580,11 @@ void QNetworkAccessHttpBackend::postRequest()
if (request().attribute(QNetworkRequest::HttpPipeliningAllowedAttribute).toBool() == true)
httpRequest.setPipeliningAllowed(true);
+ if (static_cast<QNetworkRequest::LoadControl>
+ (request().attribute(QNetworkRequest::AuthenticationReuseAttribute,
+ QNetworkRequest::Automatic).toInt()) == QNetworkRequest::Manual)
+ httpRequest.setWithCredentials(false);
+
httpReply = http->sendRequest(httpRequest);
httpReply->setParent(this);
#ifndef QT_NO_OPENSSL
@@ -861,6 +868,12 @@ void QNetworkAccessHttpBackend::httpAuthenticationRequired(const QHttpNetworkReq
authenticationRequired(auth);
}
+void QNetworkAccessHttpBackend::httpCacheCredentials(const QHttpNetworkRequest &,
+ QAuthenticator *auth)
+{
+ cacheCredentials(auth);
+}
+
void QNetworkAccessHttpBackend::httpError(QNetworkReply::NetworkError errorCode,
const QString &errorString)
{
diff --git a/src/network/access/qnetworkaccesshttpbackend_p.h b/src/network/access/qnetworkaccesshttpbackend_p.h
index e5cc0ab..254907f 100644
--- a/src/network/access/qnetworkaccesshttpbackend_p.h
+++ b/src/network/access/qnetworkaccesshttpbackend_p.h
@@ -107,6 +107,7 @@ private slots:
void replyFinished();
void replyHeaderChanged();
void httpAuthenticationRequired(const QHttpNetworkRequest &request, QAuthenticator *auth);
+ void httpCacheCredentials(const QHttpNetworkRequest &request, QAuthenticator *auth);
void httpError(QNetworkReply::NetworkError error, const QString &errorString);
bool sendCacheContents(const QNetworkCacheMetaData &metaData);
void finished(); // override
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index feb9d99..10fdc6f 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -907,21 +907,20 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
{
Q_D(QNetworkAccessManager);
+ bool isLocalFile = req.url().isLocalFile();
+
// fast path for GET on file:// URLs
- // Also if the scheme is empty we consider it a file.
// The QNetworkAccessFileBackend will right now only be used
// for PUT or qrc://
if ((op == QNetworkAccessManager::GetOperation || op == QNetworkAccessManager::HeadOperation)
- && (req.url().scheme() == QLatin1String("file")
- || req.url().scheme().isEmpty())) {
+ && isLocalFile) {
return new QFileNetworkReply(this, req, op);
}
#ifndef QT_NO_BEARERMANAGEMENT
// Return a disabled network reply if network access is disabled.
// Except if the scheme is empty or file://.
- if (!d->networkAccessible && !(req.url().scheme() == QLatin1String("file") ||
- req.url().scheme().isEmpty())) {
+ if (!d->networkAccessible && !isLocalFile) {
return new QDisabledNetworkReply(this, req, op);
}
@@ -948,17 +947,22 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
// but the data that is outgoing is random-access
request.setHeader(QNetworkRequest::ContentLengthHeader, outgoingData->size());
}
- if (d->cookieJar) {
- QList<QNetworkCookie> cookies = d->cookieJar->cookiesForUrl(request.url());
- if (!cookies.isEmpty())
- request.setHeader(QNetworkRequest::CookieHeader, qVariantFromValue(cookies));
+
+ if (static_cast<QNetworkRequest::LoadControl>
+ (request.attribute(QNetworkRequest::CookieLoadControlAttribute,
+ QNetworkRequest::Automatic).toInt()) == QNetworkRequest::Automatic) {
+ if (d->cookieJar) {
+ QList<QNetworkCookie> cookies = d->cookieJar->cookiesForUrl(request.url());
+ if (!cookies.isEmpty())
+ request.setHeader(QNetworkRequest::CookieHeader, qVariantFromValue(cookies));
+ }
}
// first step: create the reply
QUrl url = request.url();
QNetworkReplyImpl *reply = new QNetworkReplyImpl(this);
#ifndef QT_NO_BEARERMANAGEMENT
- if (req.url().scheme() != QLatin1String("file") && !req.url().scheme().isEmpty()) {
+ if (!isLocalFile) {
connect(this, SIGNAL(networkSessionConnected()),
reply, SLOT(_q_networkSessionConnected()));
}
@@ -967,11 +971,15 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
priv->manager = this;
// second step: fetch cached credentials
- QNetworkAuthenticationCredential *cred = d->fetchCachedCredentials(url);
- if (cred) {
- url.setUserName(cred->user);
- url.setPassword(cred->password);
- priv->urlForLastAuthentication = url;
+ if (static_cast<QNetworkRequest::LoadControl>
+ (request.attribute(QNetworkRequest::AuthenticationReuseAttribute,
+ QNetworkRequest::Automatic).toInt()) == QNetworkRequest::Automatic) {
+ QNetworkAuthenticationCredential *cred = d->fetchCachedCredentials(url);
+ if (cred) {
+ url.setUserName(cred->user);
+ url.setPassword(cred->password);
+ priv->urlForLastAuthentication = url;
+ }
}
// third step: find a backend
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp
index 128d18f..31ee2a4 100644
--- a/src/network/access/qnetworkreplyimpl.cpp
+++ b/src/network/access/qnetworkreplyimpl.cpp
@@ -673,8 +673,12 @@ void QNetworkReplyImplPrivate::error(QNetworkReplyImpl::NetworkError code, const
void QNetworkReplyImplPrivate::metaDataChanged()
{
Q_Q(QNetworkReplyImpl);
- // do we have cookies?
- if (cookedHeaders.contains(QNetworkRequest::SetCookieHeader) && !manager.isNull()) {
+ // 1. do we have cookies?
+ // 2. are we allowed to set them?
+ if (cookedHeaders.contains(QNetworkRequest::SetCookieHeader) && !manager.isNull()
+ && (static_cast<QNetworkRequest::LoadControl>
+ (request.attribute(QNetworkRequest::CookieSaveControlAttribute,
+ QNetworkRequest::Automatic).toInt()) == QNetworkRequest::Automatic)) {
QList<QNetworkCookie> cookies =
qvariant_cast<QList<QNetworkCookie> >(cookedHeaders.value(QNetworkRequest::SetCookieHeader));
QNetworkCookieJar *jar = manager->cookieJar();
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index 61c116d..911eadc 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -190,6 +190,46 @@ QT_BEGIN_NAMESPACE
of other verbs than GET, POST, PUT and DELETE). This verb is set
when calling QNetworkAccessManager::sendCustomRequest().
+ \value CookieLoadControlAttribute
+ Requests only, type: QVariant::Int (default: QNetworkRequest::Automatic)
+ Indicates whether to send 'Cookie' headers in the request.
+
+ This attribute is set to false by QtWebKit when creating a cross-origin
+ XMLHttpRequest where withCredentials has not been set explicitly to true by the
+ Javascript that created the request.
+
+ See http://www.w3.org/TR/XMLHttpRequest2/#credentials-flag for more information.
+
+ \since 4.7
+
+ \value CookieSaveControlAttribute
+ Requests only, type: QVariant::Int (default: QNetworkRequest::Automatic)
+ Indicates whether to save 'Cookie' headers received from the server in reply
+ to the request.
+
+ This attribute is set to false by QtWebKit when creating a cross-origin
+ XMLHttpRequest where withCredentials has not been set explicitly to true by the
+ Javascript that created the request.
+
+ See http://www.w3.org/TR/XMLHttpRequest2/#credentials-flag for more information.
+
+ \since 4.7
+
+ \value AuthenticationReuseControlAttribute
+ Requests only, type: QVariant::Int (default: QNetworkRequest::Automatic)
+ Indicates whether to use cached authorization credentials in the request,
+ if available. If this is set to QNetworkRequest::Manual and the authentication
+ mechanism is 'Basic' or 'Digest', Qt will not send an an 'Authorization' HTTP
+ header with any cached credentials it may have for the request's URL.
+
+ This attribute is set to QNetworkRequest::Manual by QtWebKit when creating a cross-origin
+ XMLHttpRequest where withCredentials has not been set explicitly to true by the
+ Javascript that created the request.
+
+ See http://www.w3.org/TR/XMLHttpRequest2/#credentials-flag for more information.
+
+ \since 4.7
+
\value User
Special type. Additional information can be passed in
QVariants with types ranging from User to UserMax. The default
@@ -222,6 +262,18 @@ QT_BEGIN_NAMESPACE
if the item was not cached (i.e., off-line mode)
*/
+/*!
+ \enum QNetworkRequest::LoadControl
+ \since 4.7
+
+ Indicates if an aspect of the request's loading mechanism has been
+ manually overridden, e.g. by QtWebKit.
+
+ \value Automatic default value: indicates default behaviour.
+
+ \value Manual indicates behaviour has been manually overridden.
+*/
+
class QNetworkRequestPrivate: public QSharedData, public QNetworkHeadersPrivate
{
public:
diff --git a/src/network/access/qnetworkrequest.h b/src/network/access/qnetworkrequest.h
index a0ef1a6..d2945c4 100644
--- a/src/network/access/qnetworkrequest.h
+++ b/src/network/access/qnetworkrequest.h
@@ -79,6 +79,9 @@ public:
HttpPipeliningAllowedAttribute,
HttpPipeliningWasUsedAttribute,
CustomVerbAttribute,
+ CookieLoadControlAttribute,
+ AuthenticationReuseAttribute,
+ CookieSaveControlAttribute,
User = 1000,
UserMax = 32767
@@ -89,6 +92,10 @@ public:
PreferCache,
AlwaysCache
};
+ enum LoadControl {
+ Automatic = 0,
+ Manual
+ };
enum Priority {
HighPriority = 1,
diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp
index f287630..28a6c84 100644
--- a/src/network/kernel/qhostinfo.cpp
+++ b/src/network/kernel/qhostinfo.cpp
@@ -471,6 +471,18 @@ void QHostInfoRunnable::run()
hostInfo.setLookupId(id);
resultEmitter.emitResultsReady(hostInfo);
+ // now also iterate through the postponed ones
+ QMutableListIterator<QHostInfoRunnable*> iterator(manager->postponedLookups);
+ while (iterator.hasNext()) {
+ QHostInfoRunnable* postponed = iterator.next();
+ if (toBeLookedUp == postponed->toBeLookedUp) {
+ // we can now emit
+ iterator.remove();
+ hostInfo.setLookupId(postponed->id);
+ postponed->resultEmitter.emitResultsReady(hostInfo);
+ }
+ }
+
manager->lookupFinished(this);
// thread goes back to QThreadPool
@@ -596,6 +608,23 @@ void QHostInfoLookupManager::abortLookup(int id)
return;
QMutexLocker locker(&this->mutex);
+
+ // is postponed? delete and return
+ for (int i = 0; i < postponedLookups.length(); i++) {
+ if (postponedLookups.at(i)->id == id) {
+ delete postponedLookups.takeAt(i);
+ return;
+ }
+ }
+
+ // is scheduled? delete and return
+ for (int i = 0; i < scheduledLookups.length(); i++) {
+ if (scheduledLookups.at(i)->id == id) {
+ delete scheduledLookups.takeAt(i);
+ return;
+ }
+ }
+
if (!abortedLookups.contains(id))
abortedLookups.append(id);
}
diff --git a/src/network/kernel/qhostinfo_p.h b/src/network/kernel/qhostinfo_p.h
index e11766b..85d14c2 100644
--- a/src/network/kernel/qhostinfo_p.h
+++ b/src/network/kernel/qhostinfo_p.h
@@ -84,7 +84,7 @@ public Q_SLOTS:
}
Q_SIGNALS:
- void resultsReady(const QHostInfo info);
+ void resultsReady(const QHostInfo &info);
};
// needs to be QObject because fromName calls tr()
@@ -173,6 +173,8 @@ public:
bool wasAborted(int id);
QHostInfoCache cache;
+
+ friend class QHostInfoRunnable;
protected:
QList<QHostInfoRunnable*> currentLookups; // in progress
QList<QHostInfoRunnable*> postponedLookups; // postponed because in progress for same host
diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp
index 932126d..55f926d 100644
--- a/src/network/socket/qtcpserver.cpp
+++ b/src/network/socket/qtcpserver.cpp
@@ -562,7 +562,7 @@ QTcpSocket *QTcpServer::nextPendingConnection()
to the other thread and create the QTcpSocket object there and
use its setSocketDescriptor() method.
- \sa newConnection(), nextPendingConnection()
+ \sa newConnection(), nextPendingConnection(), addPendingConnection()
*/
void QTcpServer::incomingConnection(int socketDescriptor)
{
@@ -572,6 +572,22 @@ void QTcpServer::incomingConnection(int socketDescriptor)
QTcpSocket *socket = new QTcpSocket(this);
socket->setSocketDescriptor(socketDescriptor);
+ addPendingConnection(socket);
+}
+
+/*!
+ This function is called by QTcpServer::incomingConnection()
+ to add a socket to the list of pending incoming connections.
+
+ \note Don't forget to call this member from reimplemented
+ incomingConnection() if you do not want to break the
+ Pending Connections mechanism.
+
+ \sa incomingConnection()
+ \since 4.7
+*/
+void QTcpServer::addPendingConnection(QTcpSocket* socket)
+{
d_func()->pendingConnections.append(socket);
}
diff --git a/src/network/socket/qtcpserver.h b/src/network/socket/qtcpserver.h
index 7aebffe..b206678 100644
--- a/src/network/socket/qtcpserver.h
+++ b/src/network/socket/qtcpserver.h
@@ -93,6 +93,7 @@ public:
protected:
virtual void incomingConnection(int handle);
+ void addPendingConnection(QTcpSocket* socket);
Q_SIGNALS:
void newConnection();
diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp
index f8ecca3..dfadf48 100644
--- a/tests/auto/gestures/tst_gestures.cpp
+++ b/tests/auto/gestures/tst_gestures.cpp
@@ -50,6 +50,7 @@
#include <qgesturerecognizer.h>
#include <qgraphicsitem.h>
#include <qgraphicsview.h>
+#include <qmainwindow.h>
#include <qdebug.h>
@@ -355,6 +356,7 @@ private slots:
void deleteGestureTargetItem();
void viewportCoordinates();
void partialGesturePropagation();
+ void testQGestureRecognizerCleanup();
};
tst_Gestures::tst_Gestures()
@@ -1949,5 +1951,74 @@ void tst_Gestures::partialGesturePropagation()
QCOMPARE(item4->gestureEventsReceived, 0);
}
+class WinNativePan : public QPanGesture {
+public:
+ WinNativePan() {}
+};
+
+class Pan : public QPanGesture {
+public:
+ Pan() {}
+};
+
+class CustomPan : public QPanGesture {
+public:
+ CustomPan() {}
+};
+
+// Recognizer for active gesture triggers on mouse press
+class PanRecognizer : public QGestureRecognizer {
+public:
+ enum PanType { Platform, Default, Custom };
+
+ PanRecognizer(int id) : m_id(id) {}
+ QGesture *create(QObject *) {
+ switch(m_id) {
+ case Platform: return new WinNativePan();
+ case Default: return new Pan();
+ default: return new CustomPan();
+ }
+ }
+
+ Result recognize(QGesture *, QObject *, QEvent *) { return QGestureRecognizer::Ignore; }
+
+ const int m_id;
+};
+
+void tst_Gestures::testQGestureRecognizerCleanup()
+{
+ // Clean first the current recognizers in QGManager
+ QGestureRecognizer::unregisterRecognizer(Qt::PanGesture);
+
+ // v-- Qt singleton QGManager initialization
+
+ // Mimic QGestureManager: register both default and "platform" recognizers
+ // (this is done in windows when QT_NO_NATIVE_GESTURES is not defined)
+ PanRecognizer *def = new PanRecognizer(PanRecognizer::Default);
+ QGestureRecognizer::registerRecognizer(def);
+ PanRecognizer *plt = new PanRecognizer(PanRecognizer::Platform);
+ QGestureRecognizer::registerRecognizer(plt);
+ qDebug () << "register: default =" << def << "; platform =" << plt;
+
+ // ^-- Qt singleton QGManager initialization
+
+ // Here, application code would start
+
+ // Create QGV (has a QAScrollArea, which uses Qt::PanGesture)
+ QMainWindow *w = new QMainWindow;
+ QGraphicsView *v = new QGraphicsView();
+ w->setCentralWidget(v);
+
+ // Unregister Qt recognizers
+ QGestureRecognizer::unregisterRecognizer(Qt::PanGesture);
+
+ // Register a custom Pan recognizer
+ //QGestureRecognizer::registerRecognizer(new PanRecognizer(PanRecognizer::Custom));
+
+ w->show();
+ QTest::qWaitForWindowShown(w);
+ delete w;
+}
+
QTEST_MAIN(tst_Gestures)
#include "tst_gestures.moc"
diff --git a/tests/auto/qfile/largefile/tst_largefile.cpp b/tests/auto/qfile/largefile/tst_largefile.cpp
index 041e5f2..60c5f89 100644
--- a/tests/auto/qfile/largefile/tst_largefile.cpp
+++ b/tests/auto/qfile/largefile/tst_largefile.cpp
@@ -523,6 +523,10 @@ void tst_LargeFile::mapFile()
void tst_LargeFile::mapOffsetOverflow()
{
+#if defined(Q_OS_MAC)
+ QSKIP("mmap'ping beyond EOF may succeed; generate bus error on access", SkipAll);
+#endif
+
// Out-of-range mappings should fail, and not silently clip the offset
for (int i = 50; i < 63; ++i) {
uchar *address = 0;
diff --git a/tests/auto/qnetworkreply/smb-file.txt b/tests/auto/qnetworkreply/smb-file.txt
new file mode 100644
index 0000000..73c3ac2
--- /dev/null
+++ b/tests/auto/qnetworkreply/smb-file.txt
@@ -0,0 +1 @@
+This is 34 bytes. Do not change... \ No newline at end of file
diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
index ff79c09..c4d458f 100644
--- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
@@ -522,8 +522,8 @@ public:
active->connectToHost("127.0.0.1", server.serverPort());
#ifndef Q_OS_SYMBIAN
// need more time as working with embedded
- // device and testing from emualtor
- // things tend to get slower
+ // device and testing from emualtor
+ // things tend to get slower
if (!active->waitForConnected(1000))
return false;
@@ -929,7 +929,7 @@ void tst_QNetworkReply::invalidProtocol()
void tst_QNetworkReply::getFromData_data()
{
- QTest::addColumn<QString>("request");
+ QTest::addColumn<QString>("request");
QTest::addColumn<QByteArray>("expected");
QTest::addColumn<QString>("mimeType");
@@ -1025,7 +1025,7 @@ void tst_QNetworkReply::getFromData()
void tst_QNetworkReply::getFromFile()
{
- // create the file:
+ // create the file:
QTemporaryFile file(QDir::currentPath() + "/temp-XXXXXX");
file.setAutoRemove(true);
QVERIFY(file.open());
@@ -1073,11 +1073,14 @@ void tst_QNetworkReply::getFromFileSpecial_data()
QTest::newRow("resource") << ":/resource" << "qrc:/resource";
QTest::newRow("search-path") << "srcdir:/rfc3252.txt" << "srcdir:/rfc3252.txt";
QTest::newRow("bigfile-path") << "srcdir:/bigfile" << "srcdir:/bigfile";
+#ifdef Q_OS_WIN
+ QTest::newRow("smb-path") << "srcdir:/smb-file.txt" << "file://" + QtNetworkSettings::winServerName() + "/testshare/test.pri";
+#endif
}
void tst_QNetworkReply::getFromFileSpecial()
{
- QFETCH(QString, fileName);
+ QFETCH(QString, fileName);
QFETCH(QString, url);
// open the resource so we can find out its size
@@ -1107,7 +1110,7 @@ void tst_QNetworkReply::getFromFtp_data()
void tst_QNetworkReply::getFromFtp()
{
- QFETCH(QString, referenceName);
+ QFETCH(QString, referenceName);
QFETCH(QString, url);
QFile reference(referenceName);
@@ -1136,7 +1139,7 @@ void tst_QNetworkReply::getFromHttp_data()
void tst_QNetworkReply::getFromHttp()
{
- QFETCH(QString, referenceName);
+ QFETCH(QString, referenceName);
QFETCH(QString, url);
QFile reference(referenceName);
@@ -1163,6 +1166,12 @@ void tst_QNetworkReply::getErrors_data()
QTest::addColumn<int>("httpStatusCode");
QTest::addColumn<bool>("dataIsEmpty");
+ // empties
+ QTest::newRow("empty-url") << QString() << int(QNetworkReply::ProtocolUnknownError) << 0 << true;
+ QTest::newRow("empty-scheme-host") << SRCDIR "/rfc3252.txt" << int(QNetworkReply::ProtocolUnknownError) << 0 << true;
+ QTest::newRow("empty-scheme") << "//" + QtNetworkSettings::winServerName() + "/testshare/test.pri"
+ << int(QNetworkReply::ProtocolUnknownError) << 0 << true;
+
// file: errors
QTest::newRow("file-host") << "file://this-host-doesnt-exist.troll.no/foo.txt"
#if !defined Q_OS_WIN
@@ -3456,8 +3465,8 @@ void tst_QNetworkReply::downloadProgress_data()
QTest::newRow("big") << 4096;
#else
// it can run even with 4096
- // but it takes lot time
- //especially on emulator
+ // but it takes lot time
+ //especially on emulator
QTest::newRow("big") << 1024;
#endif
}
@@ -3646,7 +3655,7 @@ void tst_QNetworkReply::receiveCookiesFromHttp_data()
void tst_QNetworkReply::receiveCookiesFromHttp()
{
- QFETCH(QString, cookieString);
+ QFETCH(QString, cookieString);
QByteArray data = cookieString.toLatin1() + '\n';
QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/set-cookie.cgi");
diff --git a/tests/auto/qprinter/tst_qprinter.cpp b/tests/auto/qprinter/tst_qprinter.cpp
index 49bddb2..8b79533 100644
--- a/tests/auto/qprinter/tst_qprinter.cpp
+++ b/tests/auto/qprinter/tst_qprinter.cpp
@@ -110,6 +110,7 @@ private slots:
void testCurrentPage();
void taskQTBUG4497_reusePrinterOnDifferentFiles();
+ void testPdfTitle();
private:
};
@@ -417,7 +418,7 @@ void tst_QPrinter::testMargins()
printer.setFullPage(fullpage);
printer.setPageSize((QPrinter::PageSize)pagesize);
if (withPainter)
- painter = new QPainter(&printer);
+ painter = new QPainter(&printer);
#ifdef QT3_SUPPORT
Q3PaintDeviceMetrics metrics(&printer);
@@ -1028,5 +1029,30 @@ void tst_QPrinter::testCurrentPage()
}
+void tst_QPrinter::testPdfTitle()
+{
+ // Check the document name is represented correctly in produced pdf
+ {
+ QPainter painter;
+ QPrinter printer;
+ // This string is just the UTF-8 encoding of the string: \()f &oslash; hiragana o
+ const char title[]={0x5c, 0x28, 0x29, 0x66, 0xc3, 0xb8, 0xe3, 0x81, 0x8a, 0x00};
+ printer.setOutputFileName("file.pdf");
+ printer.setDocName(QString::fromUtf8(title));
+ painter.begin(&printer);
+ painter.end();
+ }
+ QFile file("file.pdf");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ // The we expect the title to appear in the PDF as:
+ // ASCII('\title (') UTF16(\\\(\)f &oslash; hiragana o) ASCII(')').
+ // which has the following binary representation
+ const char expected[] = {
+ 0x2f, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x20, 0x28, 0xfe,
+ 0xff, 0x00, 0x5c, 0x5c, 0x00, 0x5c, 0x28, 0x00, 0x5c,
+ 0x29, 0x00, 0x66, 0x00, 0xf8, 0x30, 0x4a, 0x29};
+ QVERIFY(file.readAll().contains(QByteArray(expected, 26)));
+}
+
QTEST_MAIN(tst_QPrinter)
#include "tst_qprinter.moc"
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp
index fa42adc..67bf0c1 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/qurl/tst_qurl.cpp
@@ -314,6 +314,7 @@ void tst_QUrl::constructing()
QUrl buildUNC;
+ buildUNC.setScheme(QString::fromLatin1("file"));
buildUNC.setHost(QString::fromLatin1("somehost"));
buildUNC.setPath(QString::fromLatin1("somepath"));
QCOMPARE(buildUNC.toLocalFile(), QString::fromLatin1("//somehost/somepath"));
@@ -1757,7 +1758,15 @@ void tst_QUrl::toLocalFile_data()
QTest::newRow("data7") << QString::fromLatin1("file://somehost/") << QString::fromLatin1("//somehost/");
QTest::newRow("data8") << QString::fromLatin1("file://somehost") << QString::fromLatin1("//somehost");
QTest::newRow("data9") << QString::fromLatin1("file:////somehost/somedir/somefile") << QString::fromLatin1("//somehost/somedir/somefile");
-
+ QTest::newRow("data10") << QString::fromLatin1("FILE:/a.txt") << QString::fromLatin1("/a.txt");
+
+ // and some that result in empty (i.e., not local)
+ QTest::newRow("xdata0") << QString::fromLatin1("/a.txt") << QString();
+ QTest::newRow("xdata1") << QString::fromLatin1("//a.txt") << QString();
+ QTest::newRow("xdata2") << QString::fromLatin1("///a.txt") << QString();
+ QTest::newRow("xdata3") << QString::fromLatin1("foo:/a.txt") << QString();
+ QTest::newRow("xdata4") << QString::fromLatin1("foo://a.txt") << QString();
+ QTest::newRow("xdata5") << QString::fromLatin1("foo:///a.txt") << QString();
}
void tst_QUrl::toLocalFile()
diff --git a/tests/auto/qxmlquery/tst_qxmlquery.cpp b/tests/auto/qxmlquery/tst_qxmlquery.cpp
index be0d708..6fd9b93 100644
--- a/tests/auto/qxmlquery/tst_qxmlquery.cpp
+++ b/tests/auto/qxmlquery/tst_qxmlquery.cpp
@@ -857,7 +857,7 @@ void tst_QXmlQuery::bindVariableXSLTSuccess() const
stylesheet.bindVariable(QLatin1String("paramSelectWithTypeIntBoundWithBindVariableRequired"),
QVariant(QLatin1String("param5")));
- stylesheet.setQuery(QUrl(inputFile(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/parameters.xsl"))));
+ stylesheet.setQuery(QUrl(inputFileAsURI(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/parameters.xsl"))));
QVERIFY(stylesheet.isValid());
@@ -1798,11 +1798,11 @@ void tst_QXmlQuery::setFocusQUrl() const
{
QXmlQuery query(QXmlQuery::XSLT20);
- const TestURIResolver resolver(QUrl(inputFile(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/documentElement.xml"))));
+ const TestURIResolver resolver(QUrl(inputFileAsURI(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/documentElement.xml"))));
query.setUriResolver(&resolver);
QVERIFY(query.setFocus(QUrl(QLatin1String("arbitraryURI"))));
- query.setQuery(QUrl(inputFile(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/copyWholeDocument.xsl"))));
+ query.setQuery(QUrl(inputFileAsURI(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/copyWholeDocument.xsl"))));
QVERIFY(query.isValid());
QBuffer result;
@@ -2997,7 +2997,7 @@ void tst_QXmlQuery::setInitialTemplateNameQXmlName() const
QCOMPARE(query.initialTemplateName(), name);
- query.setQuery(QUrl(inputFile(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/namedTemplate.xsl"))));
+ query.setQuery(QUrl(inputFileAsURI(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/namedTemplate.xsl"))));
QVERIFY(query.isValid());
QBuffer result;
@@ -3059,7 +3059,7 @@ void tst_QXmlQuery::setNetworkAccessManager() const
/* Ensure fn:doc() picks up the right QNetworkAccessManager. */
{
NetworkOverrider networkOverrider(QUrl(QLatin1String("tag:example.com:DOESNOTEXIST")),
- QUrl(inputFile(QLatin1String(SRCDIR "../xmlpatterns/queries/simpleDocument.xml"))));
+ QUrl(inputFileAsURI(QLatin1String(SRCDIR "../xmlpatterns/queries/simpleDocument.xml"))));
QXmlQuery query;
query.setNetworkAccessManager(&networkOverrider);
@@ -3075,7 +3075,7 @@ void tst_QXmlQuery::setNetworkAccessManager() const
/* Ensure setQuery() is using the right network manager. */
{
NetworkOverrider networkOverrider(QUrl(QLatin1String("tag:example.com:DOESNOTEXIST")),
- QUrl(inputFile(QLatin1String(SRCDIR "../xmlpatterns/queries/concat.xq"))));
+ QUrl(inputFileAsURI(QLatin1String(SRCDIR "../xmlpatterns/queries/concat.xq"))));
QXmlQuery query;
query.setNetworkAccessManager(&networkOverrider);
@@ -3135,7 +3135,7 @@ void tst_QXmlQuery::multipleDocsAndFocus() const
query.setQuery(QLatin1String("string(doc('") +
inputFile(QLatin1String(SRCDIR "../xmlpatterns/queries/simpleDocument.xml")) +
QLatin1String("'))"));
- query.setFocus(QUrl(inputFile(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/documentElement.xml"))));
+ query.setFocus(QUrl(inputFileAsURI(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/documentElement.xml"))));
query.setQuery(QLatin1String("string(.)"));
QStringList result;
@@ -3159,11 +3159,11 @@ void tst_QXmlQuery::multipleEvaluationsWithDifferentFocus() const
QXmlQuery query;
QStringList result;
- query.setFocus(QUrl(inputFile(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/documentElement.xml"))));
+ query.setFocus(QUrl(inputFileAsURI(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/documentElement.xml"))));
query.setQuery(QLatin1String("string(.)"));
QVERIFY(query.evaluateTo(&result));
- query.setFocus(QUrl(inputFile(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/documentElement.xml"))));
+ query.setFocus(QUrl(inputFileAsURI(QLatin1String(SRCDIR "../xmlpatterns/stylesheets/documentElement.xml"))));
QVERIFY(query.evaluateTo(&result));
}
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index bfa7445..e264426 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -2373,7 +2373,7 @@ void Configure::generateBuildKey()
+ buildSymbianKey + "\"\n"
"#else\n"
// Debug builds
- "# if (defined(_DEBUG) || defined(DEBUG))\n"
+ "# if (!QT_NO_DEBUG)\n"
"# if (defined(WIN64) || defined(_WIN64) || defined(__WIN64__))\n"
+ build64Key.arg("debug") + "\"\n"
"# else\n"
@@ -3457,7 +3457,7 @@ void Configure::displayConfig()
cout << "NOTE: When linking against OpenSSL, you can override the default" << endl;
cout << "library names through OPENSSL_LIBS." << endl;
cout << "For example:" << endl;
- cout << " configure -openssl-linked OPENSSL_LIBS='-lssleay32 -llibeay32'" << endl;
+ cout << " configure -openssl-linked OPENSSL_LIBS=\"-lssleay32 -llibeay32\"" << endl;
}
if( dictionary[ "ZLIB_FORCED" ] == "yes" ) {
QString which_zlib = "supplied";
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index a0cd560..67aa6c6 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -599,7 +599,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
generateAnnotatedList(relative, marker, nonCompatClasses);
}
else if (atom->string() == "classes") {
- generateCompactList(relative, marker, nonCompatClasses);
+ generateCompactList(relative, marker, nonCompatClasses, true);
}
else if (atom->string().contains("classesbymodule")) {
QString arg = atom->string().trimmed();
@@ -647,10 +647,10 @@ int HtmlGenerator::generateAtom(const Atom *atom,
generateClassHierarchy(relative, marker, nonCompatClasses);
}
else if (atom->string() == "compatclasses") {
- generateCompactList(relative, marker, compatClasses);
+ generateCompactList(relative, marker, compatClasses, false);
}
else if (atom->string() == "obsoleteclasses") {
- generateCompactList(relative, marker, obsoleteClasses);
+ generateCompactList(relative, marker, obsoleteClasses, false);
}
else if (atom->string() == "functionindex") {
generateFunctionIndex(relative, marker);
@@ -659,10 +659,10 @@ int HtmlGenerator::generateAtom(const Atom *atom,
generateLegaleseList(relative, marker);
}
else if (atom->string() == "mainclasses") {
- generateCompactList(relative, marker, mainClasses);
+ generateCompactList(relative, marker, mainClasses, true);
}
else if (atom->string() == "services") {
- generateCompactList(relative, marker, serviceClasses);
+ generateCompactList(relative, marker, serviceClasses, false);
}
else if (atom->string() == "overviews") {
generateOverviewList(relative, marker);
@@ -802,9 +802,9 @@ int HtmlGenerator::generateAtom(const Atom *atom,
<< "\"></a>\n";
out() << "<h3>" << protectEnc((*s).name) << "</h3>\n";
if (idx == Class)
- generateCompactList(0, marker, ncmap.value(), QString("Q"));
+ generateCompactList(0, marker, ncmap.value(), false, QString("Q"));
else if (idx == QmlClass)
- generateCompactList(0, marker, nqcmap.value(), QString("Q"));
+ generateCompactList(0, marker, nqcmap.value(), false, QString("Q"));
else if (idx == MemberFunction) {
ParentMaps parentmaps;
ParentMaps::iterator pmap;
@@ -830,7 +830,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "</a>" << ":</p>\n";
generateSection(nlist, 0, marker, CodeMarker::Summary);
- out() << "<br />";
+ out() << "<br/>";
++pmap;
}
}
@@ -876,7 +876,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "</div>";
break;
case Atom::LineBreak:
- out() << "<br />";
+ out() << "<br/>";
break;
case Atom::Link:
{
@@ -912,8 +912,14 @@ int HtmlGenerator::generateAtom(const Atom *atom,
else if (atom->string() == ATOM_LIST_VALUE) {
threeColumnEnumValueTable = isThreeColumnEnumValueTable(atom);
if (threeColumnEnumValueTable) {
- out() << "<table class=\"valuelist\">"
- << "<tr><th>Constant</th>"
+ out() << "<table class=\"valuelist\">";
+ // << "<tr>"
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd\">";
+ else
+ out() << "<tr class=\"even\">";
+
+ out() << "<tr><th>Constant</th>"
<< "<th>Value</th>"
<< "<th>Description</th></tr>\n";
}
@@ -926,7 +932,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "<ol type=";
if (atom->string() == ATOM_LIST_UPPERALPHA) {
out() << "\"A\"";
- }
+ } /* why type? */
else if (atom->string() == ATOM_LIST_LOWERALPHA) {
out() << "\"a\"";
}
@@ -956,7 +962,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "<tr><td class=\"topAlign\"><tt>"
<< protectEnc(plainCode(marker->markedUpEnumValue(atom->next()->string(),
relative)))
- << "</tt></td><td class=\"centerAlign topAlign\">";
+ << "</tt></td><td class=\" topAlign\">";
QString itemValue;
if (relative->type() == Node::Enum) {
@@ -1093,13 +1099,13 @@ int HtmlGenerator::generateAtom(const Atom *atom,
}
if (!atom->string().isEmpty()) {
if (atom->string().contains("%"))
- out() << "<table class=\"generic centerAlign\" width=\"" << atom->string() << "\">\n ";
+ out() << "<table class=\"generic\">\n "; // width=\"" << atom->string() << "\">\n ";
else {
- out() << "<table class=\"generic centerAlign\">\n";
+ out() << "<table class=\"generic\">\n";
}
}
else {
- out() << "<table class=\"generic centerAlign\">\n";
+ out() << "<table class=\"generic\">\n";
}
numTableRows = 0;
break;
@@ -1243,6 +1249,8 @@ void HtmlGenerator::generateClassLikeNode(const InnerNode *inner,
subtitleText << "(" << Atom(Atom::AutoLink, fullTitle) << ")"
<< Atom(Atom::LineBreak);
+#if 0
+ // No longer used because the modeule name is a breadcrumb.
QString fixedModule = inner->moduleName();
if (fixedModule == "Qt3SupportLight")
fixedModule = "Qt3Support";
@@ -1263,6 +1271,7 @@ void HtmlGenerator::generateClassLikeNode(const InnerNode *inner,
subtitleText << "]";
}
}
+#endif
generateHeader(title, inner, marker);
sections = marker->sections(inner, CodeMarker::Summary, CodeMarker::Okay);
@@ -1585,7 +1594,7 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
NodeList::ConstIterator m = (*s).members.begin();
while (m != (*s).members.end()) {
generateDetailedQmlMember(*m, fake, marker);
- out() << "<br />\n";
+ out() << "<br/>\n";
fakeSection.keywords += qMakePair((*m)->name(),
linkForNode(*m,0));
++m;
@@ -1739,6 +1748,9 @@ void HtmlGenerator::generateBreadCrumbs(const QString& title,
}
}
else if (node->subType() == Node::QmlClass) {
+ out() << " <li><a href=\"qdeclarativeelements.html\">QML Elements</a></li>";
+ out() << " <li><a href=\"" << fn->name() << "\">" << title
+ << "</a></li>";
}
else if (node->subType() == Node::Example) {
out() << " <li><a href=\"examples.html\">All Examples</a></li>";
@@ -1788,27 +1800,14 @@ void HtmlGenerator::generateHeader(const QString& title,
//out() << " <title>Qt Reference Documentation</title>";
out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\" />\n";
- out() << " <!--[if IE]>\n";
- out() << " <meta name=\"MSSmartTagsPreventParsing\" content=\"true\">\n";
- out() << " <meta http-equiv=\"imagetoolbar\" content=\"no\">\n";
- out() << " <![endif]-->\n";
- out() << " <!--[if lt IE 7]>\n";
- out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie6.css\">\n";
- out() << " <![endif]-->\n";
- out() << " <!--[if IE 7]>\n";
- out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie7.css\">\n";
- out() << " <![endif]-->\n";
- out() << " <!--[if IE 8]>\n";
- out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie8.css\">\n";
- out() << " <![endif]-->\n";
out() << " <script src=\"scripts/jquery.js\" type=\"text/javascript\"></script>\n";
out() << " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n";
out() << "</head>\n";
if (offlineDocs)
- out() << "<body class=\"offline\">\n";
+ out() << "<body class=\"offline\" onload=\"CheckEmptyAndLoadList();\">\n";
else
- out() << "<body class=\"\">\n";
+ out() << "<body class=\"\" onload=\"CheckEmptyAndLoadList();\">\n";
#ifdef GENERATE_MAC_REFS
if (mainPage)
@@ -1831,18 +1830,16 @@ void HtmlGenerator::generateTitle(const QString& title,
CodeMarker *marker)
{
if (!title.isEmpty())
- out() << "<h1 class=\"title\">" << protectEnc(title);
+ out() << "<h1 class=\"title\">" << protectEnc(title) << "</h1>\n";
if (!subTitle.isEmpty()) {
- out() << "<br />";
- if (subTitleSize == SmallSubTitle)
- out() << "<span class=\"small-subtitle\">";
+ out() << "<span";
+ if (subTitleSize == SmallSubTitle)
+ out() << " class=\"small-subtitle\">";
else
- out() << "<span class=\"subtitle\">";
+ out() << " class=\"subtitle\">";
generateText(subTitle, relative, marker);
out() << "</span>\n";
}
- if (!title.isEmpty())
- out() << "</h1>\n";
}
void HtmlGenerator::generateFooter(const Node *node)
@@ -1851,9 +1848,9 @@ void HtmlGenerator::generateFooter(const Node *node)
out() << "<p>\n" << navigationLinks << "</p>\n";
out() << QString(footer).replace("\\" + COMMAND_VERSION, myTree->version())
- << QString(address).replace("\\" + COMMAND_VERSION, myTree->version())
- << "</body>\n"
- "</html>\n";
+ << QString(address).replace("\\" + COMMAND_VERSION, myTree->version());
+ out() << "</body>\n";
+ out() << "</html>\n";
}
void HtmlGenerator::generateBrief(const Node *node, CodeMarker *marker,
@@ -1874,7 +1871,7 @@ void HtmlGenerator::generateBrief(const Node *node, CodeMarker *marker,
void HtmlGenerator::generateIncludes(const InnerNode *inner, CodeMarker *marker)
{
if (!inner->includes().isEmpty()) {
- out() << "<pre clas=\"highlightedCode\">"
+ out() << "<pre class=\"highlightedCode\">"
<< trimmedTrailing(highlightedCode(indent(codeIndent,
marker->markedUpIncludes(inner->includes())),
marker,inner))
@@ -2278,9 +2275,9 @@ void HtmlGenerator::generateAnnotatedList(const Node *relative,
out() << "<tr class=\"odd topAlign\">";
else
out() << "<tr class=\"even topAlign\">";
- out() << "<th>";
+ out() << "<td>";
generateFullName(node, relative, marker);
- out() << "</th>";
+ out() << "</td>";
if (!(node->type() == Node::Fake)) {
Text brief = node->doc().trimmedBriefText(name);
@@ -2312,10 +2309,11 @@ void HtmlGenerator::generateAnnotatedList(const Node *relative,
void HtmlGenerator::generateCompactList(const Node *relative,
CodeMarker *marker,
const NodeMap &classMap,
+ bool includeAlphabet,
QString commonPrefix)
{
const int NumParagraphs = 37; // '0' to '9', 'A' to 'Z', '_'
- const int NumColumns = 3; // number of columns in the result
+ const int NumColumns = 2; // number of columns in the result
if (classMap.isEmpty())
return;
@@ -2384,6 +2382,7 @@ void HtmlGenerator::generateCompactList(const Node *relative,
*/
NodeMap paragraph[NumParagraphs+1];
QString paragraphName[NumParagraphs+1];
+ QSet<char> usedParagraphNames;
NodeMap::ConstIterator c = classMap.begin();
while (c != classMap.end()) {
@@ -2407,6 +2406,7 @@ void HtmlGenerator::generateCompactList(const Node *relative,
}
paragraphName[paragraphNo] = key[0].toUpper();
+ usedParagraphNames.insert(key[0].toLower().cell());
paragraph[paragraphNo].insert(key, c.value());
++c;
}
@@ -2426,15 +2426,15 @@ void HtmlGenerator::generateCompactList(const Node *relative,
for (j = 0; j < NumParagraphs; j++) // j = 0..36
paragraphOffset[j + 1] = paragraphOffset[j] + paragraph[j].count();
- int firstOffset[NumColumns + 1]; // 4 + 1
- int currentOffset[NumColumns]; // 4
- int currentParagraphNo[NumColumns]; // 4
- int currentOffsetInParagraph[NumColumns]; // 4
+ int firstOffset[NumColumns + 1];
+ int currentOffset[NumColumns];
+ int currentParagraphNo[NumColumns];
+ int currentOffsetInParagraph[NumColumns];
int numRows = (classMap.count() + NumColumns - 1) / NumColumns;
int curParagNo = 0;
- for (i = 0; i < NumColumns; i++) { // i = 0..3
+ for (i = 0; i < NumColumns; i++) {
firstOffset[i] = qMin(i * numRows, classMap.size());
currentOffset[i] = firstOffset[i];
@@ -2450,9 +2450,25 @@ void HtmlGenerator::generateCompactList(const Node *relative,
}
firstOffset[NumColumns] = classMap.count();
+ if (includeAlphabet) {
+ out() << "<p class=\"centerAlign functionIndex\"><b>";
+ for (int i = 0; i < 26; i++) {
+ QChar ch('a' + i);
+ if (usedParagraphNames.contains(char('a' + i)))
+ out() << QString("<a href=\"#%1\">%2</a>&nbsp;").arg(ch).arg(ch.toUpper());
+ }
+ out() << "</b></p>\n";
+ }
+
out() << "<table class=\"generic\">\n";
for (k = 0; k < numRows; k++) {
- out() << "<tr>\n";
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd topAlign\">";
+ else
+ out() << "<tr class=\"even topAlign\">";
+ //break;
+
+// out() << "<tr>\n";
for (i = 0; i < NumColumns; i++) {
if (currentOffset[i] >= firstOffset[i + 1]) {
// this column is finished
@@ -2474,9 +2490,13 @@ void HtmlGenerator::generateCompactList(const Node *relative,
out() << "<td class=\"rightAlign\">";
if (currentOffsetInParagraph[i] == 0) {
// start a new paragraph
+ if (includeAlphabet) {
+ QChar c = paragraphName[currentParagraphNo[i]][0].toLower();
+ out() << QString("<a name=\"%1\"></a>").arg(c);
+ }
out() << "<b>"
<< paragraphName[currentParagraphNo[i]]
- << "&nbsp;</b>";
+ << "</b>";
}
out() << "</td>\n";
@@ -2646,7 +2666,7 @@ void HtmlGenerator::generateQmlItem(const Node *node,
if (summary)
marked.replace("@name>", "b>");
- marked.replace("<@extra>", "&nbsp;&nbsp;<tt>");
+ marked.replace("<@extra>", "<tt>");
marked.replace("</@extra>", "</tt>");
if (summary) {
@@ -2812,14 +2832,14 @@ void HtmlGenerator::generateSection(const NodeList& nl,
else {
if (twoColumn && i == (int) (nl.count() + 1) / 2)
out() << "</ul></td><td class=\"topAlign\"><ul>\n";
- out() << "<li><div class=\"fn\">";
+ out() << "<li class=\"fn\">";
}
generateSynopsis(*m, relative, marker, style, name_alignment);
if (name_alignment)
out() << "</td></tr>\n";
else
- out() << "</div></li>\n";
+ out() << "</li>\n";
i++;
++m;
}
@@ -2873,14 +2893,14 @@ void HtmlGenerator::generateSectionList(const Section& section,
else {
if (twoColumn && i == (int) (section.members.count() + 1) / 2)
out() << "</ul></td><td class=\"topAlign\"><ul>\n";
- out() << "<li><div class=\"fn\">";
+ out() << "<li class=\"fn\">";
}
generateSynopsis(*m, relative, marker, style, name_alignment);
if (name_alignment)
out() << "</td></tr>\n";
else
- out() << "</div></li>\n";
+ out() << "</li>\n";
i++;
++m;
}
@@ -2908,9 +2928,9 @@ void HtmlGenerator::generateSectionInheritedList(const Section& section,
QList<QPair<ClassNode *, int> >::ConstIterator p = section.inherited.begin();
while (p != section.inherited.end()) {
if (nameAlignment)
- out() << "<li><div bar=\"2\" class=\"fn\"></div>";
+ out() << "<li class=\"fn\">";
else
- out() << "<li><div class=\"fn\"></div>";
+ out() << "<li class=\"fn\">";
out() << (*p).second << " ";
if ((*p).second == 1) {
out() << section.singularMember;
@@ -2955,7 +2975,7 @@ void HtmlGenerator::generateSynopsis(const Node *node,
extraRegExp.setMinimal(true);
marked.replace(extraRegExp, "");
} else {
- marked.replace("<@extra>", "&nbsp;&nbsp;<tt>");
+ marked.replace("<@extra>", "<tt>");
marked.replace("</@extra>", "</tt>");
}
@@ -3151,8 +3171,13 @@ void HtmlGenerator::generateSectionList(const Section& section,
twoColumn = (section.members.count() >= 5);
}
if (twoColumn)
- out() << "<table class=\"generic\">\n"
- << "<tr><td class=\"topAlign\">";
+ out() << "<table class=\"generic\">\n";
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd topAlign\">";
+ else
+ out() << "<tr class=\"even topAlign\">";
+
+// << "<tr><td class=\"topAlign\">";
out() << "<ul>\n";
int i = 0;
@@ -3166,7 +3191,7 @@ void HtmlGenerator::generateSectionList(const Section& section,
if (twoColumn && i == (int) (section.members.count() + 1) / 2)
out() << "</ul></td><td class=\"topAlign\"><ul>\n";
- out() << "<li><div class=\"fn\"></div>";
+ out() << "<li class=\"fn\">";
if (style == CodeMarker::Accessors)
out() << "<b>";
generateSynopsis(*m, relative, marker, style);
@@ -3194,7 +3219,7 @@ void HtmlGenerator::generateSectionInheritedList(const Section& section,
{
QList<QPair<ClassNode *, int> >::ConstIterator p = section.inherited.begin();
while (p != section.inherited.end()) {
- out() << "<li><div bar=\"2\" class=\"fn\"></div>";
+ out() << "<li class=\"fn\">";
out() << (*p).second << " ";
if ((*p).second == 1) {
out() << section.singularMember;
@@ -3234,7 +3259,7 @@ void HtmlGenerator::generateSynopsis(const Node *node,
extraRegExp.setMinimal(true);
marked.replace(extraRegExp, "");
} else {
- marked.replace("<@extra>", "&nbsp;&nbsp;<tt>");
+ marked.replace("<@extra>", "<tt>");
marked.replace("</@extra>", "</tt>");
}
@@ -3764,7 +3789,7 @@ void HtmlGenerator::generateDetailedMember(const Node *node,
out() << "<h3 class=\"flags\">";
out() << "<a name=\"" + refForNode(node) + "\"></a>";
generateSynopsis(enume, relative, marker, CodeMarker::Detailed);
- out() << "<br />";
+ out() << "<br/>";
generateSynopsis(enume->flagsType(),
relative,
marker,
@@ -4359,8 +4384,12 @@ void HtmlGenerator::generateQmlSummary(const Section& section,
twoColumn = (count >= 5);
}
if (twoColumn)
- out() << "<table class=\"qmlsummary\">\n"
- << "<tr><td class=\"topAlign\">";
+ out() << "<table class=\"qmlsummary\">\n";
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd topAlign\">";
+ else
+ out() << "<tr class=\"even topAlign\">";
+ // << "<tr><td class=\"topAlign\">";
out() << "<ul>\n";
int row = 0;
@@ -4368,7 +4397,7 @@ void HtmlGenerator::generateQmlSummary(const Section& section,
while (m != section.members.end()) {
if (twoColumn && row == (int) (count + 1) / 2)
out() << "</ul></td><td class=\"topAlign\"><ul>\n";
- out() << "<li><div class=\"fn\"></div>";
+ out() << "<li class=\"fn\">";
generateQmlItem(*m,relative,marker,true);
out() << "</li>\n";
row++;
@@ -4402,12 +4431,19 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
while (p != qpgn->childNodes().end()) {
if ((*p)->type() == Node::QmlProperty) {
qpn = static_cast<const QmlPropertyNode*>(*p);
- out() << "<tr><td>";
+
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd\">";
+ else
+ out() << "<tr class=\"even\">";
+
+ out() << "<td>";
+ //out() << "<tr><td>"; // old
out() << "<a name=\"" + refForNode(qpn) + "\"></a>";
if (!qpn->isWritable())
- out() << "<span class=\"qmlreadonly\">read-only&nbsp;</span>";
+ out() << "<span class=\"qmlreadonly\">read-only</span>";
if (qpgn->isDefault())
- out() << "<span class=\"qmldefault\">default&nbsp;</span>";
+ out() << "<span class=\"qmldefault\">default</span>";
generateQmlItem(qpn, relative, marker, false);
out() << "</td></tr>";
if (qpgn->isDefault()) {
@@ -4428,7 +4464,12 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
const FunctionNode* qsn = static_cast<const FunctionNode*>(node);
out() << "<div class=\"qmlproto\">";
out() << "<table class=\"qmlname\">";
- out() << "<tr><td>";
+ //out() << "<tr>";
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd\">";
+ else
+ out() << "<tr class=\"even\">";
+ out() << "<td>";
out() << "<a name=\"" + refForNode(qsn) + "\"></a>";
generateSynopsis(qsn,relative,marker,CodeMarker::Detailed,false);
//generateQmlItem(qsn,relative,marker,false);
@@ -4440,7 +4481,12 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
const FunctionNode* qmn = static_cast<const FunctionNode*>(node);
out() << "<div class=\"qmlproto\">";
out() << "<table class=\"qmlname\">";
- out() << "<tr><td>";
+ //out() << "<tr>";
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd\">";
+ else
+ out() << "<tr class=\"even\">";
+ out() << "<td>";
out() << "<a name=\"" + refForNode(qmn) + "\"></a>";
generateSynopsis(qmn,relative,marker,CodeMarker::Detailed,false);
out() << "</td></tr>";
diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h
index d80cbdb..e060257 100644
--- a/tools/qdoc3/htmlgenerator.h
+++ b/tools/qdoc3/htmlgenerator.h
@@ -173,6 +173,7 @@ class HtmlGenerator : public PageGenerator
void generateCompactList(const Node *relative,
CodeMarker *marker,
const NodeMap &classMap,
+ bool includeAlphabet,
QString commonPrefix = QString());
void generateFunctionIndex(const Node *relative, CodeMarker *marker);
void generateLegaleseList(const Node *relative, CodeMarker *marker);
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index a2bd948..4ba3a32 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -1289,7 +1289,7 @@ QmlClassNode::QmlClassNode(InnerNode *parent,
const ClassNode* cn)
: FakeNode(parent, name, QmlClass), cnode(cn)
{
- setTitle((qmlOnly ? "" : "QML ") + name + " Element Reference");
+ setTitle((qmlOnly ? "" : "QML ") + name + " Element");
}
/*!
diff --git a/tools/qdoc3/test/assistant.qdocconf b/tools/qdoc3/test/assistant.qdocconf
index 1deefce..112b1b2 100644
--- a/tools/qdoc3/test/assistant.qdocconf
+++ b/tools/qdoc3/test/assistant.qdocconf
@@ -16,45 +16,28 @@ qhp.Assistant.file = assistant.qhp
qhp.Assistant.namespace = com.trolltech.assistant.470
qhp.Assistant.virtualFolder = qdoc
qhp.Assistant.indexTitle = Qt Assistant Manual
-qhp.Assistant.extraFiles = images/api_examples.png \
- images/api_lookup.png \
- images/api_topics.png \
+qhp.Assistant.extraFiles = images/bg_l.png \
images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ll.png \
- images/bg_l.png \
- images/bg_lr.png \
images/bg_r.png \
- images/bg_ul_blank.png \
- images/bg_ul.png \
- images/bg_ur_blank.png \
- images/bg_ur.png \
- images/box_bg.png \
- images/breadcrumb.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
images/bullet_dn.png \
- images/bullet_gt.png \
- images/bullet_sq.png \
+ images/bullet_sq.png \
images/bullet_up.png \
- images/coloreditorfactoryimage.png \
- images/content_bg.png \
- images/dynamiclayouts-example.png \
images/feedbackground.png \
- images/form_bg.png \
images/horBar.png \
- images/page_bg.png \
- images/print.png \
- images/qt_guide.png \
- images/qt_icon.png \
- images/qt-logo.png \
- images/qt_ref_doc.png \
- images/qt_tools.png \
- images/sep.png \
- images/sprites-combined.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
- scripts/functions.js \
- scripts/jquery.js \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ scripts/functions.js \
+ scripts/jquery.js \
style/style.css
+
qhp.Assistant.filterAttributes = qt 4.7.0 tools assistant
qhp.Assistant.customFilters.Assistant.name = Qt Assistant Manual
qhp.Assistant.customFilters.Assistant.filterAttributes = qt tools assistant
diff --git a/tools/qdoc3/test/designer.qdocconf b/tools/qdoc3/test/designer.qdocconf
index 513801a..d4da292 100644
--- a/tools/qdoc3/test/designer.qdocconf
+++ b/tools/qdoc3/test/designer.qdocconf
@@ -16,45 +16,28 @@ qhp.Designer.file = designer.qhp
qhp.Designer.namespace = com.trolltech.designer.470
qhp.Designer.virtualFolder = qdoc
qhp.Designer.indexTitle = Qt Designer Manual
-qhp.Designer.extraFiles = images/api_examples.png \
- images/api_lookup.png \
- images/api_topics.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ll.png \
- images/bg_l.png \
- images/bg_lr.png \
- images/bg_r.png \
- images/bg_ul_blank.png \
- images/bg_ul.png \
- images/bg_ur_blank.png \
- images/bg_ur.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_dn.png \
- images/bullet_gt.png \
- images/bullet_sq.png \
- images/bullet_up.png \
+qhp.Designer.extraFiles = images/bg_l.png \
+ images/bg_l_blank.png \
+ images/bg_r.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/feedbackground.png \
+ images/horBar.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
images/coloreditorfactoryimage.png \
- images/content_bg.png \
images/dynamiclayouts-example.png \
- images/feedbackground.png \
- images/form_bg.png \
- images/horBar.png \
- images/page_bg.png \
- images/print.png \
- images/qt_guide.png \
- images/qt_icon.png \
- images/qt-logo.png \
- images/qt_ref_doc.png \
- images/qt_tools.png \
- images/sep.png \
- images/sprites-combined.png \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- scripts/functions.js \
- scripts/jquery.js \
- style/style.css
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
+
qhp.Designer.filterAttributes = qt 4.7.0 tools designer
qhp.Designer.customFilters.Designer.name = Qt Designer Manual
qhp.Designer.customFilters.Designer.filterAttributes = qt tools designer
diff --git a/tools/qdoc3/test/linguist.qdocconf b/tools/qdoc3/test/linguist.qdocconf
index a3f4f00..7420b4f 100644
--- a/tools/qdoc3/test/linguist.qdocconf
+++ b/tools/qdoc3/test/linguist.qdocconf
@@ -16,45 +16,28 @@ qhp.Linguist.file = linguist.qhp
qhp.Linguist.namespace = com.trolltech.linguist.470
qhp.Linguist.virtualFolder = qdoc
qhp.Linguist.indexTitle = Qt Linguist Manual
-qhp.Linguist.extraFiles = images/api_examples.png \
- images/api_lookup.png \
- images/api_topics.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ll.png \
- images/bg_l.png \
- images/bg_lr.png \
- images/bg_r.png \
- images/bg_ul_blank.png \
- images/bg_ul.png \
- images/bg_ur_blank.png \
- images/bg_ur.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_dn.png \
- images/bullet_gt.png \
- images/bullet_sq.png \
- images/bullet_up.png \
+qhp.Linguist.extraFiles = images/bg_l.png \
+ images/bg_l_blank.png \
+ images/bg_r.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/feedbackground.png \
+ images/horBar.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
images/coloreditorfactoryimage.png \
- images/content_bg.png \
images/dynamiclayouts-example.png \
- images/feedbackground.png \
- images/form_bg.png \
- images/horBar.png \
- images/page_bg.png \
- images/print.png \
- images/qt_guide.png \
- images/qt_icon.png \
- images/qt-logo.png \
- images/qt_ref_doc.png \
- images/qt_tools.png \
- images/sep.png \
- images/sprites-combined.png \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- scripts/functions.js \
- scripts/jquery.js \
- style/style.css
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
+
qhp.Linguist.filterAttributes = qt 4.7.0 tools linguist
qhp.Linguist.customFilters.Linguist.name = Qt Linguist Manual
qhp.Linguist.customFilters.Linguist.filterAttributes = qt tools linguist
diff --git a/tools/qdoc3/test/qdeclarative.qdocconf b/tools/qdoc3/test/qdeclarative.qdocconf
index 80050e3..8015f57 100644
--- a/tools/qdoc3/test/qdeclarative.qdocconf
+++ b/tools/qdoc3/test/qdeclarative.qdocconf
@@ -27,45 +27,27 @@ qhp.Qml.indexTitle = Qml Reference
# Files not referenced in any qdoc file
# See also extraimages.HTML
-qhp.Qml.extraFiles = images/api_examples.png \
- images/api_lookup.png \
- images/api_topics.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ll.png \
- images/bg_l.png \
- images/bg_lr.png \
- images/bg_r.png \
- images/bg_ul_blank.png \
- images/bg_ul.png \
- images/bg_ur_blank.png \
- images/bg_ur.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_dn.png \
- images/bullet_gt.png \
- images/bullet_sq.png \
- images/bullet_up.png \
- images/coloreditorfactoryimage.png \
- images/content_bg.png \
- images/dynamiclayouts-example.png \
- images/feedbackground.png \
- images/form_bg.png \
- images/horBar.png \
- images/page_bg.png \
- images/print.png \
- images/qt_guide.png \
- images/qt_icon.png \
- images/qt-logo.png \
- images/qt_ref_doc.png \
- images/qt_tools.png \
- images/sep.png \
- images/sprites-combined.png \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- scripts/functions.js \
- scripts/jquery.js \
- style/style.css
+qhp.Qml.extraFiles = images/bg_l.png \
+ images/bg_l_blank.png \
+ images/bg_r.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/feedbackground.png \
+ images/horBar.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
qhp.Qml.filterAttributes = qt 4.6.0 qtrefdoc
qhp.Qml.customFilters.Qt.name = Qt 4.6.0
diff --git a/tools/qdoc3/test/qmake.qdocconf b/tools/qdoc3/test/qmake.qdocconf
index f38a2a4..49d088e 100644
--- a/tools/qdoc3/test/qmake.qdocconf
+++ b/tools/qdoc3/test/qmake.qdocconf
@@ -16,45 +16,28 @@ qhp.qmake.file = qmake.qhp
qhp.qmake.namespace = com.trolltech.qmake.470
qhp.qmake.virtualFolder = qdoc
qhp.qmake.indexTitle = QMake Manual
-qhp.qmake.extraFiles = images/api_examples.png \
- images/api_lookup.png \
- images/api_topics.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ll.png \
- images/bg_l.png \
- images/bg_lr.png \
- images/bg_r.png \
- images/bg_ul_blank.png \
- images/bg_ul.png \
- images/bg_ur_blank.png \
- images/bg_ur.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_dn.png \
- images/bullet_gt.png \
- images/bullet_sq.png \
- images/bullet_up.png \
- images/coloreditorfactoryimage.png \
- images/content_bg.png \
- images/dynamiclayouts-example.png \
- images/feedbackground.png \
- images/form_bg.png \
- images/horBar.png \
- images/page_bg.png \
- images/print.png \
- images/qt_guide.png \
- images/qt_icon.png \
- images/qt-logo.png \
- images/qt_ref_doc.png \
- images/qt_tools.png \
- images/sep.png \
- images/sprites-combined.png \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- scripts/functions.js \
- scripts/jquery.js \
- style/style.css
+qhp.qmake.extraFiles = images/bg_l.png \
+ images/bg_l_blank.png \
+ images/bg_r.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/feedbackground.png \
+ images/horBar.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
+
qhp.qmake.filterAttributes = qt 4.7.0 tools qmake
qhp.qmake.customFilters.qmake.name = qmake Manual
qhp.qmake.customFilters.qmake.filterAttributes = qt tools qmake
diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf
index 0694748..f0c2535 100644
--- a/tools/qdoc3/test/qt-build-docs.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs.qdocconf
@@ -22,45 +22,27 @@ qhp.Qt.indexTitle = Qt Reference Documentation
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
qhp.Qt.extraFiles = index.html \
- images/api_examples.png \
- images/api_lookup.png \
- images/api_topics.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ll.png \
- images/bg_l.png \
- images/bg_lr.png \
- images/bg_r.png \
- images/bg_ul_blank.png \
- images/bg_ul.png \
- images/bg_ur_blank.png \
- images/bg_ur.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_dn.png \
- images/bullet_gt.png \
- images/bullet_sq.png \
- images/bullet_up.png \
- images/coloreditorfactoryimage.png \
- images/content_bg.png \
- images/dynamiclayouts-example.png \
- images/feedbackground.png \
- images/form_bg.png \
- images/horBar.png \
- images/page_bg.png \
- images/print.png \
- images/qt_guide.png \
- images/qt_icon.png \
- images/qt-logo.png \
- images/qt_ref_doc.png \
- images/qt_tools.png \
- images/sep.png \
- images/sprites-combined.png \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- scripts/functions.js \
- scripts/jquery.js \
- style/style.css
+ images/bg_l.png \
+ images/bg_l_blank.png \
+ images/bg_r.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/feedbackground.png \
+ images/horBar.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
diff --git a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
index 5a3d726..a00d5a1 100644
--- a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
@@ -30,45 +30,27 @@ qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.0
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
qhp.Qt.extraFiles = index.html \
- images/api_examples.png \
- images/api_lookup.png \
- images/api_topics.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ll.png \
- images/bg_l.png \
- images/bg_lr.png \
- images/bg_r.png \
- images/bg_ul_blank.png \
- images/bg_ul.png \
- images/bg_ur_blank.png \
- images/bg_ur.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_dn.png \
- images/bullet_gt.png \
- images/bullet_sq.png \
- images/bullet_up.png \
- images/coloreditorfactoryimage.png \
- images/content_bg.png \
- images/dynamiclayouts-example.png \
- images/feedbackground.png \
- images/form_bg.png \
- images/horBar.png \
- images/page_bg.png \
- images/print.png \
- images/qt_guide.png \
- images/qt_icon.png \
- images/qt-logo.png \
- images/qt_ref_doc.png \
- images/qt_tools.png \
- images/sep.png \
- images/sprites-combined.png \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- scripts/functions.js \
- scripts/jquery.js \
- style/style.css
+ images/bg_l.png \
+ images/bg_l_blank.png \
+ images/bg_r.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/feedbackground.png \
+ images/horBar.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
language = Cpp
diff --git a/tools/qdoc3/test/qt-defines.qdocconf b/tools/qdoc3/test/qt-defines.qdocconf
index 0426f4d..dc81757 100644
--- a/tools/qdoc3/test/qt-defines.qdocconf
+++ b/tools/qdoc3/test/qt-defines.qdocconf
@@ -20,37 +20,20 @@ codeindent = 1
# See also qhp.Qt.extraFiles
extraimages.HTML = qt-logo \
trolltech-logo \
- api_examples.png \
- bg_ll.png \
- bg_ul_blank.png \
- bullet_gt.png \
- horBar.png \
- qt_ref_doc.png \
- api_lookup.png \
- bg_ll_blank.png \
- bg_ur.png \
- bullet_sq.png \
- bullet_dn.png \
- bullet_up.png \
- page_bg.png \
- qt_tools.png \
- api_topics.png \
- bg_lr.png \
- bg_ur_blank.png \
- content_bg.png \
- print.png \
- sep.png \
- bg_l.png \
- bg_r.png \
- box_bg.png \
- feedbackground.png \
- qt_guide.png \
- sprites-combined.png \
- bg_l_blank.png \
- bg_ul.png \
- breadcrumb.png \
- form_bg.png \
- qt_icon.png \
+ bg_l.png \
+ bg_l_blank.png \
+ bg_r.png \
+ box_bg.png \
+ breadcrumb.png \
+ bullet_gt.png \
+ bullet_dn.png \
+ bullet_sq.png \
+ bullet_up.png \
+ feedbackground.png \
+ horBar.png \
+ page.png \
+ page_bg.png \
+ sprites-combined.png \
taskmenuextension-example.png \
coloreditorfactoryimage.png \
dynamiclayouts-example.png \
diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf
index 85a29c2..b94bb81 100644
--- a/tools/qdoc3/test/qt-html-templates.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates.qdocconf
@@ -33,53 +33,54 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" <div class=\"search\">\n" \
" <form id=\"qtdocsearch\" action=\"#\">\n" \
" <fieldset>\n" \
- " <input type=\"text\" name=\"searchstring\" id=\"searchstring\" value=\"\" onkeyup=\"doSearch(this.value);\" />\n" \
+ " <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\n" \
" </fieldset>\n" \
" </form>\n" \
" </div>\n" \
" <div class=\"box first bottombar\" id=\"lookup\">\n" \
- " <h2>\n" \
+ " <h2><span></span>\n" \
" API Lookup</h2>\n" \
- " <div class=\"list\">\n" \
- " <ul>\n" \
- " <li><a href=\"modules.html\">All modules</a></li>\n" \
- " <li><a href=\"classes.html\">All classes</a></li>\n" \
- " <li><a href=\"functions.html\">All functions</a></li>\n" \
- " <li><a href=\"namespaces.html\">All namespaces</a></li>\n" \
- " <li><a href=\"platform-specific.html\">Platform specifics</a></li>\n" \
- " </ul>\n" \
+ " <div id=\"list001\" class=\"list\">\n" \
+ " <ul id=\"ul001\" >\n" \
+ " <li class=\"defaultLink\"><a href=\"classes.html\">Class index</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"functions.html\">Function index</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"modules.html\">Modules</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"namespaces.html\">Namespaces</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qtglobal.html\">Global stuff</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeelements.html\">QML Elements</a></li>\n" \
+ " </ul> \n" \
" </div>\n" \
- " <div class=\"live\">\n" \
+ " <div id=\"live001\" class=\"live\">\n" \
" </div>\n" \
" </div>\n" \
" <div class=\"box bottombar\" id=\"topics\">\n" \
- " <h2>\n" \
- " API Topics</h2>\n" \
- " <div class=\"list\">\n" \
- " <ul>\n" \
- " <li><a href=\"object.html\">QObject model</a></li>\n" \
- " <li><a href=\"eventsandfilters.html\">Events, signals &amp; slots</a></li>\n" \
- " <li><a href=\"paintsystem.html\">Graphics &amp; Paint system</a></li>\n" \
- " <li><a href=\"declarativeui.html\">Qt Quick</a></li>\n" \
- " <li><a href=\"widgets-and-layouts.html\">Widget style &amp; layout</a></li>\n" \
- " </ul>\n" \
+ " <h2><span></span>\n" \
+ " Qt Topics</h2>\n" \
+ " <div id=\"list002\" class=\"list\">\n" \
+ " <ul id=\"ul002\" >\n" \
+ " <li class=\"defaultLink\"><a href=\"qt-basic-concepts.html\">Basic Concepts</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qt-graphics.html\">Painting & Graphics</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qt-gui-concepts.html\">GUI Components</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"declarativeui.html\">Qt Quick</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"platform-specific.html\">Platform specific</a></li>\n" \
+ " </ul> \n" \
" </div>\n" \
- " <div class=\"live\">\n" \
+ " <div id=\"live002\" class=\"live\">\n" \
" </div>\n" \
" </div>\n" \
" <div class=\"box\" id=\"examples\">\n" \
- " <h2>\n" \
- " API Examples</h2>\n" \
- " <div class=\"list\">\n" \
- " <ul>\n" \
- " <li><a href=\"examples.html\">All examples</a></li>\n" \
- " <li><a href=\"tutorials.html\">All tutorials</a></li>\n" \
- " <li><a href=\"examples.html\">Qt Quick examples</a></li>\n" \
- " <li><a href=\"examples.html\">Desktop examples</a></li>\n" \
- " <li><a href=\"examples.html\">Device examples</a></li>\n" \
- " </ul>\n" \
+ " <h2><span></span>\n" \
+ " Qt Examples</h2>\n" \
+ " <div id=\"list003\" class=\"list\">\n" \
+ " <ul id=\"ul003\">\n" \
+ " <li class=\"defaultLink\"><a href=\"all-examples.html\">Examples</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"tutorials.html\">Tutorials</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"demos.html\">Demos</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeexamples.html\">QML Examples</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</a></li>\n" \
+ " </ul> \n" \
" </div>\n" \
- " <div class=\"live\">\n" \
+ " <div id=\"live003\" class=\"live\">\n" \
" </div>\n" \
" </div>\n" \
" </div>\n" \
@@ -98,13 +99,13 @@ HTML.postpostheader = " </ul>\n" \
" <li id=\"medA\" class=\"t_button active\">A</li>\n" \
" <li id=\"bigA\" class=\"t_button\">A</li>\n" \
" <li id=\"print\" class=\"t_button\"><a href=\"javascript:this.print();\">\n" \
- " <img src=\"images/sep.png\" alt=\"\" /><img id=\"printIcon\" src=\"images/print.png\" alt=\"Print this page\" /></a></li>\n" \
+ " <span>Print</span></a></li>\n" \
" </ul>\n" \
" </div>\n" \
" </div>\n" \
" <div class=\"content\">\n"
-HTML.footer = " </div>\n" \
+HTML.footer = " <!-- /div -->\n" \
" <div class=\"feedback t_button\" onclick=\"\$(\'#feedbackBox\').show();\$(\'#blurpage\').show()\">\n" \
" [+] Documentation Feedback</div>\n" \
" </div>\n" \
@@ -112,6 +113,7 @@ HTML.footer = " </div>\n" \
" <div class=\"ft\">\n" \
" <span></span>\n" \
" </div>\n" \
+ " </div> \n" \
" <div class=\"footer\">\n" \
" <p>\n" \
" <acronym title=\"Copyright\">&copy;</acronym> 2008-2010 Nokia Corporation and/or its\n" \
@@ -126,14 +128,14 @@ HTML.footer = " </div>\n" \
" <a href=\"#\" onclick=\"\$(\'#feedbackBox\').hide();\$(\'#blurpage\').hide()\">X</a>\n" \
" </div>\n" \
" <form action=\"#\">\n" \
- " <textarea id=\"feedbox\" rows=\"5\" cols=\"40\">Please submit you feedback...</textarea>\n" \
- " <input id=\"feedsubmit\" type=\"submit\" onclick=\"\$(\'#feedbackBox\').hide();\$(\'#blurpage\').hide()\"\n" \
- " name=\"feedback\" />\n" \
+ " <p><textarea id=\"feedbox\" rows=\"5\" cols=\"40\">Please submit you feedback...</textarea></p>\n" \
+ " <p><input id=\"feedsubmit\" type=\"submit\" onclick=\"\$(\'#feedbackBox\').hide();\$(\'#blurpage\').hide()\"\n" \
+ " name=\"feedback\" /></p>\n" \
" </form>\n" \
" </div>\n" \
" <div id=\"blurpage\">\n" \
" </div>\n" \
- "<script type=\"text/javascript\">\n" \
+ "<!-- <script type=\"text/javascript\">\n" \
" var _gaq = _gaq || [];\n" \
" _gaq.push([\'_setAccount\', \'UA-4457116-5\']);\n" \
" _gaq.push([\'_trackPageview\']);\n" \
@@ -142,4 +144,4 @@ HTML.footer = " </div>\n" \
" ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';\n" \
" var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);\n" \
" })();\n" \
- "</script>\n"
+ "</script> -->\n"
diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf
index 69ab4e1..59dd855 100644
--- a/tools/qdoc3/test/qt.qdocconf
+++ b/tools/qdoc3/test/qt.qdocconf
@@ -26,45 +26,27 @@ qhp.Qt.indexRoot =
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
qhp.Qt.extraFiles = index.html \
- images/api_examples.png \
- images/api_lookup.png \
- images/api_topics.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ll.png \
- images/bg_l.png \
- images/bg_lr.png \
- images/bg_r.png \
- images/bg_ul_blank.png \
- images/bg_ul.png \
- images/bg_ur_blank.png \
- images/bg_ur.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_dn.png \
- images/bullet_gt.png \
- images/bullet_sq.png \
- images/bullet_up.png \
- images/coloreditorfactoryimage.png \
- images/content_bg.png \
- images/dynamiclayouts-example.png \
- images/feedbackground.png \
- images/form_bg.png \
- images/horBar.png \
- images/page_bg.png \
- images/print.png \
- images/qt_guide.png \
- images/qt_icon.png \
- images/qt-logo.png \
- images/qt_ref_doc.png \
- images/qt_tools.png \
- images/sep.png \
- images/sprites-combined.png \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- scripts/functions.js \
- scripts/jquery.js \
- style/style.css
+ images/bg_l.png \
+ images/bg_l_blank.png \
+ images/bg_r.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/feedbackground.png \
+ images/horBar.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
qhp.Qt.filterAttributes = qt 4.7.0 qtrefdoc
qhp.Qt.customFilters.Qt.name = Qt 4.7.0
diff --git a/tools/qdoc3/test/qt_zh_CN.qdocconf b/tools/qdoc3/test/qt_zh_CN.qdocconf
index a5a65d8..9275b5c 100644
--- a/tools/qdoc3/test/qt_zh_CN.qdocconf
+++ b/tools/qdoc3/test/qt_zh_CN.qdocconf
@@ -32,45 +32,27 @@ qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.0
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
qhp.Qt.extraFiles = index.html \
- images/api_examples.png \
- images/api_lookup.png \
- images/api_topics.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ll.png \
- images/bg_l.png \
- images/bg_lr.png \
- images/bg_r.png \
- images/bg_ul_blank.png \
- images/bg_ul.png \
- images/bg_ur_blank.png \
- images/bg_ur.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_dn.png \
- images/bullet_gt.png \
- images/bullet_sq.png \
- images/bullet_up.png \
- images/coloreditorfactoryimage.png \
- images/content_bg.png \
- images/dynamiclayouts-example.png \
- images/feedbackground.png \
- images/form_bg.png \
- images/horBar.png \
- images/page_bg.png \
- images/print.png \
- images/qt_guide.png \
- images/qt_icon.png \
- images/qt-logo.png \
- images/qt_ref_doc.png \
- images/qt_tools.png \
- images/sep.png \
- images/sprites-combined.png \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- scripts/functions.js \
- scripts/jquery.js \
- style/style.css
+ images/bg_l.png \
+ images/bg_l_blank.png \
+ images/bg_r.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/feedbackground.png \
+ images/horBar.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
language = Cpp
diff --git a/tools/qdoc3/test/style/style.css b/tools/qdoc3/test/style/style.css
index 1ed49fa..9c290f5 100644
--- a/tools/qdoc3/test/style/style.css
+++ b/tools/qdoc3/test/style/style.css
@@ -58,6 +58,19 @@
{
vertical-align: baseline;
}
+ .heading
+ {
+ font: normal 600 16px/1.0 Arial;
+ padding-bottom: 15px;
+ }
+ .subtitle
+ {
+ font-size: 13px;
+ }
+ .small-subtitle
+ {
+ font-size: 13px;
+ }
legend
{
color: #000000;
@@ -73,7 +86,6 @@
{
font-size: 100%;
}
- /* Page style */
html
{
background-color: #e5e5e5;
@@ -92,6 +104,11 @@
{
font-style: italic;
}
+ a
+ {
+ color: #00732f;
+ text-decoration: none;
+ }
.header, .footer, .wrapper
{
min-width: 600px;
@@ -106,23 +123,19 @@
{
padding-left: 216px;
height: 15px;
- background: url(../images/bg_ul.png) no-repeat 0 0;
+ background: url(../images/page.png) no-repeat 0 0;
overflow: hidden;
}
.offline .wrapper .hd
{
- background: url(../images/bg_ul_blank.png) no-repeat 0 0;
+ background: url(../images/page.png) no-repeat 0 -15px;
}
.wrapper .hd span
{
height: 15px;
display: block;
- background: url(../images/bg_ur.png) no-repeat 100% 0;
overflow: hidden;
- }
- .offline .wrapper .hd span
- {
- /* background: url(../images/bg_ur_blank.png) no-repeat 100% 0; */
+ background: url(../images/page.png) no-repeat 100% -30px;
}
.wrapper .bd
{
@@ -137,18 +150,18 @@
{
padding-left: 216px;
height: 15px;
- background: url(../images/bg_ll.png) no-repeat 0 0;
+ background: url(../images/page.png) no-repeat 0 -75px;
overflow: hidden;
}
.offline .wrapper .ft
{
- background: url(../images/bg_ll_blank.png) no-repeat 0 0;
+ background: url(../images/page.png) no-repeat 0 -90px;
}
.wrapper .ft span
{
height: 15px;
display: block;
- background: url(../images/bg_lr.png) no-repeat 100% 0;
+ background: url(../images/page.png) no-repeat 100% -60px;
overflow: hidden;
}
.header, .footer
@@ -182,186 +195,9 @@
width: 302px;
height: 22px;
text-indent: -999em;
- background: url(../images/header.png) no-repeat 0 0;
- }
- /* header elements */
- #nav-topright
- {
- height: 70px;
- }
-
- #nav-topright ul
- {
- list-style-type: none;
- float: right;
- width: 370px;
- margin-top: 11px;
- }
-
- #nav-topright li
- {
- display: inline-block;
- margin-right: 20px;
- float: left;
- }
-
- #nav-topright li.nav-topright-last
- {
- margin-right: 0;
- }
-
- #nav-topright li a
- {
- background: transparent url(../images/sprites-combined.png) no-repeat;
- height: 18px;
- display: block;
- overflow: hidden;
- text-indent: -9999px;
- }
-
- #nav-topright li.nav-topright-home a
- {
- width: 65px;
- background-position: -2px -91px;
- }
-
- #nav-topright li.nav-topright-home a:hover
- {
- background-position: -2px -117px;
- }
-
-
- #nav-topright li.nav-topright-dev a
- {
- width: 30px;
- background-position: -76px -91px;
- }
-
- #nav-topright li.nav-topright-dev a:hover
- {
- background-position: -76px -117px;
- }
-
-
- #nav-topright li.nav-topright-labs a
- {
- width: 40px;
- background-position: -114px -91px;
- }
-
- #nav-topright li.nav-topright-labs a:hover
- {
- background-position: -114px -117px;
- }
-
- #nav-topright li.nav-topright-doc a
- {
- width: 32px;
- background-position: -162px -91px;
- }
-
- #nav-topright li.nav-topright-doc a:hover, #nav-topright li.nav-topright-doc-active a
- {
- background-position: -162px -117px;
- }
-
- #nav-topright li.nav-topright-blog a
- {
- width: 40px;
- background-position: -203px -91px;
- }
-
- #nav-topright li.nav-topright-blog a:hover, #nav-topright li.nav-topright-blog-active a
- {
- background-position: -203px -117px;
- }
-
- #nav-topright li.nav-topright-shop a
- {
- width: 40px;
- background-position: -252px -91px;
- }
-
- #nav-topright li.nav-topright-shop a:hover, #nav-topright li.nav-topright-shop-active a
- {
- background-position: -252px -117px;
- }
-
- #nav-logo
- {
- background: transparent url( "../images/sprites-combined.png" ) no-repeat 0 -225px;
- left: -3px;
- position: absolute;
- width: 75px;
- height: 75px;
- top: 13px;
- }
- #nav-logo a
- {
- width: 75px;
- height: 75px;
- display: block;
- text-indent: -9999px;
- overflow: hidden;
- }
- /* Clearing */
- .header:after, .footer:after, .breadcrumb:after, .wrap .content:after, .group:after
- {
- content: ".";
- display: block;
- height: 0;
- clear: both;
- visibility: hidden;
- }
- /* ^ Clearing */
-
-
-
- .shortCut-topleft-inactive
- {
- padding-left: 3px;
- background: transparent url( "../images/sprites-combined.png" ) no-repeat 0px -58px;
- height: 20px;
- width: 93px;
- }
- .shortCut-topleft-inactive span
- {
- font-variant: normal;
- }
- #shortCut
- {
- padding-top: 10px;
- font-weight: bolder;
- color: #b0adab;
- }
- #shortCut ul
- {
- list-style-type: none;
- float: left;
- width: 347px;
- margin-left: 100px;
- }
- #shortCut li
- {
- display: inline-block;
- margin-right: 25px;
- float: left;
- white-space: nowrap;
- }
- #shortCut li a
- {
- color: #b0adab;
- text-decoration: none;
- }
- #shortCut li a:hover
- {
- color: #44a51c;
- text-decoration: none;
+ background: url(../images/sprites-combined.png) no-repeat -78px -235px;
}
- /* end of header elements */
-
- /* menu element */
.sidebar
{
float: left;
@@ -369,32 +205,32 @@
width: 200px;
font-size: 11px;
}
- .sidebar a
- {
- color: #00732f;
- text-decoration: none;
- }
- .offline .sidebar, .offline .feedback
+
+ .offline .sidebar, .offline .feedback, .offline .t_button
{
display: none;
}
+
.sidebar .searchlabel
{
padding: 0 0 2px 17px;
font: normal bold 11px/1.2 Verdana;
}
+
.sidebar .search
{
padding: 0 15px 0 16px;
}
+
.sidebar .search form
{
- width: 167px;
- height: 21px;
- padding: 2px 0 0 5px;
- background: url(../images/form_bg.png) no-repeat 0 0;
+ background: url(../images/sprites-combined.png) no-repeat -6px -348px;
+ height:21px;
+ padding:2px 0 0 5px;
+ width:167px;
}
- .sidebar .search form fieldset input#searchstring
+
+ .sidebar .search form input#pageType
{
width: 158px;
height: 19px;
@@ -403,32 +239,62 @@
outline: none;
font: 13px/1.2 Verdana;
}
+
.sidebar .box
{
padding: 17px 15px 5px 16px;
}
+
.sidebar .box .first
{
background-image: none;
}
+
.sidebar .box h2
{
font: normal 18px/1.2 Arial;
- padding: 15px 0 0 40px;
+ padding: 0;
min-height: 32px;
}
+ .sidebar .box h2 span
+ {
+ overflow: hidden;
+ display: inline-block;
+ }
.sidebar .box#lookup h2
{
- background: url(../images/api_lookup.png) no-repeat 0 0;
+ background-image: none;
+ }
+ .sidebar #lookup.box h2 span
+ {
+ background: url(../images/sprites-combined.png) no-repeat -6px -311px;
+ width: 27px;
+ height: 35px;
+ margin-right: 13px;
}
.sidebar .box#topics h2
{
- background: url(../images/api_topics.png) no-repeat 0 0;
+ background-image: none;
+ }
+ .sidebar #topics.box h2 span
+ {
+ background: url(../images/sprites-combined.png) no-repeat -94px -311px;
+ width: 27px;
+ height: 32px;
+ margin-right: 13px;
}
.sidebar .box#examples h2
{
- background: url(../images/api_examples.png) no-repeat 0 0;
+ background-image: none;
+ }
+ .sidebar #examples.box h2 span
+ {
+ background: url(../images/sprites-combined.png) no-repeat -48px -311px;
+ width: 30px;
+ height: 31px;
+ margin-right: 9px;
}
+
.sidebar .box .list
{
display: block;
@@ -443,6 +309,9 @@
{
text-decoration: underline;
}
+ .sidebar .box ul
+ {
+ }
.sidebar .box ul li
{
padding-left: 12px;
@@ -453,23 +322,20 @@
{
background: url(../images/box_bg.png) repeat-x 0 bottom;
}
- /* content elements */
.wrap
{
- overflow: hidden;
+ margin: 0 5px 0 208px;
+ overflow: visible;
}
.offline .wrap
{
margin: 0 5px 0 5px;
}
- /* tool bar */
.wrap .toolbar
{
background-color: #fafafa;
border-bottom: 1px solid #d1d1d1;
- height: 20px;
- margin-left: 3px;
- margin-right: 5px;
+ height: 20px;
position: relative;
}
.wrap .toolbar .toolblock
@@ -487,7 +353,7 @@
{
padding: 0 0 10px 21px;
right: 5px;
- vertical-align: top;
+ vertical-align: middle;
overflow: hidden;
}
.wrap .toolbar .toolbuttons .active
@@ -507,32 +373,56 @@
font-weight: bold;
color: #B0ADAB;
}
- #smallA
+
+ .toolbuttons #print
+ {
+ border-left: 1px solid #c5c4c4;
+ margin-top: 0;
+ padding-left: 7px;
+ text-indent: 0;
+ }
+ .toolbuttons #print a
+ {
+ width: 16px;
+ height: 16px;
+ }
+
+ .toolbuttons #print a span
+ {
+ width: 16px;
+ height: 16px;
+ text-indent: -999em;
+ display: block;
+ overflow: hidden;
+ background: url(../images/sprites-combined.png) no-repeat -137px -311px;
+ }
+
+ .toolbuttons #smallA
{
font-size: 10pt;
}
- #medA
+ .toolbuttons #medA
{
font-size: 12pt;
}
- #bigA
+ .toolbuttons #bigA
{
font-size: 14pt;
+ margin-right: 7px;
}
+
#smallA:hover, #medA:hover, #bigA:hover
{
color: #00732F;
}
- #print
+
+ .offline .wrap .breadcrumb
{
- font-size: 14pt;
- line-height: 20pt;
}
- #printIcon
+
+ .wrap .breadcrumb ul
{
- margin-left: 5px;
}
- /* bread crumbs */
.wrap .breadcrumb ul li
{
float: left;
@@ -545,6 +435,10 @@
{
font-weight: normal;
}
+ .wrap .breadcrumb ul li a
+ {
+ color: #363534;
+ }
.wrap .breadcrumb ul li.first
{
background-image: none;
@@ -554,29 +448,29 @@
.wrap .content
{
padding: 30px;
- position: relative;
}
- /* text elements */
- .heading
+
+ .wrap .content li
{
- font: normal 600 16px/1.0 Arial;
- padding-bottom: 15px;
+ padding-left: 12px;
+ background: url(../images/bullet_sq.png) no-repeat 0 5px;
+ font: normal 400 10pt/1 Verdana;
+ color: #44a51c;
+ margin-bottom: 10px;
}
-
- .subtitle
+ .content li:hover
{
- font-size: 13px;
+ text-decoration: underline;
}
- .small-subtitle
+ .offline .wrap .content
{
- font-size: 13px;
+ padding-top: 15px;
}
-
+
.wrap .content h1
{
font: 600 18px/1.2 Arial;
- padding-bottom: 15px;
}
.wrap .content h2
{
@@ -588,26 +482,13 @@
}
.wrap .content p
{
- line-height:20px;
- padding:10px 5px 10px 5px;
+ line-height: 20px;
+ padding: 10px 5px 10px 5px;
}
.wrap .content ul
{
padding-left: 25px;
}
- .wrap .content li
- {
- padding-left: 12px;
- background: url(../images/bullet_sq.png) no-repeat 0 5px;
- font: normal 400 10pt/1 Verdana;
- margin-bottom: 10px;
- line-height: 14px;
- }
- a
- {
- color: #00732F;
- text-decoration: none;
- }
a:hover
{
color: #4c0033;
@@ -618,10 +499,6 @@
color: #4c0033;
text-decoration: none;
}
- .offline .wrap .content
- {
- padding-top: 15px;
- }
.footer
{
min-height: 100px;
@@ -629,11 +506,15 @@
font: normal 9px/1 Verdana;
text-align: center;
padding-top: 40px;
+ background-color: #E6E7E8;
+ margin: 0;
}
.feedback
{
- float: right;
- padding-right: 10px;
+ float: none;
+ position: absolute;
+ right: 15px;
+ bottom: 10px;
font: normal 8px/1 Verdana;
color: #B0ADAB;
}
@@ -644,37 +525,223 @@
color: #00732F;
text-decoration: underline;
}
+ .header:after, .footer:after, .breadcrumb:after, .wrap .content:after, .group:after
+ {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
+ #nav-topright
+ {
+ height: 70px;
+ }
+
+ #nav-topright ul
+ {
+ list-style-type: none;
+ float: right;
+ width: 370px;
+ margin-top: 11px;
+ }
+
+ #nav-topright li
+ {
+ display: inline-block;
+ margin-right: 20px;
+ float: left;
+ }
+
+ #nav-topright li.nav-topright-last
+ {
+ margin-right: 0;
+ }
+
+ #nav-topright li a
+ {
+ background: transparent url(../images/sprites-combined.png) no-repeat;
+ height: 18px;
+ display: block;
+ overflow: hidden;
+ text-indent: -9999px;
+ }
+
+ #nav-topright li.nav-topright-home a
+ {
+ width: 65px;
+ background-position: -2px -91px;
+ }
+
+ #nav-topright li.nav-topright-home a:hover
+ {
+ background-position: -2px -117px;
+ }
+
+
+ #nav-topright li.nav-topright-dev a
+ {
+ width: 30px;
+ background-position: -76px -91px;
+ }
+
+ #nav-topright li.nav-topright-dev a:hover
+ {
+ background-position: -76px -117px;
+ }
+
+
+ #nav-topright li.nav-topright-labs a
+ {
+ width: 40px;
+ background-position: -114px -91px;
+ }
+
+ #nav-topright li.nav-topright-labs a:hover
+ {
+ background-position: -114px -117px;
+ }
+
+ #nav-topright li.nav-topright-doc a
+ {
+ width: 32px;
+ background-position: -162px -91px;
+ }
+
+ #nav-topright li.nav-topright-doc a:hover, #nav-topright li.nav-topright-doc-active a
+ {
+ background-position: -162px -117px;
+ }
+
+ #nav-topright li.nav-topright-blog a
+ {
+ width: 40px;
+ background-position: -203px -91px;
+ }
+
+ #nav-topright li.nav-topright-blog a:hover, #nav-topright li.nav-topright-blog-active a
+ {
+ background-position: -203px -117px;
+ }
+
+ #nav-topright li.nav-topright-shop a
+ {
+ width: 40px;
+ background-position: -252px -91px;
+ }
+
+ #nav-topright li.nav-topright-shop a:hover, #nav-topright li.nav-topright-shop-active a
+ {
+ background-position: -252px -117px;
+ }
+
+ #nav-logo
+ {
+ background: transparent url(../images/sprites-combined.png ) no-repeat 0 -225px;
+ left: -3px;
+ position: absolute;
+ width: 75px;
+ height: 75px;
+ top: 13px;
+ }
+ #nav-logo a
+ {
+ width: 75px;
+ height: 75px;
+ display: block;
+ text-indent: -9999px;
+ overflow: hidden;
+ }
+
+
+ .shortCut-topleft-inactive
+ {
+ padding-left: 3px;
+ background: transparent url( ../images/sprites-combined.png) no-repeat 0px -58px;
+ height: 20px;
+ width: 47px;
+ }
+ .shortCut-topleft-inactive span
+ {
+ font-variant: normal;
+ }
+ #shortCut
+ {
+ padding-top: 10px;
+ font-weight: bolder;
+ color: #b0adab;
+ }
+ #shortCut ul
+ {
+ list-style-type: none;
+ float: left;
+ width: 347px;
+ margin-left: 100px;
+ }
+ #shortCut li
+ {
+ display: inline-block;
+ margin-right: 25px;
+ float: left;
+ white-space: nowrap;
+ }
+ #shortCut li a
+ {
+ color: #b0adab;
+ }
+ #shortCut li a:hover
+ {
+ color: #44a51c;
+ }
+
hr
{
- background-color: #e0e0e0;
+ background-color: #E6E6E6;
+ border: 1px solid #E6E6E6;
height: 1px;
width: 100%;
text-align: left;
margin: 15px 0px 15px 0px;
}
-
+
.content .alignedsummary
{
margin: 15px;
}
- /* tables */
+ pre
+ {
+ border: 1px solid #DDDDDD;
+ margin: 0 20px 10px 10px;
+ padding: 20px 15px 20px 20px;
+ overflow-x: auto;
+ }
table, pre
{
-moz-border-radius: 7px 7px 7px 7px;
background-color: #F6F6F6;
border: 1px solid #E6E6E6;
border-collapse: separate;
- font-size: 11px;
- min-width: 395px;
+ font-size: 11px;
+ /*min-width: 395px;*/
margin-bottom: 25px;
+ display: inline-block;
+ }
+ thead
+ {
+ margin-top: 5px;
+ }
+ th
+ {
+ padding: 3px 15px 3px 15px;
+ }
+ td
+ {
+ padding: 3px 15px 3px 20px;
}
- thead{margin-top: 5px;}
- th{ padding: 3px 15px 3px 15px;}
- td{padding: 3px 15px 3px 20px;}
table tr.odd
{
border-left: 1px solid #E6E6E6;
- background-color: #F6F6F6;
+ background-color: #F6F6F6;
color: #66666E;
}
table tr.even
@@ -685,12 +752,13 @@
}
table tr.odd:hover
{
- background-color: #E6E6E6;
+ background-color: #E6E6E6;
}
table tr.even:hover
{
background-color: #E6E6E6;
}
+
span.comment
{
color: #8B0000;
@@ -700,15 +768,7 @@
{
color: #254117;
}
- pre
- {
- -moz-border-radius:7px 7px 7px 7px;
- background-color:#F6F6F6;
- border:1px solid #DDDDDD;
- margin:0 20px 10px 10px;
- padding:20px 15px 20px 20px;
- overflow-x:auto;
- }
+
.qmltype
{
text-align: center;
@@ -719,13 +779,28 @@
float: right;
color: #254117;
}
+
+ .qmldefault
+ {
+ float: right;
+ color: red;
+ }
+
+ .qmldoc
+ {
+ }
+
+ *.qmlitem p
+ {
+ }
+
#feedbackBox
{
- display:none;
- -moz-border-radius:7px 7px 7px 7px;
- border:1px solid #DDDDDD;
- position:fixed;
- top:100px;
+ display: none;
+ -moz-border-radius: 7px 7px 7px 7px;
+ border: 1px solid #DDDDDD;
+ position: fixed;
+ top: 100px;
left: 33%;
height: 190px;
width: 400px;
@@ -735,27 +810,27 @@
}
#feedcloseX a
{
- display:inline;
+ display: inline;
padding: 5px 5px 0 0;
- margin-bottom:3px;
+ margin-bottom: 3px;
color: #363534;
- font-weight:600;
+ font-weight: 600;
float: right;
text-decoration: none;
}
+
#feedbox
- /* here */
{
- display:inline;
+ display: inline;
width: 370px;
height: 120px;
- margin:0px 25px 10px 15px;
+ margin: 0px 25px 10px 15px;
}
#feedsubmit
{
- display:inline;
- float:right;
- margin:4px 32px 0 0;
+ display: inline;
+ float: right;
+ margin: 4px 32px 0 0;
}
#blurpage
{
@@ -771,141 +846,172 @@
}
.toc
{
- float: right;
- -moz-border-radius:7px 7px 7px 7px;
- background-color:#F6F6F6;
- border:1px solid #DDDDDD;
- margin:0 20px 10px 10px;
- padding:20px 15px 20px 20px;
+ float: right;
+ -moz-border-radius: 7px 7px 7px 7px;
+ background-color: #F6F6F6;
+ border: 1px solid #DDDDDD;
+ margin: 0 20px 10px 10px;
+ padding: 20px 15px 20px 20px;
height: auto;
width: 200px;
}
- .toc ul
+ .toc h3
{
- float: left;
- padding: 15px;
-
+ font: 600 12px/1.2 Arial;
+ }
+
+ .wrap .content .toc ul
+ {
+ padding-left: 0px;
+ }
+
+
+ .wrap .content .toc .level2
+ {
+ margin-left: 15px;
}
-
.content .toc li
{
- font: normal 12px/1.2 Verdana;
+ font: normal 10px/1.2 Verdana;
background: url(../images/bullet_dn.png) no-repeat 0 5px;
}
- .relpage
+ .relpage
{
-moz-border-radius: 7px 7px 7px 7px;
border: 1px solid #DDDDDD;
padding: 25px 25px;
- clear:both;
+ clear: both;
}
.relpage ul
{
float: none;
padding: 15px;
}
- .content .relpage li
+ .content .relpage li
{
font: normal 11px/1.2 Verdana;
}
- /* edit */
h3.fn, span.fn
{
background-color: #F6F6F6;
border-width: 1px;
border-style: solid;
border-color: #E6E6E6;
- font-weight: bold;
- /* padding: 6px 0px 6px 10px;*/
- /* margin: 42px 0px 0px 0px;*/
+ font-weight: bold;
}
- /* edit */
- .indexbox
- {
- width: 100%;
- }
- .content .indexboxcont li
- {
- font: normal 600 13px/1 Verdana;
- }
- /* .indexbox a
- {
- color: #00732f;
- text-decoration: none;
- }*/
- .indexbox a:hover, .indexbox a:visited:hover
- {
- color: #4c0033;
- text-decoration: underline;
- }
- .indexbox a:visited
+ /* start index box */
+ .indexbox
{
- color: #00732f;
- text-decoration: none;
+ width: 100%;
+ display:inline-block;
}
.indexboxcont
{
display: block;
+ /* overflow: hidden;*/
}
.indexboxbar
{
- background: transparent url( "../images/horBar.png" ) repeat-x left bottom;
+ background: transparent url(../images/horBar.png ) repeat-x left bottom;
margin-bottom: 25px;
+ /* background-image: none;
+ border-bottom: 1px solid #e2e2e2;*/
}
.indexboxcont .section
{
- display: inline-block;
+ display: inline-block;
width: 49%;
*width:42%;
_width:42%;
padding:0 2% 0 1%;
vertical-align:top;
+
}
.indexboxcont .indexIcon
- {
+ {
width: 11%;
*width:18%;
_width:18%;
overflow:hidden;
+
}
.indexboxcont .section p
- {
+ {
padding-top: 20px;
padding-bottom: 20px;
}
-
.indexboxcont .sectionlist
{
display: inline-block;
width: 33%;
- margin-right: -2px;
- vertical-align: top;
padding: 0;
}
- .tricol
- {
-
- }
.indexboxcont .sectionlist ul
{
- padding-left: 15px;
margin-bottom: 20px;
}
-/*
+
.indexboxcont .sectionlist ul li
{
line-height: 12px;
}
-*/
+
+ .content .indexboxcont li
+ {
+ font: normal 600 13px/1 Verdana;
+ }
+
+ .indexbox a:hover, .indexbox a:visited:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+
+ .indexbox a:visited
+ {
+ color: #00732f;
+ text-decoration: none;
+ }
+
+ .indexboxcont:after
+ {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
+
+ .indexbox .indexIcon span
+ {
+ display: block;
+ }
+
+ .indexbox.guide .indexIcon span
+ {
+ width: 96px;
+ height: 137px;
+ background: url(../images/sprites-combined.png) no-repeat -5px -376px;
+ padding: 0;
+ }
+
+ .indexbox.tools .indexIcon span
+ {
+ width: 115px;
+ height: 137px;
+ background: url(../images/sprites-combined.png) no-repeat -111px -376px;
+ padding: 0;
+ }
+
.lastcol
{
display: inline-block;
@@ -916,12 +1022,9 @@
.tricol .lastcol
{
- margin-left:-6px;
+ margin-left: -6px;
}
-
- /*.toc ul*/
-
- /* end page elements */
+ /* end indexbox */
}
/* end of screen media */
@@ -929,7 +1032,7 @@
@media print
{
- .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft
+ input, textarea, .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft
{
display: none;
background: none;