summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@nokia.com>2010-06-01 17:40:53 (GMT)
committerThiago Macieira <thiago.macieira@nokia.com>2010-06-01 17:40:53 (GMT)
commit5c6e671c8cbab281af4685d3698790ab566ed2f2 (patch)
tree0f3e15d12cf984d8f49c7adfaf056063cc726803 /src
parent7165826d2e9ff77951a289c62746d6c87f725139 (diff)
parent0b034e816994f3c6ad5ba5e0e9f7c0c60ab9440d (diff)
downloadQt-5c6e671c8cbab281af4685d3698790ab566ed2f2.zip
Qt-5c6e671c8cbab281af4685d3698790ab566ed2f2.tar.gz
Qt-5c6e671c8cbab281af4685d3698790ab566ed2f2.tar.bz2
Merge remote branch 'origin/4.7' into qt-master-from-4.7
Diffstat (limited to 'src')
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-hangul.c2
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-shaper.h36
-rw-r--r--src/3rdparty/webkit/.tag2
-rw-r--r--src/3rdparty/webkit/ChangeLog12
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog236
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.pro2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/page/ChromeClient.h6
-rw-r--r--src/3rdparty/webkit/WebCore/page/EventHandler.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/page/EventHandler.h4
-rw-r--r--src/3rdparty/webkit/WebCore/page/Frame.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/page/Frame.h1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStore.cpp61
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStore.h21
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStoreClient.h1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h2
-rw-r--r--src/3rdparty/webkit/WebKit.pri7
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/DerivedSources.pro6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp9
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp32
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp161
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp26
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h3
-rw-r--r--src/3rdparty/webkit/WebKit/qt/ChangeLog230
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp9
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp9
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/docs.pri2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/symbian/bwins/QtWebKitu.def5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def54
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp37
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp129
-rw-r--r--src/activeqt/control/control.pro2
-rw-r--r--src/corelib/arch/qatomic_alpha.h12
-rw-r--r--src/corelib/corelib.pro1
-rw-r--r--src/corelib/global/qfeatures.h10
-rw-r--r--src/corelib/global/qfeatures.txt2
-rw-r--r--src/corelib/global/qglobal.h3
-rw-r--r--src/corelib/io/qdebug.h23
-rw-r--r--src/corelib/kernel/qabstractitemmodel.cpp100
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian.cpp46
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian_p.h20
-rw-r--r--src/corelib/kernel/qmetaobject.cpp7
-rw-r--r--src/corelib/tools/qchar.h6
-rw-r--r--src/corelib/tools/qlocale.cpp1
-rw-r--r--src/corelib/tools/qlocale.h6
-rw-r--r--src/corelib/tools/qlocale_symbian.cpp122
-rw-r--r--src/corelib/tools/qvarlengtharray.h15
-rw-r--r--src/corelib/xml/qxmlstream.cpp5
-rw-r--r--src/dbus/qdbusabstractinterface.cpp5
-rw-r--r--src/dbus/qdbusconnection.cpp8
-rw-r--r--src/dbus/qdbusconnection_p.h1
-rw-r--r--src/dbus/qdbusintegrator.cpp46
-rw-r--r--src/dbus/qdbuspendingcall.cpp35
-rw-r--r--src/dbus/qdbuspendingcall_p.h35
-rw-r--r--src/dbus/qdbuspendingreply.cpp3
-rw-r--r--src/declarative/QmlChanges.txt6
-rw-r--r--src/declarative/debugger/debugger.pri6
-rw-r--r--src/declarative/debugger/qdeclarativedebugservice.cpp11
-rw-r--r--src/declarative/debugger/qdeclarativedebugtrace.cpp110
-rw-r--r--src/declarative/debugger/qdeclarativedebugtrace_p.h101
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanchors.cpp34
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanchors_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable.cpp30
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable_p.h5
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable_p_p.h6
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.cpp61
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem_p.h11
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp6
-rw-r--r--src/declarative/graphicsitems/qdeclarativelayoutitem.cpp11
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp6
-rw-r--r--src/declarative/graphicsitems/qdeclarativepainteditem.cpp17
-rw-r--r--src/declarative/graphicsitems/qdeclarativepainteditem_p.h1
-rw-r--r--src/declarative/graphicsitems/qdeclarativepath.cpp5
-rw-r--r--src/declarative/graphicsitems/qdeclarativepath_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativepathview.cpp25
-rw-r--r--src/declarative/graphicsitems/qdeclarativepathview_p.h1
-rw-r--r--src/declarative/graphicsitems/qdeclarativepathview_p_p.h27
-rw-r--r--src/declarative/graphicsitems/qdeclarativerectangle.cpp26
-rw-r--r--src/declarative/graphicsitems/qdeclarativerepeater.cpp14
-rw-r--r--src/declarative/graphicsitems/qdeclarativescalegrid.cpp5
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext.cpp53
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext_p.h9
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit.cpp412
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit_p.h39
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit_p_p.h8
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp201
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput_p.h33
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput_p_p.h4
-rw-r--r--src/declarative/qml/qdeclarativecompiler.cpp4
-rw-r--r--src/declarative/qml/qdeclarativecomponent.cpp9
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp126
-rw-r--r--src/declarative/qml/qdeclarativeengine_p.h3
-rw-r--r--src/declarative/qml/qdeclarativeinfo.h2
-rw-r--r--src/declarative/qml/qdeclarativeinstruction.cpp5
-rw-r--r--src/declarative/qml/qdeclarativestringconverters.cpp4
-rw-r--r--src/declarative/qml/qdeclarativestringconverters_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeworkerscript.cpp1
-rw-r--r--src/declarative/util/qdeclarativepropertychanges.cpp17
-rw-r--r--src/declarative/util/qdeclarativestate.cpp2
-rw-r--r--src/declarative/util/qdeclarativestateoperations.cpp4
-rw-r--r--src/declarative/util/qdeclarativetransitionmanager.cpp2
-rw-r--r--src/declarative/util/qdeclarativeview.cpp100
-rw-r--r--src/declarative/util/qdeclarativexmllistmodel.cpp33
-rw-r--r--src/gui/egl/qegl.cpp37
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp30
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp18
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp2
-rw-r--r--src/gui/gui.pro1
-rw-r--r--src/gui/image/qimage.cpp4
-rw-r--r--src/gui/image/qpixmap.cpp44
-rw-r--r--src/gui/image/qpixmap.h2
-rw-r--r--src/gui/image/qpixmapcache_p.h5
-rw-r--r--src/gui/image/qpixmapdata_p.h5
-rw-r--r--src/gui/inputmethod/qcoefepinputcontext_s60.cpp41
-rw-r--r--src/gui/itemviews/qitemdelegate.cpp1
-rw-r--r--src/gui/itemviews/qlistwidget.cpp4
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.cpp2
-rw-r--r--src/gui/itemviews/qstandarditemmodel.cpp4
-rw-r--r--src/gui/itemviews/qtablewidget.cpp4
-rw-r--r--src/gui/itemviews/qtreewidget.cpp4
-rw-r--r--src/gui/kernel/qapplication.cpp52
-rw-r--r--src/gui/kernel/qapplication_p.h4
-rw-r--r--src/gui/kernel/qapplication_s60.cpp118
-rw-r--r--src/gui/kernel/qdnd_x11.cpp21
-rw-r--r--src/gui/kernel/qdrag.cpp4
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac_p.h5
-rw-r--r--src/gui/kernel/qt_s60_p.h2
-rw-r--r--src/gui/kernel/qwidget.cpp17
-rw-r--r--src/gui/math3d/qgenericmatrix.cpp4
-rw-r--r--src/gui/math3d/qmatrix4x4.cpp4
-rw-r--r--src/gui/math3d/qquaternion.cpp4
-rw-r--r--src/gui/math3d/qvector2d.cpp4
-rw-r--r--src/gui/math3d/qvector3d.cpp4
-rw-r--r--src/gui/math3d/qvector4d.cpp4
-rw-r--r--src/gui/painting/painting.pri2
-rw-r--r--src/gui/painting/qbrush.cpp8
-rw-r--r--src/gui/painting/qgraphicssystem_runtime.cpp487
-rw-r--r--src/gui/painting/qgraphicssystem_runtime_p.h197
-rw-r--r--src/gui/painting/qgraphicssystemfactory.cpp7
-rw-r--r--src/gui/painting/qpaintdevice.qdoc3
-rw-r--r--src/gui/painting/qpaintengine.cpp2
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp20
-rw-r--r--src/gui/painting/qpen.cpp6
-rw-r--r--src/gui/painting/qtransform.cpp10
-rw-r--r--src/gui/painting/qwindowsurface.cpp7
-rw-r--r--src/gui/painting/qwindowsurface_s60.cpp31
-rw-r--r--src/gui/s60framework/qs60mainappui.cpp8
-rw-r--r--src/gui/styles/qgtkstyle.cpp2
-rw-r--r--src/gui/styles/qgtkstyle_p.cpp2
-rw-r--r--src/gui/styles/qmacstyle_mac.mm210
-rw-r--r--src/gui/styles/qmacstyle_mac_p.h239
-rw-r--r--src/gui/styles/qmacstylepixmaps_mac_p.h5
-rw-r--r--src/gui/styles/qstyle.cpp2
-rw-r--r--src/gui/styles/styles.pri3
-rw-r--r--src/gui/text/qstatictext.cpp163
-rw-r--r--src/gui/text/qstatictext_p.h19
-rw-r--r--src/gui/text/qtextlayout.cpp3
-rw-r--r--src/gui/widgets/qpushbutton.cpp35
-rw-r--r--src/gui/widgets/qpushbutton.h3
-rw-r--r--src/gui/widgets/qpushbutton_p.h3
-rw-r--r--src/imports/folderlistmodel/plugin.cpp2
-rw-r--r--src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp4
-rw-r--r--src/imports/folderlistmodel/qdeclarativefolderlistmodel.h4
-rw-r--r--src/imports/gestures/gestures.pro4
-rw-r--r--src/imports/gestures/plugin.cpp2
-rw-r--r--src/imports/gestures/qmldir2
-rw-r--r--src/imports/particles/particles.cpp2
-rw-r--r--src/imports/particles/particles.pro4
-rw-r--r--src/imports/particles/qmldir2
-rw-r--r--src/imports/webkit/plugin.cpp2
-rw-r--r--src/imports/webkit/qdeclarativewebview.cpp21
-rw-r--r--src/imports/webkit/qmldir2
-rw-r--r--src/imports/webkit/webkit.pro4
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo.cpp62
-rw-r--r--src/multimedia/audio/qaudiooutput.cpp11
-rw-r--r--src/multimedia/multimedia.pro3
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel_p.h2
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp26
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp10
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp2
-rw-r--r--src/opengl/opengl.pro1
-rw-r--r--src/opengl/qgl.cpp51
-rw-r--r--src/opengl/qgl_p.h36
-rw-r--r--src/opengl/qglbuffer.cpp92
-rw-r--r--src/opengl/qglbuffer.h9
-rw-r--r--src/opengl/qpaintengine_opengl.cpp2
-rw-r--r--src/plugins/bearer/corewlan/qcorewlanengine.h6
-rw-r--r--src/plugins/bearer/corewlan/qcorewlanengine.mm102
-rw-r--r--src/plugins/bearer/nativewifi/qnativewifiengine.cpp91
-rw-r--r--src/plugins/bearer/nativewifi/qnativewifiengine.h5
-rw-r--r--src/plugins/bearer/symbian/qnetworksession_impl.cpp102
-rw-r--r--src/plugins/bearer/symbian/qnetworksession_impl.h4
-rw-r--r--src/plugins/bearer/symbian/symbianengine.cpp274
-rw-r--r--src/plugins/bearer/symbian/symbianengine.h24
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp25
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h2
-rw-r--r--src/s60installs/bwins/QtDeclarativeu.def106
-rw-r--r--src/s60installs/bwins/QtGuiu.def509
-rw-r--r--src/s60installs/eabi/QtCoreu.def108
-rw-r--r--src/s60installs/eabi/QtDeclarativeu.def99
-rw-r--r--src/s60installs/eabi/QtGuiu.def408
-rw-r--r--src/s60installs/eabi/QtNetworku.def346
-rw-r--r--src/s60installs/eabi/QtOpenVGu.def10
-rw-r--r--src/script/api/qscriptcontext.cpp1
-rw-r--r--src/src.pro16
-rw-r--r--src/testlib/qbenchmark.cpp2
-rw-r--r--src/testlib/qbenchmarkmeasurement.cpp7
-rw-r--r--src/testlib/qbenchmarkmeasurement_p.h1
-rw-r--r--src/tools/tools.pro16
221 files changed, 5707 insertions, 2224 deletions
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-hangul.c b/src/3rdparty/harfbuzz/src/harfbuzz-hangul.c
index a819dac..6f89ed6 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-hangul.c
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-hangul.c
@@ -130,7 +130,7 @@ static int hangul_nextSyllableBoundary(const HB_UChar16 *s, int start, int end)
static const HB_OpenTypeFeature hangul_features [] = {
{ HB_MAKE_TAG('c', 'c', 'm', 'p'), CcmpProperty },
{ HB_MAKE_TAG('l', 'j', 'm', 'o'), CcmpProperty },
- { HB_MAKE_TAG('j', 'j', 'm', 'o'), CcmpProperty },
+ { HB_MAKE_TAG('v', 'j', 'm', 'o'), CcmpProperty },
{ HB_MAKE_TAG('t', 'j', 'm', 'o'), CcmpProperty },
{ 0, 0 }
};
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h
index f7c7714..470e27b 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h
@@ -34,6 +34,18 @@
HB_BEGIN_HEADER
+/*
+ using anything else than signed or unsigned for bitfields in C is non standard,
+ but accepted by almost all compilers. And it gives a significant reduction in
+ memory consumption as HB_CharAttributes and HB_GlyphAttributes will not have
+ a 4 byte alignment
+*/
+#ifdef __xlC__
+typedef unsigned hb_bitfield;
+#else
+typedef hb_uint8 hb_bitfield;
+#endif
+
typedef enum {
HB_Script_Common,
HB_Script_Greek,
@@ -123,12 +135,12 @@ typedef enum {
typedef struct {
- /*HB_LineBreakType*/ unsigned lineBreakType :2;
- /*HB_Bool*/ unsigned whiteSpace :1; /* A unicode whitespace character, except NBSP, ZWNBSP */
- /*HB_Bool*/ unsigned charStop :1; /* Valid cursor position (for left/right arrow) */
- /*HB_Bool*/ unsigned wordBoundary :1;
- /*HB_Bool*/ unsigned sentenceBoundary :1;
- unsigned unused :2;
+ /*HB_LineBreakType*/ hb_bitfield lineBreakType :2;
+ /*HB_Bool*/ hb_bitfield whiteSpace :1; /* A unicode whitespace character, except NBSP, ZWNBSP */
+ /*HB_Bool*/ hb_bitfield charStop :1; /* Valid cursor position (for left/right arrow) */
+ /*HB_Bool*/ hb_bitfield wordBoundary :1;
+ /*HB_Bool*/ hb_bitfield sentenceBoundary :1;
+ hb_bitfield unused :2;
} HB_CharAttributes;
void HB_GetCharAttributes(const HB_UChar16 *string, hb_uint32 stringLength,
@@ -181,12 +193,12 @@ typedef enum {
* it like that. If this is a problem please tell Trolltech :)
*/
typedef struct {
- unsigned justification :4; /* Justification class */
- unsigned clusterStart :1; /* First glyph of representation of cluster */
- unsigned mark :1; /* needs to be positioned around base char */
- unsigned zeroWidth :1; /* ZWJ, ZWNJ etc, with no width */
- unsigned dontPrint :1;
- unsigned combiningClass :8;
+ hb_bitfield justification :4; /* Justification class */
+ hb_bitfield clusterStart :1; /* First glyph of representation of cluster */
+ hb_bitfield mark :1; /* needs to be positioned around base char */
+ hb_bitfield zeroWidth :1; /* ZWJ, ZWNJ etc, with no width */
+ hb_bitfield dontPrint :1;
+ hb_bitfield combiningClass :8;
} HB_GlyphAttributes;
typedef struct HB_FaceRec_ {
diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag
index 1973377..8cb0e53 100644
--- a/src/3rdparty/webkit/.tag
+++ b/src/3rdparty/webkit/.tag
@@ -1 +1 @@
-807157e42add842605ec67d9363dd3f1861748ca
+f59a934694947496cedecc5256a71bff60c43c4c
diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog
index 8f9c7ac..c2862fd 100644
--- a/src/3rdparty/webkit/ChangeLog
+++ b/src/3rdparty/webkit/ChangeLog
@@ -1,3 +1,15 @@
+2010-05-04 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Unreviewed, build fix for Symbian.
+
+ [Symbian] Symbian builds does not support shadow builds
+
+ Revision r54715 broke the Symbian build. For Symbian
+ the include directory is generated in the root of the source tree.
+ This patch sets the INCLUDEPATH accordingly for Symbian.
+
+ * WebKit.pri:
+
2010-05-14 Simon Hausmann <simon.hausmann@nokia.com>
Rubber-stamped by Antti Koivisto.
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 79581d1..fb78e36 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -4,4 +4,4 @@ This is a snapshot of the Qt port of WebKit from
and has the sha1 checksum
- cacbdf18fc917122834042d77a9164a490aafde4
+ c58dc2f491a824ac56e31c440fcf7fe16dab09c4
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index 481b416..ff7d214 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,239 @@
+2010-05-31 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Escape backslashes in the .pro files
+
+ qmake in Qt 4.7 warns about unescaped backspaces and deprecates them.
+
+ * WebCore.pro:
+
+2010-05-28 Antti Koivisto <koivisto@iki.fi>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=39874
+ [Qt] Make tiled backing store more configurable
+
+ Make tile size, tile creation delay and tiling area dynamically configurable.
+
+ * platform/graphics/TiledBackingStore.cpp:
+ (WebCore::TiledBackingStore::TiledBackingStore):
+ (WebCore::TiledBackingStore::setTileSize):
+ (WebCore::TiledBackingStore::setTileCreationDelay):
+ (WebCore::TiledBackingStore::setKeepAndCoverAreaMultipliers):
+ (WebCore::TiledBackingStore::createTiles):
+ * platform/graphics/TiledBackingStore.h:
+ (WebCore::TiledBackingStore::tileSize):
+ (WebCore::TiledBackingStore::tileCreationDelay):
+ (WebCore::TiledBackingStore::getKeepAndCoverAreaMultipliers):
+
+2010-05-28 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] REGRESSION(r59837): Incorrect clipping of TransparencyLayers
+ https://bugs.webkit.org/show_bug.cgi?id=39784
+
+ Move coordinate transformation from TransparencyLayer to clipToImageBuffer()
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::TransparencyLayer::TransparencyLayer):
+ (WebCore::GraphicsContext::clipToImageBuffer):
+
+2010-05-13 Antti Koivisto <koivisto@iki.fi>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=39063
+ [Qt] Tiled backing store checker pattern does not paint correctly when scaling factor is not 1
+
+ Use the dirty rect that has been adjusted for scaling instead of the original one.
+
+ * platform/graphics/TiledBackingStore.cpp:
+ (WebCore::TiledBackingStore::paint):
+
+2010-05-24 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Make text filling work together with text stroke.
+
+ When the text has stroke a new QPen was set, overriding the pen
+ set for text filling. This patch fixes that by storing the two
+ pens and using where appropriate.
+
+ * platform/graphics/qt/FontQt.cpp:
+ (WebCore::Font::drawComplexText):
+
+2010-05-17 Antonio Gomes <tonikitoo@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Add an optional "starting node' parameter to scrollRecursively and scrollOverflow of EventHandler
+ https://bugs.webkit.org/show_bug.cgi?id=39217
+
+ It would be usefull if scrollOverflow and scrollRecursively methods of EventHandler
+ could receive a parameter to specify where to start scrolling from. Currently they
+ start scrolling from either the current focused node or the node where mouse last
+ pressed on. Patch proposes an aditional starting point as an optional parameter.
+ Since it is optional, all call sites can remain as are, and if a Null node is passed
+ in, both methods work as previously.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::scrollOverflow):
+ (WebCore::EventHandler::scrollRecursively):
+ * page/EventHandler.h:
+
+2010-05-23 Noam Rosenthal <noam.rosenthal@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Using Accelerated Composing the rocket back animation on http://www.the-art-of-web.com/css/css-animation/ works differently as when not using AC.
+ https://bugs.webkit.org/show_bug.cgi?id=39513
+
+ The value of GraphicsLayer->transform() needs to be changed during the animation, regardless of m_fillsForward.
+ m_fillsForward should only apply at the end of the animation. Based on previous patch by Kenneth Christiansen.
+
+ * platform/graphics/qt/GraphicsLayerQt.cpp:
+ (WebCore::TransformAnimationQt::applyFrame):
+ (WebCore::OpacityAnimationQt::applyFrame):
+
+2010-05-25 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Running with accelerated compositing enabled sometimes result in a crash
+ https://bugs.webkit.org/show_bug.cgi?id=39609
+
+ Check if we have a scene before applying the workaround for
+ the QGraphicsScene bug where opacity change doesn't always have
+ immediate effect.
+
+ * platform/graphics/qt/GraphicsLayerQt.cpp:
+ (WebCore::OpacityAnimationQt::applyFrame):
+
+2010-05-19 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ Fix painting when using clipToImageBuffer()
+
+ When we apply the transform of the parent painter to the painter of
+ the transparency layer, we adopt its coordinate system, thus offset
+ should not be in page coordinates, but in the coordinate system of
+ the parent painter.
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::TransparencyLayer::TransparencyLayer):
+
+2010-05-19 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] REGRESSION: CoolClock isn't rendered properly
+
+ https://bugs.webkit.org/show_bug.cgi?id=38526
+
+ CanvasRenderingContext2D's arc() should connect to the previous point
+ with a straight line (HTML5 spec 4.8.11.1.8), but if the path is empty
+ to begin with, we don't want a line back to (0,0)
+ This also fixes the rendering artifact discussed in bug 36226.
+
+ Spec link:
+ http://www.whatwg.org/specs/web-apps/current-work/#dom-context-2d-arc
+
+ Test: fast/canvas/canvas-arc-connecting-line.html
+
+ * platform/graphics/qt/PathQt.cpp:
+ (WebCore::Path::addArc):
+
+2010-05-18 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ Rubberstamped by Simon Hausmann.
+
+ Return null when creating an ImageBuffer failed, due to for
+ instance a nulled pixmap.
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBufferData::ImageBufferData):
+ (WebCore::ImageBuffer::ImageBuffer):
+
+2010-05-17 Antti Koivisto <koivisto@iki.fi>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=39218
+ [Qt] Tiled backing store tiles sometimes flicker when exiting a zoom animation
+
+ Tiles sometimes flicker when exiting a zoom animation. This happens as a result
+ of the visible rectangle being momentarily out of sync.
+
+ Instead of updating the visible rect by explicitly setting it, pull it through
+ the client and recompute in the WebKit level.
+
+ * page/ChromeClient.h:
+ (WebCore::ChromeClient::visibleRectForTiledBackingStore):
+ * page/Frame.cpp:
+ (WebCore::Frame::tiledBackingStoreVisibleRect):
+ * page/Frame.h:
+ * platform/graphics/TiledBackingStore.cpp:
+ (WebCore::TiledBackingStore::checkVisibleRectChanged):
+ (WebCore::TiledBackingStore::createTiles):
+ * platform/graphics/TiledBackingStore.h:
+ * platform/graphics/TiledBackingStoreClient.h:
+
+2010-05-18 Zoltan Herczeg <zherczeg@webkit.org>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Implementing clipToImageBuffer for Qt port.
+ https://bugs.webkit.org/show_bug.cgi?id=24289
+
+ The implementation combines pixmap layers and destinationIn
+ composition mode.
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::TransparencyLayer::TransparencyLayer):
+ (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
+ (WebCore::GraphicsContext::savePlatformState):
+ (WebCore::GraphicsContext::restorePlatformState):
+ (WebCore::GraphicsContext::inTransparencyLayer):
+ (WebCore::GraphicsContext::beginTransparencyLayer):
+ (WebCore::GraphicsContext::endTransparencyLayer):
+ (WebCore::GraphicsContext::clipToImageBuffer):
+
+2010-05-16 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Canvas's toDataURL() should be case insensitive wrt the mimeType argument.
+ https://bugs.webkit.org/show_bug.cgi?id=39153
+
+ Spec link:
+ http://www.whatwg.org/specs/web-apps/current-work/#dom-canvas-todataurl
+
+ Test: fast/canvas/canvas-toDataURL-case-insensitive-mimetype.html
+
+ * dom/CanvasSurface.cpp:
+ (WebCore::CanvasSurface::toDataURL):
+
+2010-05-16 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Canvas's getContext() must return null when called with an invalid/unsupported parameter.
+ (HTML5 spec 4.8.11): http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-canvas-getcontext
+
+ https://bugs.webkit.org/show_bug.cgi?id=39150
+
+ Test: fast/canvas/canvas-getContext-invalid.html
+
+ * bindings/js/JSHTMLCanvasElementCustom.cpp:
+ (WebCore::JSHTMLCanvasElement::getContext):
+ * bindings/v8/custom/V8HTMLCanvasElementCustom.cpp:
+ (WebCore::V8HTMLCanvasElement::getContextCallback):
+
2010-05-17 Kenneth Rohde Christiansen <kenneth@webkit.org>
Reviewed by Laszlo Gombos.
diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro
index 5def728..63e78a7 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.pro
+++ b/src/3rdparty/webkit/WebCore/WebCore.pro
@@ -159,7 +159,7 @@ defineTest(addExtraCompiler) {
for(file,input) {
base = $$basename(file)
- base ~= s/\..+//
+ base ~= s/\\..+//
newfile=$$replace(outputRule,\\$\\{QMAKE_FILE_BASE\\},$$base)
SOURCES += $$newfile
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp
index 80634f7..8f241f9 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp
@@ -78,7 +78,10 @@ JSValue JSHTMLCanvasElement::getContext(ExecState* exec, const ArgList& args)
}
}
#endif
- return toJS(exec, globalObject(), WTF::getPtr(canvas->getContext(contextId, attrs.get())));
+ CanvasRenderingContext* context = canvas->getContext(contextId, attrs.get());
+ if (!context)
+ return jsNull();
+ return toJS(exec, globalObject(), WTF::getPtr(context));
}
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp
index 30a620c..0c5159d 100644
--- a/src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp
+++ b/src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp
@@ -143,10 +143,12 @@ String HTMLCanvasElement::toDataURL(const String& mimeType, ExceptionCode& ec)
if (m_size.isEmpty() || !buffer())
return String("data:,");
- if (mimeType.isNull() || !MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType))
+ String lowercaseMimeType = mimeType.lower();
+
+ if (mimeType.isNull() || !MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(lowercaseMimeType))
return buffer()->toDataURL("image/png");
- return buffer()->toDataURL(mimeType);
+ return buffer()->toDataURL(lowercaseMimeType);
}
CanvasRenderingContext* HTMLCanvasElement::getContext(const String& type, CanvasContextAttributes* attrs)
diff --git a/src/3rdparty/webkit/WebCore/page/ChromeClient.h b/src/3rdparty/webkit/WebCore/page/ChromeClient.h
index 0bfdbaf..a01eef1 100644
--- a/src/3rdparty/webkit/WebCore/page/ChromeClient.h
+++ b/src/3rdparty/webkit/WebCore/page/ChromeClient.h
@@ -222,7 +222,11 @@ namespace WebCore {
virtual bool supportsFullscreenForNode(const Node*) { return false; }
virtual void enterFullscreenForNode(Node*) { }
virtual void exitFullscreenForNode(Node*) { }
-
+
+#if ENABLE(TILED_BACKING_STORE)
+ virtual IntRect visibleRectForTiledBackingStore() const { return IntRect(); }
+#endif
+
#if PLATFORM(MAC)
virtual KeyboardUIMode keyboardUIMode() { return KeyboardAccessDefault; }
diff --git a/src/3rdparty/webkit/WebCore/page/EventHandler.cpp b/src/3rdparty/webkit/WebCore/page/EventHandler.cpp
index 46dd7ae..c40299c 100644
--- a/src/3rdparty/webkit/WebCore/page/EventHandler.cpp
+++ b/src/3rdparty/webkit/WebCore/page/EventHandler.cpp
@@ -929,9 +929,13 @@ void EventHandler::setMousePressNode(PassRefPtr<Node> node)
m_mousePressNode = node;
}
-bool EventHandler::scrollOverflow(ScrollDirection direction, ScrollGranularity granularity)
+bool EventHandler::scrollOverflow(ScrollDirection direction, ScrollGranularity granularity, Node* startingNode)
{
- Node* node = m_frame->document()->focusedNode();
+ Node* node = startingNode;
+
+ if (!node)
+ node = m_frame->document()->focusedNode();
+
if (!node)
node = m_mousePressNode.get();
@@ -946,9 +950,9 @@ bool EventHandler::scrollOverflow(ScrollDirection direction, ScrollGranularity g
return false;
}
-bool EventHandler::scrollRecursively(ScrollDirection direction, ScrollGranularity granularity)
+bool EventHandler::scrollRecursively(ScrollDirection direction, ScrollGranularity granularity, Node* startingNode)
{
- bool handled = scrollOverflow(direction, granularity);
+ bool handled = scrollOverflow(direction, granularity, startingNode);
if (!handled) {
Frame* frame = m_frame;
do {
diff --git a/src/3rdparty/webkit/WebCore/page/EventHandler.h b/src/3rdparty/webkit/WebCore/page/EventHandler.h
index 282100d..a94e7bf 100644
--- a/src/3rdparty/webkit/WebCore/page/EventHandler.h
+++ b/src/3rdparty/webkit/WebCore/page/EventHandler.h
@@ -130,9 +130,9 @@ public:
static Frame* subframeForTargetNode(Node*);
- bool scrollOverflow(ScrollDirection, ScrollGranularity);
+ bool scrollOverflow(ScrollDirection, ScrollGranularity, Node* startingNode = 0);
- bool scrollRecursively(ScrollDirection, ScrollGranularity);
+ bool scrollRecursively(ScrollDirection, ScrollGranularity, Node* startingNode = 0);
#if ENABLE(DRAG_SUPPORT)
bool shouldDragAutoNode(Node*, const IntPoint&) const; // -webkit-user-drag == auto
diff --git a/src/3rdparty/webkit/WebCore/page/Frame.cpp b/src/3rdparty/webkit/WebCore/page/Frame.cpp
index 6dbca69..379bf7d 100644
--- a/src/3rdparty/webkit/WebCore/page/Frame.cpp
+++ b/src/3rdparty/webkit/WebCore/page/Frame.cpp
@@ -37,6 +37,7 @@
#include "CSSPropertyNames.h"
#include "CachedCSSStyleSheet.h"
#include "Chrome.h"
+#include "ChromeClient.h"
#include "DOMWindow.h"
#include "DocLoader.h"
#include "DocumentType.h"
@@ -1853,6 +1854,13 @@ IntRect Frame::tiledBackingStoreContentsRect()
return IntRect();
return IntRect(IntPoint(), m_view->contentsSize());
}
+
+IntRect Frame::tiledBackingStoreVisibleRect()
+{
+ if (!m_page)
+ return IntRect();
+ return m_page->chrome()->client()->visibleRectForTiledBackingStore();
+}
#endif
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/page/Frame.h b/src/3rdparty/webkit/WebCore/page/Frame.h
index 67761f9..a654cd7 100644
--- a/src/3rdparty/webkit/WebCore/page/Frame.h
+++ b/src/3rdparty/webkit/WebCore/page/Frame.h
@@ -288,6 +288,7 @@ namespace WebCore {
virtual void tiledBackingStorePaint(GraphicsContext*, const IntRect&);
virtual void tiledBackingStorePaintEnd(const Vector<IntRect>& paintedArea);
virtual IntRect tiledBackingStoreContentsRect();
+ virtual IntRect tiledBackingStoreVisibleRect();
#endif
#if PLATFORM(MAC)
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStore.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStore.cpp
index 6214f1b..1d6f237 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStore.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStore.cpp
@@ -35,6 +35,9 @@ TiledBackingStore::TiledBackingStore(TiledBackingStoreClient* client)
, m_tileBufferUpdateTimer(new TileTimer(this, &TiledBackingStore::tileBufferUpdateTimerFired))
, m_tileCreationTimer(new TileTimer(this, &TiledBackingStore::tileCreationTimerFired))
, m_tileSize(defaultTileWidth, defaultTileHeight)
+ , m_tileCreationDelay(0.01)
+ , m_keepAreaMultiplier(2.f, 3.5f)
+ , m_coverAreaMultiplier(1.5f, 2.5f)
, m_contentsScale(1.f)
, m_pendingScale(0)
, m_contentsFrozen(false)
@@ -46,6 +49,25 @@ TiledBackingStore::~TiledBackingStore()
delete m_tileBufferUpdateTimer;
delete m_tileCreationTimer;
}
+
+void TiledBackingStore::setTileSize(const IntSize& size)
+{
+ m_tileSize = size;
+ m_tiles.clear();
+ startTileCreationTimer();
+}
+
+void TiledBackingStore::setTileCreationDelay(double delay)
+{
+ m_tileCreationDelay = delay;
+}
+
+void TiledBackingStore::setKeepAndCoverAreaMultipliers(const FloatSize& keepMultiplier, const FloatSize& coverMultiplier)
+{
+ m_keepAreaMultiplier = keepMultiplier;
+ m_coverAreaMultiplier = coverMultiplier;
+ startTileCreationTimer();
+}
void TiledBackingStore::invalidate(const IntRect& contentsDirtyRect)
{
@@ -120,22 +142,23 @@ void TiledBackingStore::paint(GraphicsContext* context, const IntRect& rect)
if (currentTile && currentTile->isReadyToPaint())
currentTile->paint(context, dirtyRect);
else {
- FloatRect tileRect = tileRectForCoordinate(currentCoordinate);
- FloatRect target = intersection(tileRect, FloatRect(rect));
- Tile::paintCheckerPattern(context, target);
+ IntRect tileRect = tileRectForCoordinate(currentCoordinate);
+ IntRect target = intersection(tileRect, dirtyRect);
+ if (target.isEmpty())
+ continue;
+ Tile::paintCheckerPattern(context, FloatRect(target));
}
}
}
context->restore();
}
-void TiledBackingStore::viewportChanged(const IntRect& contentsViewport)
+void TiledBackingStore::adjustVisibleRect()
{
- IntRect viewport = mapFromContents(contentsViewport);
- if (m_viewport == viewport)
+ IntRect visibleRect = mapFromContents(m_client->tiledBackingStoreVisibleRect());
+ if (m_previousVisibleRect == visibleRect)
return;
-
- m_viewport = viewport;
+ m_previousVisibleRect = visibleRect;
startTileCreationTimer();
}
@@ -177,24 +200,26 @@ void TiledBackingStore::createTiles()
{
if (m_contentsFrozen)
return;
+
+ IntRect visibleRect = mapFromContents(m_client->tiledBackingStoreVisibleRect());
+ m_previousVisibleRect = visibleRect;
- if (m_viewport.isEmpty())
+ if (visibleRect.isEmpty())
return;
// Remove tiles that extend outside the current contents rect.
dropOverhangingTiles();
- // FIXME: Make configurable/adapt to memory.
- IntRect keepRect = m_viewport;
- keepRect.inflateX(m_viewport.width());
- keepRect.inflateY(3 * m_viewport.height());
+ IntRect keepRect = visibleRect;
+ keepRect.inflateX(visibleRect.width() * (m_keepAreaMultiplier.width() - 1.f));
+ keepRect.inflateY(visibleRect.height() * (m_keepAreaMultiplier.height() - 1.f));
keepRect.intersect(contentsRect());
dropTilesOutsideRect(keepRect);
- IntRect coverRect = m_viewport;
- coverRect.inflateX(m_viewport.width() / 2);
- coverRect.inflateY(2 * m_viewport.height());
+ IntRect coverRect = visibleRect;
+ coverRect.inflateX(visibleRect.width() * (m_coverAreaMultiplier.width() - 1.f));
+ coverRect.inflateY(visibleRect.height() * (m_coverAreaMultiplier.height() - 1.f));
coverRect.intersect(contentsRect());
// Search for the tile position closest to the viewport center that does not yet contain a tile.
@@ -211,7 +236,7 @@ void TiledBackingStore::createTiles()
continue;
++requiredTileCount;
// Distance is 0 for all currently visible tiles.
- double distance = tileDistance(m_viewport, currentCoordinate);
+ double distance = tileDistance(visibleRect, currentCoordinate);
if (distance > shortestDistance)
continue;
if (distance < shortestDistance) {
@@ -236,7 +261,7 @@ void TiledBackingStore::createTiles()
// Keep creating tiles until the whole coverRect is covered.
if (requiredTileCount)
- m_tileCreationTimer->startOneShot(0);
+ m_tileCreationTimer->startOneShot(m_tileCreationDelay);
}
void TiledBackingStore::dropOverhangingTiles()
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStore.h b/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStore.h
index 8ed4336..58477db 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStore.h
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStore.h
@@ -41,7 +41,7 @@ public:
TiledBackingStore(TiledBackingStoreClient*);
~TiledBackingStore();
- void viewportChanged(const IntRect& viewportRect);
+ void adjustVisibleRect();
float contentsScale() { return m_contentsScale; }
void setContentsScale(float);
@@ -51,6 +51,20 @@ public:
void invalidate(const IntRect& dirtyRect);
void paint(GraphicsContext*, const IntRect&);
+
+ IntSize tileSize() { return m_tileSize; }
+ void setTileSize(const IntSize&);
+
+ double tileCreationDelay() const { return m_tileCreationDelay; }
+ void setTileCreationDelay(double delay);
+
+ // Tiled are dropped outside the keep area, and created for cover area. The values a relative to the viewport size.
+ void getKeepAndCoverAreaMultipliers(FloatSize& keepMultiplier, FloatSize& coverMultiplier)
+ {
+ keepMultiplier = m_keepAreaMultiplier;
+ coverMultiplier = m_coverAreaMultiplier;
+ }
+ void setKeepAndCoverAreaMultipliers(const FloatSize& keepMultiplier, const FloatSize& coverMultiplier);
private:
void startTileBufferUpdateTimer();
@@ -94,8 +108,11 @@ private:
TileTimer* m_tileCreationTimer;
IntSize m_tileSize;
+ double m_tileCreationDelay;
+ FloatSize m_keepAreaMultiplier;
+ FloatSize m_coverAreaMultiplier;
- IntRect m_viewport;
+ IntRect m_previousVisibleRect;
float m_contentsScale;
float m_pendingScale;
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStoreClient.h b/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStoreClient.h
index 4adbbab..c5845b9 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStoreClient.h
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/TiledBackingStoreClient.h
@@ -29,6 +29,7 @@ public:
virtual void tiledBackingStorePaint(GraphicsContext*, const IntRect&) = 0;
virtual void tiledBackingStorePaintEnd(const Vector<IntRect>& paintedArea) = 0;
virtual IntRect tiledBackingStoreContentsRect() = 0;
+ virtual IntRect tiledBackingStoreVisibleRect() = 0;
};
#else
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp
index 1e92dcc..b707f9d 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp
@@ -73,28 +73,31 @@ void Font::drawComplexText(GraphicsContext* ctx, const TextRun& run, const Float
QPainter *p = ctx->platformContext();
+ QPen textFillPen;
if (ctx->textDrawingMode() & cTextFill) {
if (ctx->fillGradient()) {
QBrush brush(*ctx->fillGradient()->platformGradient());
brush.setTransform(ctx->fillGradient()->gradientSpaceTransform());
- p->setPen(QPen(brush, 0));
+ textFillPen = QPen(brush, 0);
} else if (ctx->fillPattern()) {
AffineTransform affine;
- p->setPen(QPen(QBrush(ctx->fillPattern()->createPlatformPattern(affine)), 0));
+ textFillPen = QPen(QBrush(ctx->fillPattern()->createPlatformPattern(affine)), 0);
} else
- p->setPen(QColor(ctx->fillColor()));
+ textFillPen = QPen(QColor(ctx->fillColor()));
}
+ QPen textStrokePen;
if (ctx->textDrawingMode() & cTextStroke) {
if (ctx->strokeGradient()) {
QBrush brush(*ctx->strokeGradient()->platformGradient());
brush.setTransform(ctx->strokeGradient()->gradientSpaceTransform());
- p->setPen(QPen(brush, ctx->strokeThickness()));
+ textStrokePen = QPen(brush, ctx->strokeThickness());
} else if (ctx->strokePattern()) {
AffineTransform affine;
- p->setPen(QPen(QBrush(ctx->strokePattern()->createPlatformPattern(affine)), ctx->strokeThickness()));
+ QBrush brush(ctx->strokePattern()->createPlatformPattern(affine));
+ textStrokePen = QPen(brush, ctx->strokeThickness());
} else
- p->setPen(QPen(QColor(ctx->strokeColor()), ctx->strokeThickness()));
+ textStrokePen = QPen(QColor(ctx->strokeColor()), ctx->strokeThickness());
}
String sanitized = Font::normalizeSpaces(String(run.characters(), run.length()));
@@ -163,10 +166,13 @@ void Font::drawComplexText(GraphicsContext* ctx, const TextRun& run, const Float
if (ctx->textDrawingMode() & cTextStroke) {
QPainterPath path;
path.addText(pt, font(), string);
+ p->setPen(textStrokePen);
p->strokePath(path, p->pen());
}
- if (ctx->textDrawingMode() & cTextFill)
+ if (ctx->textDrawingMode() & cTextFill) {
+ p->setPen(textFillPen);
p->drawText(pt, string, flags, run.padding());
+ }
}
float Font::floatWidthForComplexText(const TextRun& run, HashSet<const SimpleFontData*>*) const
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
index 0100b72..bdb810a 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
@@ -167,8 +167,11 @@ static inline Qt::FillRule toQtFillRule(WindRule rule)
}
struct TransparencyLayer : FastAllocBase {
- TransparencyLayer(const QPainter* p, const QRect &rect)
+ TransparencyLayer(const QPainter* p, const QRect &rect, qreal opacity, QPixmap& alphaMask)
: pixmap(rect.width(), rect.height())
+ , opacity(opacity)
+ , alphaMask(alphaMask)
+ , saveCounter(1) // see the comment for saveCounter
{
offset = rect.topLeft();
pixmap.fill(Qt::transparent);
@@ -182,7 +185,9 @@ struct TransparencyLayer : FastAllocBase {
painter.setFont(p->font());
if (painter.paintEngine()->hasFeature(QPaintEngine::PorterDuff))
painter.setCompositionMode(p->compositionMode());
- painter.setClipPath(p->clipPath());
+ // if the path is an empty region, this assignment disables all painting
+ if (!p->clipPath().isEmpty())
+ painter.setClipPath(p->clipPath());
}
TransparencyLayer()
@@ -193,6 +198,11 @@ struct TransparencyLayer : FastAllocBase {
QPoint offset;
QPainter painter;
qreal opacity;
+ // for clipToImageBuffer
+ QPixmap alphaMask;
+ // saveCounter is only used in combination with alphaMask
+ // otherwise, its value is unspecified
+ int saveCounter;
private:
TransparencyLayer(const TransparencyLayer &) {}
TransparencyLayer & operator=(const TransparencyLayer &) { return *this; }
@@ -217,6 +227,9 @@ public:
bool antiAliasingForRectsAndLines;
QStack<TransparencyLayer*> layers;
+ // Counting real layers. Required by inTransparencyLayer() calls
+ // For example, layers with valid alphaMask are not real layers
+ int layerCount;
QPainter* redirect;
// reuse this brush for solid color (to prevent expensive QBrush construction)
@@ -235,6 +248,7 @@ private:
GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate(QPainter* p)
{
painter = p;
+ layerCount = 0;
redirect = 0;
solidColor = QBrush(Qt::black);
@@ -289,11 +303,17 @@ AffineTransform GraphicsContext::getCTM() const
void GraphicsContext::savePlatformState()
{
+ if (!m_data->layers.isEmpty() && !m_data->layers.top()->alphaMask.isNull())
+ ++m_data->layers.top()->saveCounter;
m_data->p()->save();
}
void GraphicsContext::restorePlatformState()
{
+ if (!m_data->layers.isEmpty() && !m_data->layers.top()->alphaMask.isNull())
+ if (!--m_data->layers.top()->saveCounter)
+ endTransparencyLayer();
+
m_data->p()->restore();
if (!m_data->currentPath.isEmpty() && m_common->state.pathTransform.isInvertible()) {
@@ -678,7 +698,7 @@ void GraphicsContext::addPath(const Path& path)
bool GraphicsContext::inTransparencyLayer() const
{
- return !m_data->layers.isEmpty();
+ return m_data->layerCount;
}
PlatformPath* GraphicsContext::currentPath()
@@ -837,10 +857,9 @@ void GraphicsContext::beginTransparencyLayer(float opacity)
w = int(qBound(qreal(0), deviceClip.width(), (qreal)w) + 2);
h = int(qBound(qreal(0), deviceClip.height(), (qreal)h) + 2);
- TransparencyLayer * layer = new TransparencyLayer(m_data->p(), QRect(x, y, w, h));
-
- layer->opacity = opacity;
- m_data->layers.push(layer);
+ QPixmap emptyAlphaMask;
+ m_data->layers.push(new TransparencyLayer(m_data->p(), QRect(x, y, w, h), opacity, emptyAlphaMask));
+ ++m_data->layerCount;
}
void GraphicsContext::endTransparencyLayer()
@@ -849,6 +868,12 @@ void GraphicsContext::endTransparencyLayer()
return;
TransparencyLayer* layer = m_data->layers.pop();
+ if (!layer->alphaMask.isNull()) {
+ layer->painter.resetTransform();
+ layer->painter.setCompositionMode(QPainter::CompositionMode_DestinationIn);
+ layer->painter.drawPixmap(QPoint(), layer->alphaMask);
+ } else
+ --m_data->layerCount; // see the comment for layerCount
layer->painter.end();
QPainter* p = m_data->p();
@@ -1086,9 +1111,21 @@ void GraphicsContext::clipOutEllipseInRect(const IntRect& rect)
}
}
-void GraphicsContext::clipToImageBuffer(const FloatRect&, const ImageBuffer*)
+void GraphicsContext::clipToImageBuffer(const FloatRect& floatRect, const ImageBuffer* image)
{
- notImplemented();
+ if (paintingDisabled())
+ return;
+
+ QPixmap* nativeImage = image->image()->nativeImageForCurrentFrame();
+ if (!nativeImage)
+ return;
+
+ IntRect rect(floatRect);
+ QPixmap alphaMask = *nativeImage;
+ if (alphaMask.width() != rect.width() || alphaMask.height() != rect.height())
+ alphaMask = alphaMask.scaled(rect.width(), rect.height());
+
+ m_data->layers.push(new TransparencyLayer(m_data->p(), m_data->p()->transform().mapRect(rect), 1.0, alphaMask));
}
void GraphicsContext::addInnerRoundedRectClip(const IntRect& rect,
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
index 969e00a..02bf25e 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
@@ -1191,9 +1191,9 @@ public:
transformMatrix.blend(m_sourceMatrix, progress);
}
+ m_layer.data()->m_layer->setTransform(transformMatrix);
+ // We force the actual opacity change, otherwise it would be ignored because of the animation.
m_layer.data()->setBaseTransform(transformMatrix);
- if (m_fillsForwards)
- m_layer.data()->m_layer->setTransform(m_layer.data()->m_baseTransform);
}
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
@@ -1231,18 +1231,19 @@ public:
if (m_fillsForwards)
setCurrentTime(1);
}
+
virtual void applyFrame(const qreal& fromValue, const qreal& toValue, qreal progress)
{
qreal opacity = qBound(qreal(0), fromValue + (toValue-fromValue)*progress, qreal(1));
// FIXME: this is a hack, due to a probable QGraphicsScene bug.
// Without this the opacity change doesn't always have immediate effect.
- if (!m_layer.data()->opacity() && opacity)
+ if (m_layer.data()->scene() && !m_layer.data()->opacity() && opacity)
m_layer.data()->scene()->update();
+ m_layer.data()->m_layer->setOpacity(opacity);
+ // We force the actual opacity change, otherwise it would be ignored because of the animation.
m_layer.data()->setOpacity(opacity);
- if (m_fillsForwards)
- m_layer.data()->m_layer->setOpacity(opacity);
}
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
index d831566..eafdcf0 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
@@ -46,12 +46,19 @@ namespace WebCore {
ImageBufferData::ImageBufferData(const IntSize& size)
: m_pixmap(size)
+ , m_painter(0)
{
+ if (m_pixmap.isNull())
+ return;
+
m_pixmap.fill(QColor(Qt::transparent));
- QPainter* painter = new QPainter(&m_pixmap);
+ QPainter* painter = new QPainter;
m_painter.set(painter);
+ if (!painter->begin(&m_pixmap))
+ return;
+
// Since ImageBuffer is used mainly for Canvas, explicitly initialize
// its painter's pen and brush with the corresponding canvas defaults
// NOTE: keep in sync with CanvasRenderingContext2D::State
@@ -72,8 +79,11 @@ ImageBuffer::ImageBuffer(const IntSize& size, ImageColorSpace, bool& success)
: m_data(size)
, m_size(size)
{
+ success = m_data.m_painter && m_data.m_painter->isActive();
+ if (!success)
+ return;
+
m_context.set(new GraphicsContext(m_data.m_painter.get()));
- success = true;
}
ImageBuffer::~ImageBuffer()
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp
index 4b0c21f..a7351a0 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp
@@ -298,9 +298,10 @@ void Path::addArc(const FloatPoint& p, float r, float sar, float ear, bool antic
span += ea - sa;
}
- // connect to the previous point by a straight line
- m_path.lineTo(QPointF(xc + radius * cos(sar),
- yc - radius * sin(sar)));
+ // If the path is empty, move to where the arc will start to avoid painting a line from (0,0)
+ // NOTE: QPainterPath::isEmpty() won't work here since it ignores a lone MoveToElement
+ if (!m_path.elementCount())
+ m_path.arcMoveTo(xs, ys, width, height, sa);
m_path.arcTo(xs, ys, width, height, sa, span);
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h b/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h
index 467941f..8e48d1f 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h
+++ b/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h
@@ -89,6 +89,8 @@ public:
virtual QStyle* style() const = 0;
+ virtual QRectF graphicsItemVisibleRect() const { return QRectF(); }
+
protected:
#ifndef QT_NO_CURSOR
virtual QCursor cursor() const = 0;
diff --git a/src/3rdparty/webkit/WebKit.pri b/src/3rdparty/webkit/WebKit.pri
index a3ccd9d..921a6e0 100644
--- a/src/3rdparty/webkit/WebKit.pri
+++ b/src/3rdparty/webkit/WebKit.pri
@@ -48,7 +48,12 @@ CONFIG(release, debug|release) {
}
BASE_DIR = $$PWD
-INCLUDEPATH += $$OUTPUT_DIR/include/QtWebKit
+
+symbian {
+ INCLUDEPATH += $$PWD/include/QtWebKit
+} else {
+ INCLUDEPATH += $$OUTPUT_DIR/include/QtWebKit
+}
CONFIG -= warn_on
*-g++*:QMAKE_CXXFLAGS += -Wall -Wreturn-type -fno-strict-aliasing -Wcast-align -Wchar-subscripts -Wformat-security -Wreturn-type -Wno-unused-parameter -Wno-sign-compare -Wno-switch -Wno-switch-enum -Wundef -Wmissing-noreturn -Winit-self
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/DerivedSources.pro b/src/3rdparty/webkit/WebKit/qt/Api/DerivedSources.pro
index 389fb5f..22d4c8d 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/DerivedSources.pro
+++ b/src/3rdparty/webkit/WebKit/qt/Api/DerivedSources.pro
@@ -28,7 +28,7 @@ qtheader_module.commands += echo $${QUOTE}$${LITERAL_HASH}define QT_QTWEBKIT_MOD
qtheader_module.commands += echo $${QUOTE}$${LITERAL_HASH}include $${ESCAPE}<QtNetwork/QtNetwork$${ESCAPE}>$${QUOTE} >> $${qtheader_module.target} &&
WEBKIT_CLASS_HEADERS = $${LITERAL_DOLLAR}$${LITERAL_DOLLAR}$${LITERAL_DOLLAR}$${LITERAL_DOLLAR}PWD/QtWebKit
-regex = ".*\sclass\sQWEBKIT_EXPORT\s(\w+)\s(.*)"
+regex = ".*\\sclass\\sQWEBKIT_EXPORT\\s(\\w+)\\s(.*)"
for(HEADER, WEBKIT_API_HEADERS) {
# 1. Append to QtWebKit header that includes all other header files
@@ -70,7 +70,7 @@ for(HEADER, WEBKIT_API_HEADERS) {
res = $$find(src, $$regex)
isEmpty(res):break()
- exp = $$replace(src, $$regex, "EXPORTED_CLASS = \1")
+ exp = $$replace(src, $$regex, "EXPORTED_CLASS = \\1")
eval($$exp)
CLASS_TARGET = "qtheader_$${EXPORTED_CLASS}"
@@ -87,7 +87,7 @@ for(HEADER, WEBKIT_API_HEADERS) {
# Qt's QRegExp does not support inline non-greedy matching,
# so we'll have to work around it by updating the haystack
- src = $$replace(src, $$regex, "\2")
+ src = $$replace(src, $$regex, "\\2")
src_words = $$join(src, $${LITERAL_WHITESPACE})
}
}
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
index 75a23d9..7a25646 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
@@ -127,7 +127,7 @@ public:
#endif
void updateResizesToContentsForPage();
- QRectF graphicsItemVisibleRect() const;
+ virtual QRectF graphicsItemVisibleRect() const;
#if ENABLE(TILED_BACKING_STORE)
void updateTiledBackingStoreScale();
#endif
@@ -597,12 +597,7 @@ void QGraphicsWebView::paint(QPainter* painter, const QStyleOptionGraphicsItem*
#if ENABLE(TILED_BACKING_STORE)
if (WebCore::TiledBackingStore* backingStore = QWebFramePrivate::core(page()->mainFrame())->tiledBackingStore()) {
// FIXME: We should set the backing store viewport earlier than in paint
- if (d->resizesToContents)
- backingStore->viewportChanged(WebCore::IntRect(d->graphicsItemVisibleRect()));
- else {
- QRectF visibleRect(d->page->mainFrame()->scrollPosition(), d->page->mainFrame()->geometry().size());
- backingStore->viewportChanged(WebCore::IntRect(visibleRect));
- }
+ backingStore->adjustVisibleRect();
// QWebFrame::render is a public API, bypass it for tiled rendering so behavior does not need to change.
WebCore::GraphicsContext context(painter);
page()->mainFrame()->d->renderFromTiledBackingStore(&context, option->exposedRect.toAlignedRect());
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
index 44cc3b5..721aaa6 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
@@ -275,8 +275,9 @@ void QWEBKIT_EXPORT qt_drt_evaluateScriptInIsolatedWorld(QWebFrame* qFrame, int
JSC::JSValue result = frame->script()->executeScriptInWorld(mainThreadNormalWorld(), script, true).jsValue();
}
-static bool webframe_scrollOverflow(WebCore::Frame* frame, int dx, int dy, const QPoint& pos)
+bool QWEBKIT_EXPORT qtwebkit_webframe_scrollOverflow(QWebFrame* qFrame, int dx, int dy, const QPoint& pos)
{
+ WebCore::Frame* frame = QWebFramePrivate::core(qFrame);
if (!frame || !frame->document() || !frame->view() || !frame->eventHandler())
return false;
@@ -299,17 +300,24 @@ static bool webframe_scrollOverflow(WebCore::Frame* frame, int dx, int dy, const
bool scrolledHorizontal = false;
bool scrolledVertical = false;
- if (dx > 0)
- scrolledHorizontal = renderLayer->scroll(ScrollRight, ScrollByPixel, dx);
- else if (dx < 0)
- scrolledHorizontal = renderLayer->scroll(ScrollLeft, ScrollByPixel, qAbs(dx));
+ do {
+ if (dx > 0)
+ scrolledHorizontal = renderLayer->scroll(ScrollRight, ScrollByPixel, dx);
+ else if (dx < 0)
+ scrolledHorizontal = renderLayer->scroll(ScrollLeft, ScrollByPixel, qAbs(dx));
+
+ if (dy > 0)
+ scrolledVertical = renderLayer->scroll(ScrollDown, ScrollByPixel, dy);
+ else if (dy < 0)
+ scrolledVertical = renderLayer->scroll(ScrollUp, ScrollByPixel, qAbs(dy));
- if (dy > 0)
- scrolledVertical = renderLayer->scroll(ScrollDown, ScrollByPixel, dy);
- else if (dy < 0)
- scrolledVertical = renderLayer->scroll(ScrollUp, ScrollByPixel, qAbs(dy));
+ if (scrolledHorizontal || scrolledVertical)
+ return true;
- return (scrolledHorizontal || scrolledVertical);
+ renderLayer = renderLayer->parent();
+ } while (renderLayer);
+
+ return false;
}
@@ -325,7 +333,7 @@ void QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int d
if (!qFrame)
return;
- if (webframe_scrollOverflow(QWebFramePrivate::core(qFrame), dx, dy, pos))
+ if (qtwebkit_webframe_scrollOverflow(qFrame, dx, dy, pos))
return;
bool scrollHorizontal = false;
@@ -339,7 +347,7 @@ void QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int d
if (dy > 0) // scroll down
scrollVertical = qFrame->scrollBarValue(Qt::Vertical) < qFrame->scrollBarMaximum(Qt::Vertical);
- else if (dy < 0) //scroll up
+ else if (dy < 0) //scroll up
scrollVertical = qFrame->scrollBarValue(Qt::Vertical) > qFrame->scrollBarMinimum(Qt::Vertical);
if (scrollHorizontal || scrollVertical) {
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp
index d852012..06e6cfa 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp
@@ -540,6 +540,8 @@ QDataStream& operator>>(QDataStream& source, QWebHistory& history)
d->lst->addItem(item);
}
d->lst->removeItem(nullItem);
+ // Update the HistoryController.
+ history.d->lst->page()->mainFrame()->loader()->history()->setCurrentItem(history.d->lst->entries()[currentIndex].get());
history.goToItem(history.itemAt(currentIndex));
}
}
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
index c5f508f..564c6fe 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
@@ -51,6 +51,7 @@
#include "EditorClientQt.h"
#include "SecurityOrigin.h"
#include "Settings.h"
+#include "TiledBackingStore.h"
#include "Page.h"
#include "Pasteboard.h"
#include "FrameLoader.h"
@@ -1294,6 +1295,9 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
{
WebCore::Frame *frame = page->focusController()->focusedOrMainFrame();
WebCore::Editor *editor = frame->editor();
+#if QT_VERSION >= 0x040600
+ QInputMethodEvent::Attribute selection(QInputMethodEvent::Selection, 0, 0, QVariant());
+#endif
if (!editor->canEdit()) {
ev->ignore();
@@ -1310,6 +1314,7 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
renderTextControl = toRenderTextControl(renderer);
Vector<CompositionUnderline> underlines;
+ bool hasSelection = false;
for (int i = 0; i < ev->attributes().size(); ++i) {
const QInputMethodEvent::Attribute& a = ev->attributes().at(i);
@@ -1333,10 +1338,8 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
}
#if QT_VERSION >= 0x040600
case QInputMethodEvent::Selection: {
- if (renderTextControl) {
- renderTextControl->setSelectionStart(qMin(a.start, (a.start + a.length)));
- renderTextControl->setSelectionEnd(qMax(a.start, (a.start + a.length)));
- }
+ selection = a;
+ hasSelection = true;
break;
}
#endif
@@ -1345,10 +1348,25 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
if (!ev->commitString().isEmpty())
editor->confirmComposition(ev->commitString());
- else if (!ev->preeditString().isEmpty()) {
+ else {
+ // 1. empty preedit with a selection attribute, and start/end of 0 cancels composition
+ // 2. empty preedit with a selection attribute, and start/end of non-0 updates selection of current preedit text
+ // 3. populated preedit with a selection attribute, and start/end of 0 or non-0 updates selection of supplied preedit text
+ // 4. otherwise event is updating supplied pre-edit text
QString preedit = ev->preeditString();
- editor->setComposition(preedit, underlines, preedit.length(), 0);
+#if QT_VERSION >= 0x040600
+ if (hasSelection) {
+ QString text = (renderTextControl) ? QString(renderTextControl->text()) : QString();
+ if (preedit.isEmpty() && selection.start + selection.length > 0)
+ preedit = text;
+ editor->setComposition(preedit, underlines,
+ (selection.length < 0) ? selection.start + selection.length : selection.start,
+ (selection.length < 0) ? selection.start : selection.start + selection.length);
+ } else
+#endif
+ editor->setComposition(preedit, underlines, preedit.length(), 0);
}
+
ev->accept();
}
@@ -1369,7 +1387,42 @@ void QWebPagePrivate::dynamicPropertyChangeEvent(QDynamicPropertyChangeEvent* ev
} else if (event->propertyName() == "_q_HTMLTokenizerTimeDelay") {
double timeDelay = q->property("_q_HTMLTokenizerTimeDelay").toDouble();
q->handle()->page->setCustomHTMLTokenizerTimeDelay(timeDelay);
+ }
+#if ENABLE(TILED_BACKING_STORE)
+ else if (event->propertyName() == "_q_TiledBackingStoreTileSize") {
+ WebCore::Frame* frame = QWebFramePrivate::core(q->mainFrame());
+ if (!frame->tiledBackingStore())
+ return;
+ QSize tileSize = q->property("_q_TiledBackingStoreTileSize").toSize();
+ frame->tiledBackingStore()->setTileSize(tileSize);
+ } else if (event->propertyName() == "_q_TiledBackingStoreTileCreationDelay") {
+ WebCore::Frame* frame = QWebFramePrivate::core(q->mainFrame());
+ if (!frame->tiledBackingStore())
+ return;
+ int tileCreationDelay = q->property("_q_TiledBackingStoreTileCreationDelay").toInt();
+ frame->tiledBackingStore()->setTileCreationDelay(static_cast<double>(tileCreationDelay) / 1000.);
+ } else if (event->propertyName() == "_q_TiledBackingStoreKeepAreaMultiplier") {
+ WebCore::Frame* frame = QWebFramePrivate::core(q->mainFrame());
+ if (!frame->tiledBackingStore())
+ return;
+ FloatSize keepMultiplier;
+ FloatSize coverMultiplier;
+ frame->tiledBackingStore()->getKeepAndCoverAreaMultipliers(keepMultiplier, coverMultiplier);
+ QSizeF qSize = q->property("_q_TiledBackingStoreKeepAreaMultiplier").toSizeF();
+ keepMultiplier = FloatSize(qSize.width(), qSize.height());
+ frame->tiledBackingStore()->setKeepAndCoverAreaMultipliers(keepMultiplier, coverMultiplier);
+ } else if (event->propertyName() == "_q_TiledBackingStoreCoverAreaMultiplier") {
+ WebCore::Frame* frame = QWebFramePrivate::core(q->mainFrame());
+ if (!frame->tiledBackingStore())
+ return;
+ FloatSize keepMultiplier;
+ FloatSize coverMultiplier;
+ frame->tiledBackingStore()->getKeepAndCoverAreaMultipliers(keepMultiplier, coverMultiplier);
+ QSizeF qSize = q->property("_q_TiledBackingStoreCoverAreaMultiplier").toSizeF();
+ coverMultiplier = FloatSize(qSize.width(), qSize.height());
+ frame->tiledBackingStore()->setKeepAndCoverAreaMultipliers(keepMultiplier, coverMultiplier);
}
+#endif
}
void QWebPagePrivate::shortcutOverrideEvent(QKeyEvent* event)
@@ -1518,7 +1571,7 @@ QVariant QWebPage::inputMethodQuery(Qt::InputMethodQuery property) const
RefPtr<Range> range = editor->compositionRange();
return QVariant(renderTextControl->selectionEnd() - TextIterator::rangeLength(range.get()));
}
- return QVariant(renderTextControl->selectionEnd());
+ return QVariant(frame->selection()->extent().offsetInContainerNode());
}
return QVariant();
}
@@ -1550,7 +1603,7 @@ QVariant QWebPage::inputMethodQuery(Qt::InputMethodQuery property) const
RefPtr<Range> range = editor->compositionRange();
return QVariant(renderTextControl->selectionStart() - TextIterator::rangeLength(range.get()));
}
- return QVariant(renderTextControl->selectionStart());
+ return QVariant(frame->selection()->base().offsetInContainerNode());
}
return QVariant();
}
@@ -1692,6 +1745,7 @@ InspectorController* QWebPagePrivate::inspectorController()
\value Back Navigate back in the history of navigated links.
\value Forward Navigate forward in the history of navigated links.
\value Stop Stop loading the current page.
+ \value StopScheduledPageRefresh Stop all pending page refresh/redirect requests.
\value Reload Reload the current page.
\value ReloadAndBypassCache Reload the current page, but do not use any local cache. (Added in Qt 4.6)
\value Cut Cut the content currently selected into the clipboard.
@@ -2097,6 +2151,15 @@ static void openNewWindow(const QUrl& url, WebCore::Frame* frame)
}
}
+static void collectChildFrames(QWebFrame* frame, QList<QWebFrame*>& list)
+{
+ list << frame->childFrames();
+ QListIterator<QWebFrame*> it(frame->childFrames());
+ while (it.hasNext()) {
+ collectChildFrames(it.next(), list);
+ }
+}
+
/*!
This function can be called to trigger the specified \a action.
It is also called by QtWebKit if the user triggers the action, for example
@@ -2193,6 +2256,16 @@ void QWebPage::triggerAction(WebAction action, bool)
#endif
break;
}
+ case StopScheduledPageRefresh: {
+ QWebFrame* topFrame = mainFrame();
+ topFrame->d->frame->redirectScheduler()->cancel();
+ QList<QWebFrame*> childFrames;
+ collectChildFrames(topFrame, childFrames);
+ QListIterator<QWebFrame*> it(childFrames);
+ while (it.hasNext())
+ it.next()->d->frame->redirectScheduler()->cancel();
+ break;
+ }
default:
command = QWebPagePrivate::editorCommandForWebActions(action);
break;
@@ -3329,12 +3402,37 @@ QString QWebPage::userAgentForUrl(const QUrl&) const
#elif defined Q_WS_X11
"X11"
#elif defined Q_OS_SYMBIAN
- "SymbianOS"
+ "Symbian"
#else
"Unknown"
#endif
);
+#if defined Q_OS_SYMBIAN
+ QSysInfo::SymbianVersion symbianVersion = QSysInfo::symbianVersion();
+ switch (symbianVersion) {
+ case QSysInfo::SV_9_2:
+ firstPartTemp += QString::fromLatin1("OS/9.2");
+ break;
+ case QSysInfo::SV_9_3:
+ firstPartTemp += QString::fromLatin1("OS/9.3");
+ break;
+ case QSysInfo::SV_9_4:
+ firstPartTemp += QString::fromLatin1("OS/9.4");
+ break;
+ case QSysInfo::SV_SF_2:
+ firstPartTemp += QString::fromLatin1("/2");
+ break;
+ case QSysInfo::SV_SF_3:
+ firstPartTemp += QString::fromLatin1("/3");
+ break;
+ case QSysInfo::SV_SF_4:
+ firstPartTemp += QString::fromLatin1("/4");
+ default:
+ break;
+ }
+#endif
+
firstPartTemp += QString::fromLatin1("; ");
// SSL support
@@ -3458,51 +3556,22 @@ QString QWebPage::userAgentForUrl(const QUrl&) const
firstPartTemp += QString::fromLatin1("Sun Solaris");
#elif defined Q_OS_ULTRIX
firstPartTemp += QString::fromLatin1("DEC Ultrix");
-#elif defined Q_OS_SYMBIAN
- firstPartTemp += QString::fromLatin1("SymbianOS");
- QSysInfo::SymbianVersion symbianVersion = QSysInfo::symbianVersion();
- switch (symbianVersion) {
- case QSysInfo::SV_9_2:
- firstPartTemp += QString::fromLatin1("/9.2");
- break;
- case QSysInfo::SV_9_3:
- firstPartTemp += QString::fromLatin1("/9.3");
- break;
- case QSysInfo::SV_9_4:
- firstPartTemp += QString::fromLatin1("/9.4");
- break;
- case QSysInfo::SV_SF_2:
- firstPartTemp += QString::fromLatin1("^2");
- break;
- case QSysInfo::SV_SF_3:
- firstPartTemp += QString::fromLatin1("^3");
- break;
- case QSysInfo::SV_SF_4:
- firstPartTemp += QString::fromLatin1("^4");
- break;
- default:
- firstPartTemp += QString::fromLatin1("/Unknown");
- }
-
-#if defined Q_WS_S60
+#elif defined Q_WS_S60
firstPartTemp += QLatin1Char(' ');
- firstPartTemp += QString::fromLatin1("Series60");
QSysInfo::S60Version s60Version = QSysInfo::s60Version();
switch (s60Version) {
case QSysInfo::SV_S60_3_1:
- firstPartTemp += QString::fromLatin1("/3.1");
+ firstPartTemp += QString::fromLatin1("Series60/3.1");
break;
case QSysInfo::SV_S60_3_2:
- firstPartTemp += QString::fromLatin1("/3.2");
+ firstPartTemp += QString::fromLatin1("Series60/3.2");
break;
case QSysInfo::SV_S60_5_0:
- firstPartTemp += QString::fromLatin1("/5.0");
+ firstPartTemp += QString::fromLatin1("Series60/5.0");
break;
default:
- firstPartTemp += QString::fromLatin1("/Unknown");
+ break;
}
-#endif
-
#elif defined Q_OS_UNIX
firstPartTemp += QString::fromLatin1("UNIX BSD/SYSV system");
#elif defined Q_OS_UNIXWARE
@@ -3532,8 +3601,8 @@ QString QWebPage::userAgentForUrl(const QUrl&) const
QString thirdPartTemp;
thirdPartTemp.reserve(150);
-#if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5)
- thirdPartTemp + QLatin1String(" Mobile Safari/");
+#if defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5)
+ thirdPartTemp += QLatin1String(" Mobile Safari/");
#else
thirdPartTemp += QLatin1String(" Safari/");
#endif
@@ -3551,7 +3620,7 @@ QString QWebPage::userAgentForUrl(const QUrl&) const
languageName = d->client->ownerWidget()->locale().name();
else
languageName = QLocale().name();
- languageName[2] = QLatin1Char('-');
+ languageName.replace(QLatin1Char('_'), QLatin1Char('-'));
// Application name/version
QString appName = QCoreApplication::applicationName();
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h
index 1adde06..34f675b 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h
@@ -169,6 +169,8 @@ public:
AlignLeft,
AlignRight,
+ StopScheduledPageRefresh,
+
WebActionCount
};
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp
index 115f9fc..81823f6 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp
@@ -74,7 +74,6 @@ public:
QString localStoragePath;
QString offlineWebApplicationCachePath;
qint64 offlineStorageDefaultQuota;
- QUrl inspectorLocation;
void apply();
WebCore::Settings* settings;
@@ -1011,31 +1010,6 @@ void QWebSettings::setLocalStoragePath(const QString& path)
}
/*!
- \since 4.7
-
- Specifies the \a location of a frontend to load with each web page when using Web Inspector.
-
- \sa inspectorUrl()
-*/
-void QWebSettings::setInspectorUrl(const QUrl& location)
-{
- d->inspectorLocation = location;
- d->apply();
-}
-
-/*!
- \since 4.7
-
- Returns the location of the Web Inspector frontend.
-
- \sa setInspectorUrl()
-*/
-QUrl QWebSettings::inspectorUrl() const
-{
- return d->inspectorLocation;
-}
-
-/*!
\since 4.6
Returns the path for HTML5 local storage.
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h
index 3592e2c..b978f5e 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h
@@ -136,9 +136,6 @@ public:
void setLocalStoragePath(const QString& path);
QString localStoragePath() const;
- void setInspectorUrl(const QUrl &location);
- QUrl inspectorUrl() const;
-
static void clearMemoryCaches();
static void enablePersistentStorage(const QString& path = QString());
diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog
index efc8f27..b6cbf92 100644
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog
@@ -1,3 +1,233 @@
+2010-05-31 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Escape backslashes in the .pro files
+
+ qmake in Qt 4.7 warns about unescaped backspaces and deprecates them.
+
+ * Api/DerivedSources.pro:
+ * docs/docs.pri:
+
+2010-05-19 Denis Dzyubenko <denis.dzyubenko@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ When creating the UA, do not sassmue the language code is a
+ two-letter iso639-1 code.
+
+ * Api/qwebpage.cpp:
+ (QWebPage::userAgentForUrl):
+
+2010-05-28 Antti Koivisto <koivisto@iki.fi>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Add a missing #if ENABLE(), some null checking.
+
+ * Api/qwebpage.cpp:
+ (QWebPagePrivate::dynamicPropertyChangeEvent):
+
+2010-05-28 Antti Koivisto <koivisto@iki.fi>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=39874
+ [Qt] Make tiled backing store more configurable
+
+ Make tile size, tile creation delay and tiling area dynamically configurable.
+
+ * Api/qwebpage.cpp:
+ (QWebPagePrivate::dynamicPropertyChangeEvent):
+
+2010-05-29 Dawit Alemayehu <adawit@kde.org>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Added a WebAction to stop all pending page refresh/redirect
+ requests set through the <meta http-equiv="refresh"...> tag.
+
+ https://bugs.webkit.org/show_bug.cgi?id=29899
+
+ * Api/qwebpage.cpp:
+ (QWebPage::triggerAction):
+ * Api/qwebpage.h:
+ * tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::testStopScheduledPageRefresh):
+
+2010-04-20 Robert Hogan <robert@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Add more support for textInputController
+
+ Add support for selectedRange(), setMarkedText(), insertText(),
+ and firstRectForCharacterRange().
+
+ https://bugs.webkit.org/show_bug.cgi?id=35702
+
+ * Api/qwebpage.cpp:
+ (QWebPagePrivate::inputMethodEvent):
+ * tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::inputMethods):
+
+2010-05-20 Janne Koskinen <janne.p.koskinen@digia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] WINSCW compile fix for qwebframe test
+ https://bugs.webkit.org/show_bug.cgi?id=38722
+
+ WINSCW cannot determine template type up the hierarchy
+ to common base class.
+
+ * tests/qwebframe/tst_qwebframe.cpp:
+
+2010-05-23 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Update the Symbian version for the user agent
+ https://bugs.webkit.org/show_bug.cgi?id=38389
+
+ Fixes a regression introduced by r58648. Ensure that the "Symbian" string
+ is only listed one time in the User Agent string.
+
+ In addition make an effort to align the User Agent string to already
+ released WebKit based products for Symbian.
+
+ * Api/qwebpage.cpp:
+ (QWebPage::userAgentForUrl):
+
+2010-05-21 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Symbian build fix.
+
+ [Qt] Updated the wins def file with one new export.
+
+ The DRT symbols are still missing, but I can't build DRT ;(
+
+ * symbian/bwins/QtWebKitu.def:
+
+2010-05-12 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ Add a comment to explain the web inspector dynamic property url hook
+ and that it's there on purpose :)
+
+ https://bugs.webkit.org/show_bug.cgi?id=35340
+
+ * WebCoreSupport/InspectorClientQt.cpp:
+ (WebCore::InspectorClientQt::openInspectorFrontend):
+
+2010-05-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Replace public inspector url with private property for QtLauncher
+ https://bugs.webkit.org/show_bug.cgi?id=35340
+
+ Replace the public API with a private dynamic property until this feature
+ is ready.
+
+ * Api/qwebsettings.cpp:
+ * Api/qwebsettings.h:
+ * WebCoreSupport/InspectorClientQt.cpp:
+ (WebCore::InspectorClientQt::openInspectorFrontend):
+ * symbian/bwins/QtWebKitu.def:
+ * symbian/eabi/QtWebKitu.def:
+
+2010-05-20 Luiz Agostini <luiz.agostini@openbossa.org>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Skipping popup focus test for maemo
+ https://bugs.webkit.org/show_bug.cgi?id=39314
+
+ Skipping popup focus test for maemo in qwebframe auto test.
+
+ The test method tst_QWebFrame::popupFocus() was testing popup focus AND input
+ field focus. The input field focus has been removed from the method popupFocus()
+ and a new test method named inputFieldFocus() has been added. Finally the test
+ method popupFocus() has been skipped for maemo.
+
+ * tests/qwebframe/tst_qwebframe.cpp:
+
+2010-05-20 Rajiv Ramanasankaran <rajiv.ramanasankaran@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] QWebPage::inputMethodQuery() returns wrong values for Qt::ImCursorPosition, Qt::ImAnchorPosition
+ https://bugs.webkit.org/show_bug.cgi?id=38779
+
+ The earlier implementation was written with the assumption that in this scenario the
+ anchor position always corresponds to the START index and that the current cursor position
+ always corresponds to the END index in WebKit.
+
+ Updated the implementation of QWebPage::inputMethodQuery(Qt::ImCursorPosition) and
+ QWebPage::inputMethodQuery(Qt::ImAnchorPosition) for the case where the Editor is not in
+ composition mode. In the non-composition mode, the Anchor and the Current cursor positions
+ correspond to the Base and Extent position offsets in WebKit.
+
+ Also added the auto-tests for the RIGHT to LEFT and LEFT to RIGHT selections.
+
+ * Api/qwebpage.cpp:
+ (QWebPage::inputMethodQuery): Now returning correct values for Qt::ImCursorPosition and
+ Qt::ImAnchorPosition when the Editor is not in composition mode.
+ * tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::inputMethods): Added auto-tests for RIGHT to LEFT and LEFT to RIGHT selections
+
+2010-05-12 Joe Ligman <joseph.ligman@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Nested overflow div does not scroll
+ https://bugs.webkit.org/show_bug.cgi?id=38641
+
+ Modify qtwebkit_webframe_scrollOverflow, if the current node's render layer
+ does not scroll it will try and scroll the parent's render layer. Also export
+ qtwebkit_webframe_scrollOverflow so we can use it independently of
+ qtwebkit_webframe_scrollRecursively
+
+ * Api/qwebframe.cpp:
+ (qtwebkit_webframe_scrollOverflow):
+ (qtwebkit_webframe_scrollRecursively):
+
+2010-05-17 Antti Koivisto <koivisto@iki.fi>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=39218
+ [Qt] Tiled backing store tiles sometimes flicker when exiting a zoom animation
+
+ Tiles sometimes flicker when exiting a zoom animation. This happens as a result
+ of the visible rectangle being momentarily out of sync.
+
+ Instead of updating the visible rect by explicitly setting it, pull it through
+ the client and recompute in WebKit the level.
+
+ * Api/qgraphicswebview.cpp:
+ (QGraphicsWebView::paint):
+ * WebCoreSupport/ChromeClientQt.cpp:
+ (WebCore::ChromeClientQt::visibleRectForTiledBackingStore):
+ * WebCoreSupport/ChromeClientQt.h:
+
+2010-05-18 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ Fix QWebHistory serialization.
+
+ Regression was caused by bug 33224. The streaming function
+ should generate a documentSequenceNumber for all loaded values.
+
+ [Qt] tst_QWebHistory::serialize_2() fails
+ https://bugs.webkit.org/show_bug.cgi?id=37322
+
+ * Api/qwebhistory.cpp:
+ (operator>>):
+
2010-05-14 Kent Hansen <kent.hansen@nokia.com>, Jocelyn Turcotte <jocelyn.turcotte@nokia.com>, Tor Arne Vestbø <tor.arne.vestbo@nokia.com>, Henry Haverinen <henry.haverinen@nokia.com>, Jedrzej Nowacki <jedrzej.nowacki@nokia.com>, Andreas Kling <andreas.kling@nokia.com>
Reviewed by Simon Hausmann.
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
index 9eb10d6..4e742fc 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
@@ -559,6 +559,15 @@ bool ChromeClientQt::allowsAcceleratedCompositing() const
}
#endif
+
+#if ENABLE(TILED_BACKING_STORE)
+IntRect ChromeClientQt::visibleRectForTiledBackingStore() const
+{
+ if (!platformPageClient())
+ return IntRect();
+ return enclosingIntRect(FloatRect(platformPageClient()->graphicsItemVisibleRect()));
+}
+#endif
QtAbstractWebPopup* ChromeClientQt::createSelectPopup()
{
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h
index f0a7c8c..a47adf0 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h
@@ -140,6 +140,10 @@ namespace WebCore {
virtual bool allowsAcceleratedCompositing() const;
#endif
+#if ENABLE(TILED_BACKING_STORE)
+ virtual IntRect visibleRectForTiledBackingStore() const;
+#endif
+
#if ENABLE(TOUCH_EVENTS)
virtual void needTouchEvents(bool) { }
#endif
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
index 7fabbda..725c5fb 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
@@ -88,12 +88,17 @@ void InspectorClientQt::openInspectorFrontend(WebCore::InspectorController*)
InspectorClientWebPage* inspectorPage = new InspectorClientWebPage(inspectorView);
inspectorView->setPage(inspectorPage);
- QUrl inspectorUrl = m_inspectedWebPage->settings()->inspectorUrl();
+ QWebInspector* inspector = m_inspectedWebPage->d->getOrCreateInspector();
+ // This is a known hook that allows changing the default URL for the
+ // Web inspector. This is used for SDK purposes. Please keep this hook
+ // around and don't remove it.
+ // https://bugs.webkit.org/show_bug.cgi?id=35340
+ QUrl inspectorUrl = inspector->property("_q_inspectorUrl").toUrl();
if (!inspectorUrl.isValid())
inspectorUrl = QUrl("qrc:/webkit/inspector/inspector.html");
inspectorView->page()->mainFrame()->load(inspectorUrl);
m_inspectedWebPage->d->inspectorFrontend = inspectorView;
- m_inspectedWebPage->d->getOrCreateInspector()->d->setFrontend(inspectorView);
+ inspector->d->setFrontend(inspectorView);
inspectorView->page()->d->page->inspectorController()->setInspectorFrontendClient(new InspectorFrontendClientQt(m_inspectedWebPage, inspectorView));
}
diff --git a/src/3rdparty/webkit/WebKit/qt/docs/docs.pri b/src/3rdparty/webkit/WebKit/qt/docs/docs.pri
index 804817b..a56ddb4 100644
--- a/src/3rdparty/webkit/WebKit/qt/docs/docs.pri
+++ b/src/3rdparty/webkit/WebKit/qt/docs/docs.pri
@@ -3,7 +3,7 @@ include(../../../WebKit.pri)
unix {
QDOC = SRCDIR=$$PWD/../../.. OUTPUT_DIR=$$OUTPUT_DIR $$(QTDIR)/bin/qdoc3
} else {
- QDOC = $$(QTDIR)\bin\qdoc3.exe
+ QDOC = $$(QTDIR)\\bin\\qdoc3.exe
}
unix {
diff --git a/src/3rdparty/webkit/WebKit/qt/symbian/bwins/QtWebKitu.def b/src/3rdparty/webkit/WebKit/qt/symbian/bwins/QtWebKitu.def
index 910ba8f..969defe 100644
--- a/src/3rdparty/webkit/WebKit/qt/symbian/bwins/QtWebKitu.def
+++ b/src/3rdparty/webkit/WebKit/qt/symbian/bwins/QtWebKitu.def
@@ -625,7 +625,7 @@ EXPORTS
?qt_suspendActiveDOMObjects@@YAXPAVQWebFrame@@@Z @ 624 NONAME ; void qt_suspendActiveDOMObjects(class QWebFrame *)
?qtwebkit_webframe_scrollRecursively@@YA_NPAVQWebFrame@@HH@Z @ 625 NONAME ABSENT ; bool qtwebkit_webframe_scrollRecursively(class QWebFrame *, int, int)
?closeEvent@QWebInspector@@MAEXPAVQCloseEvent@@@Z @ 626 NONAME ; void QWebInspector::closeEvent(class QCloseEvent *)
- ?inspectorUrl@QWebSettings@@QBE?AVQUrl@@XZ @ 627 NONAME ; class QUrl QWebSettings::inspectorUrl(void) const
+ ?inspectorUrl@QWebSettings@@QBE?AVQUrl@@XZ @ 627 NONAME ABSENT ; class QUrl QWebSettings::inspectorUrl(void) const
?isTiledBackingStoreFrozen@QGraphicsWebView@@QBE_NXZ @ 628 NONAME ; bool QGraphicsWebView::isTiledBackingStoreFrozen(void) const
?pageChanged@QWebFrame@@IAEXXZ @ 629 NONAME ; void QWebFrame::pageChanged(void)
?qt_drt_enableCaretBrowsing@@YAXPAVQWebPage@@_N@Z @ 630 NONAME ; void qt_drt_enableCaretBrowsing(class QWebPage *, bool)
@@ -646,7 +646,8 @@ EXPORTS
?qtwebkit_webframe_scrollRecursively@@YAXPAVQWebFrame@@HHABVQPoint@@@Z @ 645 NONAME ; void qtwebkit_webframe_scrollRecursively(class QWebFrame *, int, int, class QPoint const &)
?resizesToContents@QGraphicsWebView@@QBE_NXZ @ 646 NONAME ; bool QGraphicsWebView::resizesToContents(void) const
?scrollToAnchor@QWebFrame@@QAEXABVQString@@@Z @ 647 NONAME ; void QWebFrame::scrollToAnchor(class QString const &)
- ?setInspectorUrl@QWebSettings@@QAEXABVQUrl@@@Z @ 648 NONAME ; void QWebSettings::setInspectorUrl(class QUrl const &)
+ ?setInspectorUrl@QWebSettings@@QAEXABVQUrl@@@Z @ 648 NONAME ABSENT ; void QWebSettings::setInspectorUrl(class QUrl const &)
?setResizesToContents@QGraphicsWebView@@QAEX_N@Z @ 649 NONAME ; void QGraphicsWebView::setResizesToContents(bool)
?setTiledBackingStoreFrozen@QGraphicsWebView@@QAEX_N@Z @ 650 NONAME ; void QGraphicsWebView::setTiledBackingStoreFrozen(bool)
+ ?qtwebkit_webframe_scrollOverflow@@YA_NPAVQWebFrame@@HHABVQPoint@@@Z @ 651 NONAME ; bool qtwebkit_webframe_scrollOverflow(QWebFrame *, int, int, const QPoint&)
diff --git a/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def b/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def
index ca462d0..e0f2125 100644
--- a/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def
+++ b/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def
@@ -712,11 +712,61 @@ EXPORTS
_Z47qt_drt_setDomainRelaxationForbiddenForURLSchemebRK7QString @ 711 NONAME
_ZN9QWebFrame11pageChangedEv @ 712 NONAME
_ZN9QWebFrame14scrollToAnchorERK7QString @ 713 NONAME
- _ZN12QWebSettings15setInspectorUrlERK4QUrl @ 714 NONAME
+ _ZN12QWebSettings15setInspectorUrlERK4QUrl @ 714 NONAME ABSENT
_ZN13QWebInspector10closeEventEP11QCloseEvent @ 715 NONAME
_ZN16QGraphicsWebView26setTiledBackingStoreFrozenEb @ 716 NONAME
_ZNK16QGraphicsWebView25isTiledBackingStoreFrozenEv @ 717 NONAME
_Z18qt_wrt_setViewModeP8QWebPageRK7QString @ 718 NONAME ABSENT
_Z19qt_drt_setMediaTypeP9QWebFrameRK7QString @ 719 NONAME
_Z26qt_drt_enableCaretBrowsingP8QWebPageb @ 720 NONAME
- _ZNK12QWebSettings12inspectorUrlEv @ 721 NONAME
+ _ZNK12QWebSettings12inspectorUrlEv @ 721 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt19webPageSetGroupNameEP8QWebPageRK7QString @ 722 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt16webPageGroupNameEP8QWebPage @ 723 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt23garbageCollectorCollectEv @ 724 NONAME ABSENT
+ _Z32qtwebkit_webframe_scrollOverflowP9QWebFrameiiRK6QPoint @ 725 NONAME
+ _ZN23DumpRenderTreeSupportQt12setMediaTypeEP9QWebFrameRK7QString @ 726 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt13numberOfPagesEP9QWebFrameff @ 727 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt13selectedRangeEP8QWebPage @ 728 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt14clearFrameNameEP9QWebFrame @ 729 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt14pauseAnimationEP9QWebFrameRK7QStringdS4_ @ 730 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt15dumpFrameLoaderEb @ 731 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt16dumpNotificationEb @ 732 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt16isCommandEnabledEP8QWebPageRK7QString @ 733 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt16webInspectorShowEP8QWebPage @ 734 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt17pauseSVGAnimationEP9QWebFrameRK7QStringdS4_ @ 735 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt17webInspectorCloseEP8QWebPage @ 736 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt17workerThreadCountEv @ 737 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt18hasDocumentElementEP9QWebFrame @ 738 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt20dumpEditingCallbacksEb @ 739 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt21markerTextForListItemERK11QWebElement @ 740 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt22javaScriptObjectsCountEv @ 741 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt23setCaretBrowsingEnabledEP8QWebPageb @ 742 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt24executeCoreCommandByNameEP8QWebPageRK7QStringS4_ @ 743 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt21dumpSetAcceptsEditingEb @744 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt22resumeActiveDOMObjectsEP9QWebFrame @745 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt23suspendActiveDOMObjectsEP9QWebFrame @746 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt24numberOfActiveAnimationsEP9QWebFrame @747 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt24pageNumberForElementByIdEP9QWebFrameRK7QStringff @748 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt25dumpResourceLoadCallbacksEb @749 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt25pauseTransitionOfPropertyEP9QWebFrameRK7QStringdS4_ @750 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt25setFrameFlatteningEnabledEP8QWebPageb @751 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt25webInspectorExecuteScriptEP8QWebPagelRK7QString @752 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt25whiteListAccessFromOriginERK7QStringS2_S2_b @753 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt26counterValueForElementByIdEP9QWebFrameRK7QString @754 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt26firstRectForCharacterRangeEP8QWebPageii @755 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt26overwritePluginDirectoriesEv @756 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt27resetOriginAccessWhiteListsEv @757 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt27setSmartInsertDeleteEnabledEP8QWebPageb @758 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt27setTimelineProfilingEnabledEP8QWebPageb @759 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt28setDumpRenderTreeModeEnabledEb @760 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt29dumpResourceLoadCallbacksPathERK7QString @761 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt29evaluateScriptInIsolatedWorldEP9QWebFrameiRK7QString @762 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt29setJavaScriptProfilingEnabledEP9QWebFrameb @763 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt29setWillSendRequestReturnsNullEb @764 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt30setWillSendRequestClearHeadersERK11QStringList @765 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt33computedStyleIncludingVisitedInfoERK11QWebElement @766 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt34setSelectTrailingWhitespaceEnabledEP8QWebPageb @767 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt39elementDoesAutoCompleteForElementWithIdEP9QWebFrameRK7QString @768 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt39setWillSendRequestReturnsNullOnRedirectEb @769 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt40garbageCollectorCollectOnAlternateThreadEb @770 NONAME ABSENT
+ _ZN23DumpRenderTreeSupportQt40setDomainRelaxationForbiddenForURLSchemeEbRK7QString @771 NONAME ABSENT
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
index bea7a67..76fdba3 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
@@ -600,7 +600,12 @@ private slots:
void setHtmlWithBaseURL();
void ipv6HostEncoding();
void metaData();
+#if !defined(Q_WS_MAEMO_5)
+ // as maemo 5 does not use QComboBoxes to implement the popups
+ // this test does not make sense for it.
void popupFocus();
+#endif
+ void inputFieldFocus();
void hitTestContent();
void jsByteArray();
void ownership();
@@ -686,13 +691,13 @@ private:
QWebView* m_view;
QWebPage* m_page;
MyQObject* m_myObject;
- QWebView* m_popupTestView;
- int m_popupTestPaintCount;
+ QWebView* m_inputFieldsTestView;
+ int m_inputFieldTestPaintCount;
};
tst_QWebFrame::tst_QWebFrame()
: sTrue("true"), sFalse("false"), sUndefined("undefined"), sArray("array"), sFunction("function"), sError("error"),
- sString("string"), sObject("object"), sNumber("number"), m_popupTestView(0), m_popupTestPaintCount(0)
+ sString("string"), sObject("object"), sNumber("number"), m_inputFieldsTestView(0), m_inputFieldTestPaintCount(0)
{
}
@@ -702,10 +707,10 @@ tst_QWebFrame::~tst_QWebFrame()
bool tst_QWebFrame::eventFilter(QObject* watched, QEvent* event)
{
- // used on the popupFocus test
- if (watched == m_popupTestView) {
+ // used on the inputFieldFocus test
+ if (watched == m_inputFieldsTestView) {
if (event->type() == QEvent::Paint)
- m_popupTestPaintCount++;
+ m_inputFieldTestPaintCount++;
}
return QObject::eventFilter(watched, event);
}
@@ -780,7 +785,7 @@ void tst_QWebFrame::getSetStaticProperty()
QCOMPARE(vm.size(), 3);
QCOMPARE(vm.value("a").toInt(), 123);
QCOMPARE(vm.value("b").toString(), QLatin1String("foo"));
- QCOMPARE(vm.value("c").value<QObject*>(), m_myObject);
+ QCOMPARE(vm.value("c").value<QObject*>(), static_cast<QObject*>(m_myObject));
}
QCOMPARE(evalJS("myObject.variantMapProperty.a === 123"), sTrue);
QCOMPARE(evalJS("myObject.variantMapProperty.b === 'foo'"), sTrue);
@@ -2549,6 +2554,7 @@ void tst_QWebFrame::metaData()
QCOMPARE(metaData.value("nonexistant"), QString());
}
+#if !defined(Q_WS_MAEMO_5)
void tst_QWebFrame::popupFocus()
{
QWebView view;
@@ -2580,16 +2586,27 @@ void tst_QWebFrame::popupFocus()
// hide the popup and check if focus is on the page
combo->hidePopup();
QTRY_VERIFY(view.hasFocus() && !combo->view()->hasFocus()); // Focus should be back on the WebView
+}
+#endif
+
+void tst_QWebFrame::inputFieldFocus()
+{
+ QWebView view;
+ view.setHtml("<html><body><input type=\"text\"></input></body></html>");
+ view.resize(400, 100);
+ view.show();
+ view.setFocus();
+ QTRY_VERIFY(view.hasFocus());
// double the flashing time, should at least blink once already
int delay = qApp->cursorFlashTime() * 2;
// focus the lineedit and check if it blinks
- QTest::mouseClick(&view, Qt::LeftButton, 0, QPoint(200, 25));
- m_popupTestView = &view;
+ QTest::mouseClick(&view, Qt::LeftButton, 0, QPoint(25, 25));
+ m_inputFieldsTestView = &view;
view.installEventFilter( this );
QTest::qWait(delay);
- QVERIFY2(m_popupTestPaintCount >= 3,
+ QVERIFY2(m_inputFieldTestPaintCount >= 3,
"The input field should have a blinking caret");
}
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
index 12fb9b3..27f4b27 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
@@ -121,7 +121,8 @@ private slots:
void originatingObjectInNetworkRequests();
void testJSPrompt();
void showModalDialog();
-
+ void testStopScheduledPageRefresh();
+
private:
QWebView* m_view;
QWebPage* m_page;
@@ -1450,11 +1451,16 @@ void tst_QWebPage::inputMethods()
QString selectionValue = variant.value<QString>();
QCOMPARE(selectionValue, QString("eb"));
- //Set selection with negative length
- inputAttributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, 6, -5, QVariant());
+ //Cancel current composition first
+ inputAttributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, 0, 0, QVariant());
QInputMethodEvent eventSelection2("",inputAttributes);
page->event(&eventSelection2);
+ //Set selection with negative length
+ inputAttributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, 6, -5, QVariant());
+ QInputMethodEvent eventSelection3("",inputAttributes);
+ page->event(&eventSelection3);
+
//ImAnchorPosition
variant = page->inputMethodQuery(Qt::ImAnchorPosition);
anchorPosition = variant.toInt();
@@ -1492,6 +1498,98 @@ void tst_QWebPage::inputMethods()
QCOMPARE(value, QString("QtWebKit"));
#endif
+ // Cancel current composition first
+ inputAttributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, 0, 0, QVariant());
+ QInputMethodEvent eventSelection4("", inputAttributes);
+ page->event(&eventSelection4);
+
+ // START - Tests for Selection when the Editor is NOT in Composition mode
+
+ // LEFT to RIGHT selection
+ // Deselect the selection by sending MouseButtonPress events
+ // This moves the current cursor to the end of the text
+ page->event(&evpres);
+ page->event(&evrel);
+
+ //Move to the start of the line
+ page->triggerAction(QWebPage::MoveToStartOfLine);
+
+ QKeyEvent keyRightEventPress(QEvent::KeyPress, Qt::Key_Right, Qt::NoModifier);
+ QKeyEvent keyRightEventRelease(QEvent::KeyRelease, Qt::Key_Right, Qt::NoModifier);
+
+ //Move 2 characters RIGHT
+ for (int j = 0; j < 2; ++j) {
+ page->event(&keyRightEventPress);
+ page->event(&keyRightEventRelease);
+ }
+
+ //Select to the end of the line
+ page->triggerAction(QWebPage::SelectEndOfLine);
+
+ //ImAnchorPosition QtWebKit
+ variant = page->inputMethodQuery(Qt::ImAnchorPosition);
+ anchorPosition = variant.toInt();
+ QCOMPARE(anchorPosition, 2);
+
+ //ImCursorPosition
+ variant = page->inputMethodQuery(Qt::ImCursorPosition);
+ cursorPosition = variant.toInt();
+ QCOMPARE(cursorPosition, 8);
+
+ //ImCurrentSelection
+ variant = page->inputMethodQuery(Qt::ImCurrentSelection);
+ selectionValue = variant.value<QString>();
+ QCOMPARE(selectionValue, QString("WebKit"));
+
+ //RIGHT to LEFT selection
+ //Deselect the selection (this moves the current cursor to the end of the text)
+ page->event(&evpres);
+ page->event(&evrel);
+
+ //ImAnchorPosition
+ variant = page->inputMethodQuery(Qt::ImAnchorPosition);
+ anchorPosition = variant.toInt();
+ QCOMPARE(anchorPosition, 8);
+
+ //ImCursorPosition
+ variant = page->inputMethodQuery(Qt::ImCursorPosition);
+ cursorPosition = variant.toInt();
+ QCOMPARE(cursorPosition, 8);
+
+ //ImCurrentSelection
+ variant = page->inputMethodQuery(Qt::ImCurrentSelection);
+ selectionValue = variant.value<QString>();
+ QCOMPARE(selectionValue, QString(""));
+
+ QKeyEvent keyLeftEventPress(QEvent::KeyPress, Qt::Key_Left, Qt::NoModifier);
+ QKeyEvent keyLeftEventRelease(QEvent::KeyRelease, Qt::Key_Left, Qt::NoModifier);
+
+ //Move 2 characters LEFT
+ for (int i = 0; i < 2; ++i) {
+ page->event(&keyLeftEventPress);
+ page->event(&keyLeftEventRelease);
+ }
+
+ //Select to the start of the line
+ page->triggerAction(QWebPage::SelectStartOfLine);
+
+ //ImAnchorPosition
+ variant = page->inputMethodQuery(Qt::ImAnchorPosition);
+ anchorPosition = variant.toInt();
+ QCOMPARE(anchorPosition, 6);
+
+ //ImCursorPosition
+ variant = page->inputMethodQuery(Qt::ImCursorPosition);
+ cursorPosition = variant.toInt();
+ QCOMPARE(cursorPosition, 0);
+
+ //ImCurrentSelection
+ variant = page->inputMethodQuery(Qt::ImCurrentSelection);
+ selectionValue = variant.value<QString>();
+ QCOMPARE(selectionValue, QString("QtWebK"));
+
+ //END - Tests for Selection when the Editor is not in Composition mode
+
//ImhHiddenText
QMouseEvent evpresPassword(QEvent::MouseButtonPress, inputs.at(1).geometry().center(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
page->event(&evpresPassword);
@@ -1998,5 +2096,30 @@ void tst_QWebPage::showModalDialog()
QCOMPARE(res, QString("This is a test"));
}
+void tst_QWebPage::testStopScheduledPageRefresh()
+{
+ // Without QWebPage::StopScheduledPageRefresh
+ QWebPage page1;
+ page1.setNetworkAccessManager(new TestNetworkManager(&page1));
+ page1.mainFrame()->setHtml("<html><head>"
+ "<meta http-equiv=\"refresh\"content=\"0;URL=http://qt.nokia.com/favicon.ico\">"
+ "</head><body><h1>Page redirects immediately...</h1>"
+ "</body></html>");
+ QVERIFY(::waitForSignal(&page1, SIGNAL(loadFinished(bool))));
+ QTest::qWait(500);
+ QCOMPARE(page1.mainFrame()->url().toString(), QString("http://qt.nokia.com/favicon.ico"));
+
+ // With QWebPage::StopScheduledPageRefresh
+ QWebPage page2;
+ page2.setNetworkAccessManager(new TestNetworkManager(&page2));
+ page2.mainFrame()->setHtml("<html><head>"
+ "<meta http-equiv=\"refresh\"content=\"1;URL=http://qt.nokia.com/favicon.ico\">"
+ "</head><body><h1>Page redirect test with 1 sec timeout...</h1>"
+ "</body></html>");
+ page2.triggerAction(QWebPage::StopScheduledPageRefresh);
+ QTest::qWait(1500);
+ QCOMPARE(page2.mainFrame()->url().toString(), QString("about:blank"));
+}
+
QTEST_MAIN(tst_QWebPage)
#include "tst_qwebpage.moc"
diff --git a/src/activeqt/control/control.pro b/src/activeqt/control/control.pro
index bf3647e..44eb928 100644
--- a/src/activeqt/control/control.pro
+++ b/src/activeqt/control/control.pro
@@ -15,7 +15,7 @@ TARGET = QAxServer
}
CONFIG += qt warn_off staticlib
-QTDIR_build:DESTDIR = $$QT_BUILD_TREE\lib
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE\\lib
DEFINES += QAX_SERVER
win32-g++:DEFINES += QT_NEEDS_QMAIN
diff --git a/src/corelib/arch/qatomic_alpha.h b/src/corelib/arch/qatomic_alpha.h
index 5d0b2b6..6989c25 100644
--- a/src/corelib/arch/qatomic_alpha.h
+++ b/src/corelib/arch/qatomic_alpha.h
@@ -367,7 +367,7 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValu
template <typename T>
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
{
- register void *old, *tmp;
+ register T *old, *tmp;
asm volatile("1:\n"
"ldq_l %0,%2\n" /* old=*ptr; */
"mov %3,%1\n" /* tmp=newval; */
@@ -385,7 +385,7 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
template <typename T>
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
{
- register void *old, *tmp;
+ register T *old, *tmp;
asm volatile("1:\n"
"ldq_l %0,%2\n" /* old=*ptr; */
"mov %3,%1\n" /* tmp=newval; */
@@ -404,7 +404,7 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
template <typename T>
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
{
- register void *old, *tmp;
+ register T *old, *tmp;
asm volatile("mb\n"
"1:\n"
"ldq_l %0,%2\n" /* old=*ptr; */
@@ -423,7 +423,7 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
template <typename T>
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
{
- register void *old, *tmp;
+ register T *old, *tmp;
asm volatile("1:\n"
"ldq_l %0,%2\n" /* old=*ptr; */
"addq %0,%3,%1\n"/* tmp=old+value; */
@@ -441,7 +441,7 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueTo
template <typename T>
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
{
- register void *old, *tmp;
+ register T *old, *tmp;
asm volatile("1:\n"
"ldq_l %0,%2\n" /* old=*ptr; */
"addq %0,%3,%1\n"/* tmp=old+value; */
@@ -460,7 +460,7 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueTo
template <typename T>
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
{
- register void *old, *tmp;
+ register T *old, *tmp;
asm volatile("mb\n"
"1:\n"
"ldq_l %0,%2\n" /* old=*ptr; */
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index 83fa044..e39d326 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -3,6 +3,7 @@ QPRO_PWD = $$PWD
QT =
DEFINES += QT_BUILD_CORE_LIB QT_NO_USING_NAMESPACE
win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x67000000
+irix-cc*:QMAKE_CXXFLAGS += -no_prelink -ptused
include(../qbase.pri)
include(animation/animation.pri)
diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h
index c66047a..a333153 100644
--- a/src/corelib/global/qfeatures.h
+++ b/src/corelib/global/qfeatures.h
@@ -335,11 +335,6 @@
#define QT_NO_DATESTRING
#endif
-// QtDBus module
-#if !defined(QT_NO_DBUS) && (defined(QT_NO_PROPERTIES))
-#define QT_NO_DBUS
-#endif
-
// QDial
#if !defined(QT_NO_DIAL) && (defined(QT_NO_SLIDER))
#define QT_NO_DIAL
@@ -515,6 +510,11 @@
#define QT_NO_CONTEXTMENU
#endif
+// QtDBus module
+#if !defined(QT_NO_DBUS) && (defined(QT_NO_PROPERTIES) || defined(QT_NO_DOM))
+#define QT_NO_DBUS
+#endif
+
// File Transfer Protocol
#if !defined(QT_NO_FTP) && (defined(QT_NO_URLINFO) || defined(QT_NO_TEXTDATE))
#define QT_NO_FTP
diff --git a/src/corelib/global/qfeatures.txt b/src/corelib/global/qfeatures.txt
index ed173b1..3e6af24 100644
--- a/src/corelib/global/qfeatures.txt
+++ b/src/corelib/global/qfeatures.txt
@@ -1373,7 +1373,7 @@ SeeAlso: ???
Feature: DBUS
Description: Provides classes for D-Bus.
Section: D-Bus
-Requires: PROPERTIES
+Requires: PROPERTIES DOM
Name: QtDBus module
SeeAlso: ???
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index 808ff44..28ac377 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -2436,6 +2436,9 @@ QT3_SUPPORT Q_CORE_EXPORT const char *qInstallPathSysconf();
#if defined(Q_OS_SYMBIAN)
#ifdef SYMBIAN_BUILD_GCE
+#define Q_SYMBIAN_SUPPORTS_SURFACES
+//RWsPointerCursor is fixed, so don't use low performance sprites
+#define Q_SYMBIAN_FIXED_POINTER_CURSORS
#define Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE
#define Q_SYMBIAN_WINDOW_SIZE_CACHE
#define QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER
diff --git a/src/corelib/io/qdebug.h b/src/corelib/io/qdebug.h
index bc68599..093312f 100644
--- a/src/corelib/io/qdebug.h
+++ b/src/corelib/io/qdebug.h
@@ -254,6 +254,29 @@ inline QDebug operator<<(QDebug debug, const QContiguousCache<T> &cache)
return debug.space();
}
+#if defined(FORCE_UREF)
+template <class T>
+inline QDebug &operator<<(QDebug debug, const QFlags<T> &flags)
+#else
+template <class T>
+inline QDebug operator<<(QDebug debug, const QFlags<T> &flags)
+#endif
+{
+ debug.nospace() << "QFlags(";
+ bool needSeparator = false;
+ for (uint i = 0; i < sizeof(T) * 8; ++i) {
+ if (flags.testFlag(T(1 << i))) {
+ if (needSeparator)
+ debug.nospace() << '|';
+ else
+ needSeparator = true;
+ debug.nospace() << "0x" << QByteArray::number(T(1 << i), 16).constData();
+ }
+ }
+ debug << ')';
+ return debug.space();
+}
+
#if !defined(QT_NO_DEBUG_STREAM)
Q_CORE_EXPORT_INLINE QDebug qDebug() { return QDebug(QtDebugMsg); }
diff --git a/src/corelib/kernel/qabstractitemmodel.cpp b/src/corelib/kernel/qabstractitemmodel.cpp
index 3660a3c..b0e2f48 100644
--- a/src/corelib/kernel/qabstractitemmodel.cpp
+++ b/src/corelib/kernel/qabstractitemmodel.cpp
@@ -2501,34 +2501,42 @@ bool QAbstractItemModelPrivate::allowMove(const QModelIndex &srcParent, int star
}
/*!
+ \since 4.6
+
Begins a row move operation.
When reimplementing a subclass, this method simplifies moving
entities in your model. This method is responsible for moving
persistent indexes in the model, which you would otherwise be
- required to do yourself.
-
- Using beginMoveRows and endMoveRows is an alternative to emitting
- layoutAboutToBeChanged and layoutChanged directly along with
- changePersistentIndexes. layoutAboutToBeChanged is emitted by
- this method for compatibility reasons.
+ required to do yourself. Using beginMoveRows and endMoveRows
+ is an alternative to emitting layoutAboutToBeChanged and
+ layoutChanged directly along with changePersistentIndexes.
+ layoutAboutToBeChanged is emitted by this method for compatibility
+ reasons.
The \a sourceParent index corresponds to the parent from which the
- rows are moved; \a sourceFirst and \a sourceLast are the row
- numbers of the rows to be moved. The \a destinationParent index
- corresponds to the parent into which the rows are moved. The \a
+ rows are moved; \a sourceFirst and \a sourceLast are the first and last
+ row numbers of the rows to be moved. The \a destinationParent index
+ corresponds to the parent into which those rows are moved. The \a
destinationChild is the row to which the rows will be moved. That
is, the index at row \a sourceFirst in \a sourceParent will become
- row \a destinationChild in \a destinationParent. Its siblings will
- be moved correspondingly.
-
- Note that \a sourceParent and \a destinationParent may be the
- same, in which case you must ensure that the \a destinationChild is
- not within the range of \a sourceFirst and \a sourceLast. You
- must also ensure that you do not attempt to move a row to one of
- its own chilren or ancestors. This method returns false if either
- condition is true, in which case you should abort your move
- operation.
+ row \a destinationChild in \a destinationParent, followed by all other
+ rows up to \a sourceLast.
+
+ However, when moving rows down in the same parent (\a sourceParent
+ and \a destinationParent are equal), the rows will be placed before the
+ \a destinationChild index. That is, if you wish to move rows 0 and 1 so
+ they will become rows 1 and 2, \a destinationChild should be 3. In this
+ case, the new index for the source row \c i (which is between
+ \a sourceFirst and \a sourceLast) is equal to
+ \c {(destinationChild-sourceLast-1+i)}.
+
+ Note that if \a sourceParent and \a destinationParent are the same,
+ you must ensure that the \a destinationChild is not within the range
+ of \a sourceFirst and \a sourceLast + 1. You must also ensure that you
+ do not attempt to move a row to one of its own children or ancestors.
+ This method returns false if either condition is true, in which case you
+ should abort your move operation.
\table 80%
\row
@@ -2582,13 +2590,7 @@ bool QAbstractItemModelPrivate::allowMove(const QModelIndex &srcParent, int star
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
*/
bool QAbstractItemModel::beginMoveRows(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationChild)
{
@@ -2765,29 +2767,35 @@ void QAbstractItemModel::endRemoveColumns()
When reimplementing a subclass, this method simplifies moving
entities in your model. This method is responsible for moving
persistent indexes in the model, which you would otherwise be
- required to do yourself.
-
- Using beginMoveColumns and endMoveColumns is an alternative to
- emitting layoutAboutToBeChanged and layoutChanged directly along
- with changePersistentIndexes. layoutAboutToBeChanged is emitted
- by this method for compatibility reasons.
+ required to do yourself. Using beginMoveRows and endMoveRows
+ is an alternative to emitting layoutAboutToBeChanged and
+ layoutChanged directly along with changePersistentIndexes.
+ layoutAboutToBeChanged is emitted by this method for compatibility
+ reasons.
The \a sourceParent index corresponds to the parent from which the
- columns are moved; \a sourceFirst and \a sourceLast are the column
- numbers of the columns to be moved. The \a destinationParent index
- corresponds to the parent into which the columns are moved. The \a
- destinationChild is the column to which the columns will be
- moved. That is, the index at column \a sourceFirst in \a
- sourceParent will become column \a destinationChild in \a
- destinationParent. Its siblings will be moved correspondingly.
-
- Note that \a sourceParent and \a destinationParent may be the
- same, in which case you must ensure that the \a destinationChild
- is not within the range of \a sourceFirst and \a sourceLast. You
- must also ensure that you do not attempt to move a row to one of
- its own chilren or ancestors. This method returns false if either
- condition is true, in which case you should abort your move
- operation.
+ columns are moved; \a sourceFirst and \a sourceLast are the first and last
+ column numbers of the columns to be moved. The \a destinationParent index
+ corresponds to the parent into which those columns are moved. The \a
+ destinationChild is the column to which the columns will be moved. That
+ is, the index at column \a sourceFirst in \a sourceParent will become
+ column \a destinationChild in \a destinationParent, followed by all other
+ columns up to \a sourceLast.
+
+ However, when moving columns down in the same parent (\a sourceParent
+ and \a destinationParent are equal), the columnss will be placed before the
+ \a destinationChild index. That is, if you wish to move columns 0 and 1 so
+ they will become columns 1 and 2, \a destinationChild should be 3. In this
+ case, the new index for the source column \c i (which is between
+ \a sourceFirst and \a sourceLast) is equal to
+ \c {(destinationChild-sourceLast-1+i)}.
+
+ Note that if \a sourceParent and \a destinationParent are the same,
+ you must ensure that the \a destinationChild is not within the range
+ of \a sourceFirst and \a sourceLast + 1. You must also ensure that you
+ do not attempt to move a column to one of its own children or ancestors.
+ This method returns false if either condition is true, in which case you
+ should abort your move operation.
\sa endMoveColumns()
diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp
index 33775d2..1cb8455 100644
--- a/src/corelib/kernel/qeventdispatcher_symbian.cpp
+++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp
@@ -100,25 +100,40 @@ static inline int qt_socket_select(int nfds, fd_set *readfds, fd_set *writefds,
class QSelectMutexGrabber
{
public:
- QSelectMutexGrabber(int fd, QMutex *mutex)
- : m_mutex(mutex)
+ QSelectMutexGrabber(int fd, QMutex *threadMutex, QMutex *selectCallMutex)
+ : m_threadMutex(threadMutex), m_selectCallMutex(selectCallMutex), bHasThreadLock(false)
{
- if (m_mutex->tryLock())
+ // see if selectThread is waiting m_waitCond
+ // if yes ... dont write to pipe
+ if (m_threadMutex->tryLock()) {
+ bHasThreadLock = true;
return;
+ }
+
+ // still check that SelectThread
+ // is in select call
+ if (m_selectCallMutex->tryLock()) {
+ m_selectCallMutex->unlock();
+ return;
+ }
char dummy = 0;
qt_pipe_write(fd, &dummy, 1);
- m_mutex->lock();
+ m_threadMutex->lock();
+ bHasThreadLock = true;
}
~QSelectMutexGrabber()
{
- m_mutex->unlock();
+ if(bHasThreadLock)
+ m_threadMutex->unlock();
}
private:
- QMutex *m_mutex;
+ QMutex *m_threadMutex;
+ QMutex *m_selectCallMutex;
+ bool bHasThreadLock;
};
/*
@@ -400,7 +415,12 @@ void QSelectThread::run()
int ret;
int savedSelectErrno;
- ret = qt_socket_select(maxfd, &readfds, &writefds, &exceptionfds, 0);
+ {
+ // helps fighting the race condition between
+ // selctthread and new socket requests (cancel, restart ...)
+ QMutexLocker locker(&m_selectCallMutex);
+ ret = qt_socket_select(maxfd, &readfds, &writefds, &exceptionfds, 0);
+ }
savedSelectErrno = errno;
char buffer;
@@ -495,7 +515,9 @@ void QSelectThread::requestSocketEvents ( QSocketNotifier *notifier, TRequestSta
start();
}
- QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex);
+ QMutexLocker locker(&m_grabberMutex);
+
+ QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex);
Q_ASSERT(!m_AOStatuses.contains(notifier));
@@ -506,7 +528,9 @@ void QSelectThread::requestSocketEvents ( QSocketNotifier *notifier, TRequestSta
void QSelectThread::cancelSocketEvents ( QSocketNotifier *notifier )
{
- QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex);
+ QMutexLocker locker(&m_grabberMutex);
+
+ QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex);
m_AOStatuses.remove(notifier);
@@ -515,7 +539,9 @@ void QSelectThread::cancelSocketEvents ( QSocketNotifier *notifier )
void QSelectThread::restart()
{
- QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex);
+ QMutexLocker locker(&m_grabberMutex);
+
+ QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex);
m_waitCond.wakeAll();
}
diff --git a/src/corelib/kernel/qeventdispatcher_symbian_p.h b/src/corelib/kernel/qeventdispatcher_symbian_p.h
index bc42753..211ded4 100644
--- a/src/corelib/kernel/qeventdispatcher_symbian_p.h
+++ b/src/corelib/kernel/qeventdispatcher_symbian_p.h
@@ -211,6 +211,26 @@ private:
QMutex m_mutex;
QWaitCondition m_waitCond;
bool m_quit;
+
+ // to protect when several
+ // requests like:
+ // requestSocketEvents
+ // cancelSocketEvents
+ // kick in the same time
+ // all will fight for m_mutex
+ //
+ // TODO: fix more elegantely
+ //
+ QMutex m_grabberMutex;
+
+ // this one will tell
+ // if selectthread is
+ // really in select call
+ // and will prevent
+ // writing to pipe that
+ // causes later in locking
+ // of the thread in waitcond
+ QMutex m_selectCallMutex;
};
class Q_CORE_EXPORT CQtActiveScheduler : public CActiveScheduler
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index c2e12f8..2ccd0a5 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -1454,6 +1454,11 @@ QMetaMethod::MethodType QMetaMethod::methodType() const
If the "compute" slot does not take exactly one QString, one int
and one double in the specified order, the call will fail.
+ \warning this method will not test the validity of the arguments: \a object
+ must be an instance of the class of the QMetaObject of which this QMetaMethod
+ has been constructed with. The arguments must have the same type as the ones
+ expected by the method, else, the behaviour is undefined.
+
\sa Q_ARG(), Q_RETURN_ARG(), qRegisterMetaType(), QMetaObject::invokeMethod()
*/
bool QMetaMethod::invoke(QObject *object,
@@ -1473,6 +1478,8 @@ bool QMetaMethod::invoke(QObject *object,
if (!object || !mobj)
return false;
+ Q_ASSERT(mobj->cast(object));
+
// check return type
if (returnValue.data()) {
const char *retType = typeName();
diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h
index 205f911..b9e7e01 100644
--- a/src/corelib/tools/qchar.h
+++ b/src/corelib/tools/qchar.h
@@ -358,11 +358,7 @@ private:
QChar(uchar c);
#endif
ushort ucs;
-}
-#if (defined(__arm__) || defined(__ARMEL__))
- Q_PACKED
-#endif
- ;
+};
Q_DECLARE_TYPEINFO(QChar, Q_MOVABLE_TYPE);
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index 519ff3d..c000dc8 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -754,6 +754,7 @@ struct WindowsToISOListElt {
char iso_name[6];
};
+/* NOTE: This array should be sorted by the first column! */
static const WindowsToISOListElt windows_to_iso_list[] = {
{ 0x0401, "ar_SA" },
{ 0x0402, "bg\0 " },
diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h
index 5023201..f2fd892 100644
--- a/src/corelib/tools/qlocale.h
+++ b/src/corelib/tools/qlocale.h
@@ -685,11 +685,7 @@ public:
struct Data {
quint16 index;
quint16 numberOptions;
- }
-#if (defined(__arm__) || defined(__ARMEL__))
- Q_PACKED
-#endif
- ;
+ };
private:
friend struct QLocalePrivate;
// ### We now use this field to pack an index into locale_data and NumberOptions.
diff --git a/src/corelib/tools/qlocale_symbian.cpp b/src/corelib/tools/qlocale_symbian.cpp
index b6afa12..458bb2a 100644
--- a/src/corelib/tools/qlocale_symbian.cpp
+++ b/src/corelib/tools/qlocale_symbian.cpp
@@ -93,73 +93,75 @@ struct symbianToISO {
/*
- Mapping from Symbian to ISO locale
+ Mapping from Symbian to ISO locale.
+ NOTE: This array should be sorted by the first column!
*/
static const symbianToISO symbian_to_iso_list[] = {
- { ELangEnglish, "en_GB" },
- { ELangFrench, "fr_FR" },
- { ELangGerman, "de_DE" },
- { ELangSpanish, "es_ES" },
- { ELangItalian, "it_IT" },
- { ELangSwedish, "sv_SE" },
- { ELangDanish, "da_DK" },
- { ELangNorwegian, "no_NO" },
- { ELangNorwegianNynorsk, "nn_NO" },
- { ELangFinnish, "fi_FI" },
- { ELangAmerican, "en_US" },
- { ELangPortuguese, "pt_PT" },
- { ELangTurkish, "tr_TR" },
- { ELangIcelandic, "is_IS" },
- { ELangRussian, "ru_RU" },
- { ELangHungarian, "hu_HU" },
- { ELangDutch, "nl_NL" },
- { ELangBelgianFlemish, "nl_BE" },
- { ELangCzech, "cs_CZ" },
- { ELangSlovak, "sk_SK" },
- { ELangPolish, "pl_PL" },
- { ELangSlovenian, "sl_SI" },
- { ELangTaiwanChinese, "zh_TW" },
- { ELangHongKongChinese, "zh_HK" },
- { ELangPrcChinese, "zh_CN" },
- { ELangJapanese, "ja_JP" },
- { ELangThai, "th_TH" },
- { ELangArabic, "ar_AE" },
- { ELangTagalog, "tl_PH" },
- { ELangBulgarian, "bg_BG" },
- { ELangCatalan, "ca_ES" },
- { ELangCroatian, "hr_HR" },
- { ELangEstonian, "et_EE" },
- { ELangFarsi, "fa_IR" },
- { ELangCanadianFrench, "fr_CA" },
- { ELangGreek, "el_GR" },
- { ELangHebrew, "he_IL" },
- { ELangHindi, "hi_IN" },
- { ELangIndonesian, "id_ID" },
- { ELangLatvian, "lv_LV" },
- { ELangLithuanian, "lt_LT" },
- { ELangMalay, "ms_MY" },
- { ELangBrazilianPortuguese, "pt_BR" },
- { ELangRomanian, "ro_RO" },
- { ELangSerbian, "sr_RS" },
- { ELangLatinAmericanSpanish,"es_419" },
- { ELangUkrainian, "uk_UA" },
- { ELangUrdu, "ur_PK" }, // India/Pakistan
- { ELangVietnamese, "vi_VN" },
- { ELangKorean, "ko_KO" },
+ { ELangEnglish, "en_GB" }, // 1
+ { ELangFrench, "fr_FR" }, // 2
+ { ELangGerman, "de_DE" }, // 3
+ { ELangSpanish, "es_ES" }, // 4
+ { ELangItalian, "it_IT" }, // 5
+ { ELangSwedish, "sv_SE" }, // 6
+ { ELangDanish, "da_DK" }, // 7
+ { ELangNorwegian, "no_NO" }, // 8
+ { ELangFinnish, "fi_FI" }, // 9
+ { ELangAmerican, "en_US" }, // 10
+ { ELangPortuguese, "pt_PT" }, // 13
+ { ELangTurkish, "tr_TR" }, // 14
+ { ELangIcelandic, "is_IS" }, // 15
+ { ELangRussian, "ru_RU" }, // 16
+ { ELangHungarian, "hu_HU" }, // 17
+ { ELangDutch, "nl_NL" }, // 18
+ { ELangBelgianFlemish, "nl_BE" }, // 19
+ { ELangCzech, "cs_CZ" }, // 25
+ { ELangSlovak, "sk_SK" }, // 26
+ { ELangPolish, "pl_PL" }, // 27
+ { ELangSlovenian, "sl_SI" }, // 28
+ { ELangTaiwanChinese, "zh_TW" }, // 29
+ { ELangHongKongChinese, "zh_HK" }, // 30
+ { ELangPrcChinese, "zh_CN" }, // 31
+ { ELangJapanese, "ja_JP" }, // 32
+ { ELangThai, "th_TH" }, // 33
+ { ELangArabic, "ar_AE" }, // 37
+ { ELangTagalog, "tl_PH" }, // 39
+ { ELangBulgarian, "bg_BG" }, // 42
+ { ELangCatalan, "ca_ES" }, // 44
+ { ELangCroatian, "hr_HR" }, // 45
+ { ELangEstonian, "et_EE" }, // 49
+ { ELangFarsi, "fa_IR" }, // 50
+ { ELangCanadianFrench, "fr_CA" }, // 51
+ { ELangGreek, "el_GR" }, // 54
+ { ELangHebrew, "he_IL" }, // 57
+ { ELangHindi, "hi_IN" }, // 58
+ { ELangIndonesian, "id_ID" }, // 59
+ { ELangKorean, "ko_KO" }, // 65
+ { ELangLatvian, "lv_LV" }, // 67
+ { ELangLithuanian, "lt_LT" }, // 68
+ { ELangMalay, "ms_MY" }, // 70
+ { ELangNorwegianNynorsk, "nn_NO" }, // 75
+ { ELangBrazilianPortuguese, "pt_BR" }, // 76
+ { ELangRomanian, "ro_RO" }, // 78
+ { ELangSerbian, "sr_RS" }, // 79
+ { ELangLatinAmericanSpanish,"es_419" }, // 83
+ { ELangUkrainian, "uk_UA" }, // 93
+ { ELangUrdu, "ur_PK" }, // 94 - India/Pakistan
+ { ELangVietnamese, "vi_VN" }, // 96
#ifdef __E32LANG_H__
// 5.0
- { ELangBasque, "eu_ES" },
- { ELangGalician, "gl_ES" },
+ { ELangBasque, "eu_ES" }, // 102
+ { ELangGalician, "gl_ES" }, // 103
#endif
#if !defined(__SERIES60_31__)
- { ELangEnglish_Apac, "en" },
- { ELangEnglish_Taiwan, "en_TW" },
- { ELangEnglish_HongKong, "en_HK" },
- { ELangEnglish_Prc, "en_CN" },
- { ELangEnglish_Japan, "en_JP"},
- { ELangEnglish_Thailand, "en_TH" },
- { ELangMalay_Apac, "ms" }
+ { ELangEnglish_Apac, "en" }, // 129
+ { ELangEnglish_Taiwan, "en_TW" }, // 157 ### Not supported by CLDR
+ { ELangEnglish_HongKong, "en_HK" }, // 158
+ { ELangEnglish_Prc, "en_CN" }, // 159 ### Not supported by CLDR
+ { ELangEnglish_Japan, "en_JP"}, // 160 ### Not supported by CLDR
+ { ELangEnglish_Thailand, "en_TH" }, // 161 ### Not supported by CLDR
+ { ELangMalay_Apac, "ms" }, // 326
#endif
+ { 327/*ELangIndonesian_Apac*/,"id_ID" } // 327 - appeared in Symbian^3
};
/*!
diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
index 9773d4b..bfede94 100644
--- a/src/corelib/tools/qvarlengtharray.h
+++ b/src/corelib/tools/qvarlengtharray.h
@@ -132,9 +132,9 @@ private:
friend class QPodList<T, Prealloc>;
void realloc(int size, int alloc);
- int a;
- int s;
- T *ptr;
+ int a; // capacity
+ int s; // size
+ T *ptr; // data
union {
// ### Qt 5: Use 'Prealloc * sizeof(T)' as array size
char array[sizeof(qint64) * (((Prealloc * sizeof(T)) / sizeof(qint64)) + 1)];
@@ -197,8 +197,8 @@ Q_OUTOFLINE_TEMPLATE void QVarLengthArray<T, Prealloc>::realloc(int asize, int a
Q_ASSERT(aalloc >= asize);
T *oldPtr = ptr;
int osize = s;
- // s = asize;
+ const int copySize = qMin(asize, osize);
if (aalloc != a) {
ptr = reinterpret_cast<T *>(qMalloc(aalloc * sizeof(T)));
Q_CHECK_PTR(ptr);
@@ -209,7 +209,6 @@ Q_OUTOFLINE_TEMPLATE void QVarLengthArray<T, Prealloc>::realloc(int asize, int a
if (QTypeInfo<T>::isStatic) {
QT_TRY {
// copy all the old elements
- const int copySize = qMin(asize, osize);
while (s < copySize) {
new (ptr+s) T(*(oldPtr+s));
(oldPtr+s)->~T();
@@ -225,19 +224,19 @@ Q_OUTOFLINE_TEMPLATE void QVarLengthArray<T, Prealloc>::realloc(int asize, int a
QT_RETHROW;
}
} else {
- qMemCopy(ptr, oldPtr, qMin(asize, osize) * sizeof(T));
+ qMemCopy(ptr, oldPtr, copySize * sizeof(T));
}
} else {
ptr = oldPtr;
return;
}
}
+ s = copySize;
if (QTypeInfo<T>::isComplex) {
+ // destroy remaining old objects
while (osize > asize)
(oldPtr+(--osize))->~T();
- if (!QTypeInfo<T>::isStatic)
- s = osize;
}
if (oldPtr != reinterpret_cast<T *>(array) && oldPtr != ptr)
diff --git a/src/corelib/xml/qxmlstream.cpp b/src/corelib/xml/qxmlstream.cpp
index 1bf00b8..853f311 100644
--- a/src/corelib/xml/qxmlstream.cpp
+++ b/src/corelib/xml/qxmlstream.cpp
@@ -560,7 +560,7 @@ void QXmlStreamReader::clear()
chunk of XML can be added with addData(), if the XML is being read
from a QByteArray, or by waiting for more data to arrive if the
XML is being read from a QIODevice. Either way, atEnd() will
- return false once more adata is available.
+ return false once more data is available.
\sa hasError(), error(), device(), QIODevice::atEnd()
*/
@@ -3716,7 +3716,8 @@ void QXmlStreamWriter::writeProcessingInstruction(const QString &target, const Q
{
Q_D(QXmlStreamWriter);
Q_ASSERT(!data.contains(QLatin1String("?>")));
- d->finishStartElement();
+ if (!d->finishStartElement(false) && d->autoFormatting)
+ d->indent(d->tagStack.size());
d->write("<?");
d->write(target);
if (!data.isNull()) {
diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp
index 1a7c417..4e9c1ad 100644
--- a/src/dbus/qdbusabstractinterface.cpp
+++ b/src/dbus/qdbusabstractinterface.cpp
@@ -42,6 +42,8 @@
#include "qdbusabstractinterface.h"
#include "qdbusabstractinterface_p.h"
+#include <qthread.h>
+
#include "qdbusargument.h"
#include "qdbuspendingcall.h"
#include "qdbusmessage_p.h"
@@ -440,7 +442,8 @@ QDBusMessage QDBusAbstractInterface::callWithArgumentList(QDBus::CallMode mode,
msg.setArguments(args);
QDBusMessage reply = d->connection.call(msg, mode);
- d->lastError = reply; // will clear if reply isn't an error
+ if (thread() == QThread::currentThread())
+ d->lastError = reply; // will clear if reply isn't an error
// ensure that there is at least one element
if (reply.arguments().isEmpty())
diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp
index abb3224..4382032 100644
--- a/src/dbus/qdbusconnection.cpp
+++ b/src/dbus/qdbusconnection.cpp
@@ -1003,14 +1003,6 @@ void QDBusConnectionPrivate::setSender(const QDBusConnectionPrivate *s)
/*!
\internal
*/
-void QDBusConnectionPrivate::setConnection(const QString &name, QDBusConnectionPrivate *c)
-{
- _q_manager()->setConnection(name, c);
-}
-
-/*!
- \internal
-*/
void QDBusConnectionPrivate::setBusService(const QDBusConnection &connection)
{
busService = new QDBusConnectionInterface(connection, this);
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h
index 34bb6b3..81af2c7 100644
--- a/src/dbus/qdbusconnection_p.h
+++ b/src/dbus/qdbusconnection_p.h
@@ -309,7 +309,6 @@ public:
static QDBusConnection q(QDBusConnectionPrivate *connection) { return QDBusConnection(connection); }
static void setSender(const QDBusConnectionPrivate *s);
- static void setConnection(const QString &name, QDBusConnectionPrivate *c);
friend class QDBusActivateObjectEvent;
friend class QDBusCallDeliveryEvent;
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index b4598ae..efa6744 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -525,7 +525,7 @@ qDBusSignalFilter(DBusConnection *connection, DBusMessage *message, void *data)
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
QDBusMessage amsg = QDBusMessagePrivate::fromDBusMessage(message);
- qDBusDebug() << d << "got message:" << amsg;
+ qDBusDebug() << d << "got message (signal):" << amsg;
return d->handleMessage(amsg) ?
DBUS_HANDLER_RESULT_HANDLED :
@@ -1692,15 +1692,31 @@ static void qDBusResultReceived(DBusPendingCall *pending, void *user_data)
void QDBusConnectionPrivate::waitForFinished(QDBusPendingCallPrivate *pcall)
{
Q_ASSERT(pcall->pending);
- QDBusDispatchLocker locker(PendingCallBlockAction, this);
- q_dbus_pending_call_block(pcall->pending);
- // QDBusConnectionPrivate::processFinishedCall() is called automatically
+ Q_ASSERT(!pcall->autoDelete);
+ //Q_ASSERT(pcall->mutex.isLocked()); // there's no such function
+
+ if (pcall->waitingForFinished) {
+ // another thread is already waiting
+ pcall->waitForFinishedCondition.wait(&pcall->mutex);
+ } else {
+ pcall->waitingForFinished = true;
+ pcall->mutex.unlock();
+
+ {
+ QDBusDispatchLocker locker(PendingCallBlockAction, this);
+ q_dbus_pending_call_block(pcall->pending);
+ // QDBusConnectionPrivate::processFinishedCall() is called automatically
+ }
+ pcall->mutex.lock();
+ }
}
void QDBusConnectionPrivate::processFinishedCall(QDBusPendingCallPrivate *call)
{
QDBusConnectionPrivate *connection = const_cast<QDBusConnectionPrivate *>(call->connection);
+ QMutexLocker locker(&call->mutex);
+
QDBusMessage &msg = call->replyMessage;
if (call->pending) {
// decode the message
@@ -1730,6 +1746,12 @@ void QDBusConnectionPrivate::processFinishedCall(QDBusPendingCallPrivate *call)
qDBusDebug() << "Deliver failed!";
}
+ if (call->pending)
+ q_dbus_pending_call_unref(call->pending);
+ call->pending = 0;
+
+ locker.unlock();
+
// Are there any watchers?
if (call->watcherHelper)
call->watcherHelper->emitSignals(msg, call->sentMessage);
@@ -1737,12 +1759,10 @@ void QDBusConnectionPrivate::processFinishedCall(QDBusPendingCallPrivate *call)
if (msg.type() == QDBusMessage::ErrorMessage)
emit connection->callWithCallbackFailed(QDBusError(msg), call->sentMessage);
- if (call->pending)
- q_dbus_pending_call_unref(call->pending);
- call->pending = 0;
-
- if (call->autoDelete)
+ if (call->autoDelete) {
+ Q_ASSERT(!call->waitingForFinished); // can't wait on a call with autoDelete!
delete call;
+ }
}
int QDBusConnectionPrivate::send(const QDBusMessage& message)
@@ -1884,17 +1904,14 @@ QDBusPendingCallPrivate *QDBusConnectionPrivate::sendWithReplyAsync(const QDBusM
{
if (isServiceRegisteredByThread(message.service())) {
// special case for local calls
- QDBusPendingCallPrivate *pcall = new QDBusPendingCallPrivate;
- pcall->sentMessage = message;
+ QDBusPendingCallPrivate *pcall = new QDBusPendingCallPrivate(message, this);
pcall->replyMessage = sendWithReplyLocal(message);
- pcall->connection = this;
return pcall;
}
checkThread();
- QDBusPendingCallPrivate *pcall = new QDBusPendingCallPrivate;
- pcall->sentMessage = message;
+ QDBusPendingCallPrivate *pcall = new QDBusPendingCallPrivate(message, this);
pcall->ref = 0;
QDBusError error;
@@ -1918,7 +1935,6 @@ QDBusPendingCallPrivate *QDBusConnectionPrivate::sendWithReplyAsync(const QDBusM
q_dbus_message_unref(msg);
pcall->pending = pending;
- pcall->connection = this;
q_dbus_pending_call_set_notify(pending, qDBusResultReceived, pcall, 0);
return pcall;
diff --git a/src/dbus/qdbuspendingcall.cpp b/src/dbus/qdbuspendingcall.cpp
index dac7a92..c2e94b3 100644
--- a/src/dbus/qdbuspendingcall.cpp
+++ b/src/dbus/qdbuspendingcall.cpp
@@ -210,6 +210,8 @@ void QDBusPendingCallPrivate::setMetaTypes(int count, const int *types)
void QDBusPendingCallPrivate::checkReceivedSignature()
{
+ // MUST BE CALLED WITH A LOCKED MUTEX!
+
if (replyMessage.type() == QDBusMessage::InvalidMessage)
return; // not yet finished - no message to
// validate against
@@ -232,6 +234,8 @@ void QDBusPendingCallPrivate::checkReceivedSignature()
void QDBusPendingCallPrivate::waitForFinished()
{
+ QMutexLocker locker(&mutex);
+
if (replyMessage.type() != QDBusMessage::InvalidMessage)
return; // already finished
@@ -312,7 +316,11 @@ QDBusPendingCall &QDBusPendingCall::operator=(const QDBusPendingCall &other)
bool QDBusPendingCall::isFinished() const
{
- return !d || (d->replyMessage.type() != QDBusMessage::InvalidMessage);
+ if (!d)
+ return true; // considered finished
+
+ QMutexLocker locker(&d->mutex);
+ return d->replyMessage.type() != QDBusMessage::InvalidMessage;
}
void QDBusPendingCall::waitForFinished()
@@ -331,7 +339,10 @@ void QDBusPendingCall::waitForFinished()
*/
bool QDBusPendingCall::isValid() const
{
- return d ? d->replyMessage.type() == QDBusMessage::ReplyMessage : false;
+ if (!d)
+ return false;
+ QMutexLocker locker(&d->mutex);
+ return d->replyMessage.type() == QDBusMessage::ReplyMessage;
}
/*!
@@ -345,7 +356,10 @@ bool QDBusPendingCall::isValid() const
*/
bool QDBusPendingCall::isError() const
{
- return d ? d->replyMessage.type() == QDBusMessage::ErrorMessage : true;
+ if (!d)
+ return true; // considered finished and an error
+ QMutexLocker locker(&d->mutex);
+ return d->replyMessage.type() == QDBusMessage::ErrorMessage;
}
/*!
@@ -358,8 +372,10 @@ bool QDBusPendingCall::isError() const
*/
QDBusError QDBusPendingCall::error() const
{
- if (d)
+ if (d) {
+ QMutexLocker locker(&d->mutex);
return d->replyMessage;
+ }
// not connected, return an error
QDBusError err = QDBusError(QDBusError::Disconnected,
@@ -380,7 +396,10 @@ QDBusError QDBusPendingCall::error() const
*/
QDBusMessage QDBusPendingCall::reply() const
{
- return d ? d->replyMessage : QDBusMessage::createError(error());
+ if (!d)
+ return QDBusMessage::createError(error());
+ QMutexLocker locker(&d->mutex);
+ return d->replyMessage;
}
#if 0
@@ -441,9 +460,8 @@ QDBusPendingCall QDBusPendingCall::fromCompletedCall(const QDBusMessage &msg)
QDBusPendingCallPrivate *d = 0;
if (msg.type() == QDBusMessage::ErrorMessage ||
msg.type() == QDBusMessage::ReplyMessage) {
- d = new QDBusPendingCallPrivate;
+ d = new QDBusPendingCallPrivate(QDBusMessage(), 0);
d->replyMessage = msg;
- d->connection = 0;
}
return QDBusPendingCall(d);
@@ -473,9 +491,10 @@ QDBusPendingCallWatcher::QDBusPendingCallWatcher(const QDBusPendingCall &call, Q
: QObject(*new QDBusPendingCallWatcherPrivate, parent), QDBusPendingCall(call)
{
if (d) { // QDBusPendingCall::d
+ QMutexLocker locker(&d->mutex);
if (!d->watcherHelper) {
d->watcherHelper = new QDBusPendingCallWatcherHelper;
- if (isFinished()) {
+ if (d->replyMessage.type() != QDBusMessage::InvalidMessage) {
// cause a signal emission anyways
QMetaObject::invokeMethod(d->watcherHelper, "finished", Qt::QueuedConnection);
}
diff --git a/src/dbus/qdbuspendingcall_p.h b/src/dbus/qdbuspendingcall_p.h
index f1f6dc2..8683552 100644
--- a/src/dbus/qdbuspendingcall_p.h
+++ b/src/dbus/qdbuspendingcall_p.h
@@ -57,6 +57,8 @@
#include <qshareddata.h>
#include <qpointer.h>
#include <qlist.h>
+#include <qmutex.h>
+#include <qwaitcondition.h>
#include "qdbusmessage.h"
#include "qdbus_symbols_p.h"
@@ -73,24 +75,35 @@ class QDBusConnectionPrivate;
class QDBusPendingCallPrivate: public QSharedData
{
public:
- QDBusMessage sentMessage;
- QDBusMessage replyMessage;
-// QDBusMessage pendingReplyMessage; // used in the local loop
- QDBusPendingCallWatcherHelper *watcherHelper;
- DBusPendingCall *pending;
- QDBusConnectionPrivate *connection;
+ // {
+ // set only during construction:
+ const QDBusMessage sentMessage;
+ QDBusConnectionPrivate * const connection;
- QString expectedReplySignature;
- int expectedReplyCount;
-
- // for the callback
+ // for the callback mechanism (see setReplyCallback and QDBusConnectionPrivate::sendWithReplyAsync)
QPointer<QObject> receiver;
QList<int> metaTypes;
int methodIdx;
bool autoDelete;
+ // }
+
+ mutable QMutex mutex;
+ QWaitCondition waitForFinishedCondition;
+
+ // {
+ // protected by the mutex above:
+ QDBusPendingCallWatcherHelper *watcherHelper;
+ QDBusMessage replyMessage;
+ DBusPendingCall *pending;
+ volatile bool waitingForFinished;
+
+ QString expectedReplySignature;
+ int expectedReplyCount;
+ // }
- QDBusPendingCallPrivate() : watcherHelper(0), pending(0), autoDelete(false)
+ QDBusPendingCallPrivate(const QDBusMessage &sent, QDBusConnectionPrivate *connection)
+ : sentMessage(sent), connection(connection), autoDelete(false), watcherHelper(0), pending(0), waitingForFinished(false)
{ }
~QDBusPendingCallPrivate();
bool setReplyCallback(QObject *target, const char *member);
diff --git a/src/dbus/qdbuspendingreply.cpp b/src/dbus/qdbuspendingreply.cpp
index 40cf6e3..891b348 100644
--- a/src/dbus/qdbuspendingreply.cpp
+++ b/src/dbus/qdbuspendingreply.cpp
@@ -254,7 +254,7 @@ void QDBusPendingReplyData::assign(const QDBusPendingCall &other)
void QDBusPendingReplyData::assign(const QDBusMessage &message)
{
- d = new QDBusPendingCallPrivate; // drops the reference to the old one
+ d = new QDBusPendingCallPrivate(QDBusMessage(), 0); // drops the reference to the old one
d->replyMessage = message;
}
@@ -273,6 +273,7 @@ QVariant QDBusPendingReplyData::argumentAt(int index) const
void QDBusPendingReplyData::setMetaTypes(int count, const int *types)
{
Q_ASSERT(d);
+ QMutexLocker locker(&d->mutex);
d->setMetaTypes(count, types);
d->checkReceivedSignature();
}
diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt
index 25c2417..0df5f10 100644
--- a/src/declarative/QmlChanges.txt
+++ b/src/declarative/QmlChanges.txt
@@ -1,6 +1,9 @@
=============================================================================
The changes below are pre Qt 4.7.0 RC
+TextInput and TextEdit:
+ - showInputPanelOnFocus property added
+ - openSoftwareInputPanel() and closeSoftwareInputPanel() functions added
Flickable:
- overShoot is replaced by boundsBehavior enumeration
- flickingHorizontally and flickingVertically properties added
@@ -11,10 +14,13 @@ Component:
status property instead
- errorsString() renamed to errorString()
+TextInput xToPosition -> positionAt (to match TextEdit.positionAt)
+
QList<QObject*> models no longer provide properties in model object. The
properties are now updated when the object changes. An object's property
"foo" may now be accessed as "foo", modelData.foo" or model.modelData.foo"
component.createObject has gained a mandatory "parent" argument
+TextEdit and TextInput now have a "selectByMouse" property that defaults to false.
C++ API
-------
diff --git a/src/declarative/debugger/debugger.pri b/src/declarative/debugger/debugger.pri
index dedea55..33d0843 100644
--- a/src/declarative/debugger/debugger.pri
+++ b/src/declarative/debugger/debugger.pri
@@ -5,11 +5,13 @@ SOURCES += \
$$PWD/qpacketprotocol.cpp \
$$PWD/qdeclarativedebugservice.cpp \
$$PWD/qdeclarativedebugclient.cpp \
- $$PWD/qdeclarativedebug.cpp
+ $$PWD/qdeclarativedebug.cpp \
+ $$PWD/qdeclarativedebugtrace.cpp
HEADERS += \
$$PWD/qdeclarativedebuggerstatus_p.h \
$$PWD/qpacketprotocol_p.h \
$$PWD/qdeclarativedebugservice_p.h \
$$PWD/qdeclarativedebugclient_p.h \
- $$PWD/qdeclarativedebug_p.h
+ $$PWD/qdeclarativedebug_p.h \
+ $$PWD/qdeclarativedebugtrace_p.h
diff --git a/src/declarative/debugger/qdeclarativedebugservice.cpp b/src/declarative/debugger/qdeclarativedebugservice.cpp
index 34e73fd..dca2695 100644
--- a/src/declarative/debugger/qdeclarativedebugservice.cpp
+++ b/src/declarative/debugger/qdeclarativedebugservice.cpp
@@ -61,6 +61,7 @@ class QDeclarativeDebugServer : public QObject
public:
static QDeclarativeDebugServer *instance();
void listen();
+ void waitForConnection();
bool hasDebuggingClient() const;
private Q_SLOTS:
@@ -115,6 +116,12 @@ void QDeclarativeDebugServer::listen()
qWarning("QDeclarativeDebugServer: Unable to listen on port %d", d->port);
}
+void QDeclarativeDebugServer::waitForConnection()
+{
+ Q_D(QDeclarativeDebugServer);
+ d->tcpServer->waitForNewConnection(-1);
+}
+
void QDeclarativeDebugServer::newConnection()
{
Q_D(QDeclarativeDebugServer);
@@ -144,6 +151,7 @@ QDeclarativeDebugServer *QDeclarativeDebugServer::instance()
if (!envTested) {
envTested = true;
QByteArray env = qgetenv("QML_DEBUG_SERVER_PORT");
+ QByteArray block = qgetenv("QML_DEBUG_SERVER_BLOCK");
bool ok = false;
int port = env.toInt(&ok);
@@ -151,6 +159,9 @@ QDeclarativeDebugServer *QDeclarativeDebugServer::instance()
if (ok && port > 1024) {
server = new QDeclarativeDebugServer(port);
server->listen();
+ if (!block.isEmpty()) {
+ server->waitForConnection();
+ }
}
}
diff --git a/src/declarative/debugger/qdeclarativedebugtrace.cpp b/src/declarative/debugger/qdeclarativedebugtrace.cpp
new file mode 100644
index 0000000..5e6d5e7
--- /dev/null
+++ b/src/declarative/debugger/qdeclarativedebugtrace.cpp
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qdeclarativedebugtrace_p.h"
+
+#include <QtCore/qdatastream.h>
+#include <QtCore/qurl.h>
+
+Q_GLOBAL_STATIC(QDeclarativeDebugTrace, traceInstance);
+
+QDeclarativeDebugTrace::QDeclarativeDebugTrace()
+: QDeclarativeDebugService(QLatin1String("CanvasFrameRate"))
+{
+ m_timer.start();
+}
+
+void QDeclarativeDebugTrace::addEvent(EventType t)
+{
+ if (QDeclarativeDebugService::isDebuggingEnabled())
+ traceInstance()->addEventImpl(t);
+}
+
+void QDeclarativeDebugTrace::startRange(RangeType t)
+{
+ if (QDeclarativeDebugService::isDebuggingEnabled())
+ traceInstance()->startRangeImpl(t);
+}
+
+void QDeclarativeDebugTrace::rangeData(RangeType t, const QUrl &url)
+{
+ if (QDeclarativeDebugService::isDebuggingEnabled())
+ traceInstance()->rangeDataImpl(t, url);
+}
+
+void QDeclarativeDebugTrace::endRange(RangeType t)
+{
+ if (QDeclarativeDebugService::isDebuggingEnabled())
+ traceInstance()->endRangeImpl(t);
+}
+
+void QDeclarativeDebugTrace::addEventImpl(EventType event)
+{
+ QByteArray data;
+ QDataStream ds(&data, QIODevice::WriteOnly);
+ ds << m_timer.elapsed() << (int)Event << (int)event;
+ sendMessage(data);
+}
+
+void QDeclarativeDebugTrace::startRangeImpl(RangeType range)
+{
+ QByteArray data;
+ QDataStream ds(&data, QIODevice::WriteOnly);
+ ds << m_timer.elapsed() << (int)RangeStart << (int)range;
+ sendMessage(data);
+}
+
+void QDeclarativeDebugTrace::rangeDataImpl(RangeType range, const QUrl &u)
+{
+ QByteArray data;
+ QDataStream ds(&data, QIODevice::WriteOnly);
+ ds << m_timer.elapsed() << (int)RangeData << (int)range << (QString)u.toString();
+ sendMessage(data);
+}
+
+void QDeclarativeDebugTrace::endRangeImpl(RangeType range)
+{
+ QByteArray data;
+ QDataStream ds(&data, QIODevice::WriteOnly);
+ ds << m_timer.elapsed() << (int)RangeEnd << (int)range;
+ sendMessage(data);
+}
+
diff --git a/src/declarative/debugger/qdeclarativedebugtrace_p.h b/src/declarative/debugger/qdeclarativedebugtrace_p.h
new file mode 100644
index 0000000..5ba49a8
--- /dev/null
+++ b/src/declarative/debugger/qdeclarativedebugtrace_p.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QDECLARATIVEDEBUGTRACE_P_H
+#define QDECLARATIVEDEBUGTRACE_P_H
+
+#include <private/qdeclarativedebugservice_p.h>
+#include <QtCore/qelapsedtimer.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QUrl;
+class QDeclarativeDebugTrace : public QDeclarativeDebugService
+{
+public:
+ enum EventType {
+ FramePaint,
+ Mouse,
+ Key,
+
+ MaximumEventType
+ };
+
+ enum Message {
+ Event,
+ RangeStart,
+ RangeData,
+ RangeEnd,
+
+ MaximumMessage
+ };
+
+ enum RangeType {
+ Painting,
+ Compiling,
+ Creating,
+
+ MaximumRangeType
+ };
+
+ static void addEvent(EventType);
+
+ static void startRange(RangeType);
+ static void rangeData(RangeType, const QUrl &);
+ static void endRange(RangeType);
+
+ QDeclarativeDebugTrace();
+private:
+ void addEventImpl(EventType);
+ void startRangeImpl(RangeType);
+ void rangeDataImpl(RangeType, const QUrl &);
+ void endRangeImpl(RangeType);
+ QElapsedTimer m_timer;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QDECLARATIVEDEBUGTRACE_P_H
+
diff --git a/src/declarative/graphicsitems/qdeclarativeanchors.cpp b/src/declarative/graphicsitems/qdeclarativeanchors.cpp
index ef07cbb..aa53aba 100644
--- a/src/declarative/graphicsitems/qdeclarativeanchors.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeanchors.cpp
@@ -92,17 +92,17 @@ static qreal position(QGraphicsObject *item, QDeclarativeAnchorLine::AnchorLine
//position when origin is 0,0
static qreal adjustedPosition(QGraphicsObject *item, QDeclarativeAnchorLine::AnchorLine anchorLine)
{
- int ret = 0;
+ qreal ret = 0.0;
QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(item);
switch(anchorLine) {
case QDeclarativeAnchorLine::Left:
- ret = 0;
+ ret = 0.0;
break;
case QDeclarativeAnchorLine::Right:
ret = d->width();
break;
case QDeclarativeAnchorLine::Top:
- ret = 0;
+ ret = 0.0;
break;
case QDeclarativeAnchorLine::Bottom:
ret = d->height();
@@ -459,10 +459,10 @@ void QDeclarativeAnchors::resetCenterIn()
bool QDeclarativeAnchorsPrivate::calcStretch(const QDeclarativeAnchorLine &edge1,
const QDeclarativeAnchorLine &edge2,
- int offset1,
- int offset2,
+ qreal offset1,
+ qreal offset2,
QDeclarativeAnchorLine::AnchorLine line,
- int &stretch)
+ qreal &stretch)
{
bool edge1IsParent = (edge1.item == item->parentItem());
bool edge2IsParent = (edge2.item == item->parentItem());
@@ -471,15 +471,15 @@ bool QDeclarativeAnchorsPrivate::calcStretch(const QDeclarativeAnchorLine &edge1
bool invalid = false;
if ((edge2IsParent && edge1IsParent) || (edge2IsSibling && edge1IsSibling)) {
- stretch = ((int)position(edge2.item, edge2.anchorLine) + offset2)
- - ((int)position(edge1.item, edge1.anchorLine) + offset1);
+ stretch = (position(edge2.item, edge2.anchorLine) + offset2)
+ - (position(edge1.item, edge1.anchorLine) + offset1);
} else if (edge2IsParent && edge1IsSibling) {
- stretch = ((int)position(edge2.item, edge2.anchorLine) + offset2)
- - ((int)position(item->parentObject(), line)
- + (int)position(edge1.item, edge1.anchorLine) + offset1);
+ stretch = (position(edge2.item, edge2.anchorLine) + offset2)
+ - (position(item->parentObject(), line)
+ + position(edge1.item, edge1.anchorLine) + offset1);
} else if (edge2IsSibling && edge1IsParent) {
- stretch = ((int)position(item->parentObject(), line) + (int)position(edge2.item, edge2.anchorLine) + offset2)
- - ((int)position(edge1.item, edge1.anchorLine) + offset1);
+ stretch = (position(item->parentObject(), line) + position(edge2.item, edge2.anchorLine) + offset2)
+ - (position(edge1.item, edge1.anchorLine) + offset1);
} else
invalid = true;
@@ -497,7 +497,7 @@ void QDeclarativeAnchorsPrivate::updateVerticalAnchors()
if (usedAnchors & QDeclarativeAnchors::TopAnchor) {
//Handle stretching
bool invalid = true;
- int height = 0;
+ qreal height = 0.0;
if (usedAnchors & QDeclarativeAnchors::BottomAnchor) {
invalid = calcStretch(top, bottom, topMargin, -bottomMargin, QDeclarativeAnchorLine::Top, height);
} else if (usedAnchors & QDeclarativeAnchors::VCenterAnchor) {
@@ -516,7 +516,7 @@ void QDeclarativeAnchorsPrivate::updateVerticalAnchors()
} else if (usedAnchors & QDeclarativeAnchors::BottomAnchor) {
//Handle stretching (top + bottom case is handled above)
if (usedAnchors & QDeclarativeAnchors::VCenterAnchor) {
- int height = 0;
+ qreal height = 0.0;
bool invalid = calcStretch(vCenter, bottom, vCenterOffset, -bottomMargin,
QDeclarativeAnchorLine::Top, height);
if (!invalid)
@@ -569,7 +569,7 @@ void QDeclarativeAnchorsPrivate::updateHorizontalAnchors()
if (usedAnchors & QDeclarativeAnchors::LeftAnchor) {
//Handle stretching
bool invalid = true;
- int width = 0;
+ qreal width = 0.0;
if (usedAnchors & QDeclarativeAnchors::RightAnchor) {
invalid = calcStretch(left, right, leftMargin, -rightMargin, QDeclarativeAnchorLine::Left, width);
} else if (usedAnchors & QDeclarativeAnchors::HCenterAnchor) {
@@ -588,7 +588,7 @@ void QDeclarativeAnchorsPrivate::updateHorizontalAnchors()
} else if (usedAnchors & QDeclarativeAnchors::RightAnchor) {
//Handle stretching (left + right case is handled in updateLeftAnchor)
if (usedAnchors & QDeclarativeAnchors::HCenterAnchor) {
- int width = 0;
+ qreal width = 0.0;
bool invalid = calcStretch(hCenter, right, hCenterOffset, -rightMargin,
QDeclarativeAnchorLine::Left, width);
if (!invalid)
diff --git a/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h b/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h
index 05be6c5..1bbea36 100644
--- a/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h
@@ -131,7 +131,7 @@ public:
bool checkVValid() const;
bool checkHAnchorValid(QDeclarativeAnchorLine anchor) const;
bool checkVAnchorValid(QDeclarativeAnchorLine anchor) const;
- bool calcStretch(const QDeclarativeAnchorLine &edge1, const QDeclarativeAnchorLine &edge2, int offset1, int offset2, QDeclarativeAnchorLine::AnchorLine line, int &stretch);
+ bool calcStretch(const QDeclarativeAnchorLine &edge1, const QDeclarativeAnchorLine &edge2, qreal offset1, qreal offset2, QDeclarativeAnchorLine::AnchorLine line, qreal &stretch);
void updateHorizontalAnchors();
void updateVerticalAnchors();
diff --git a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
index 32a6321..a05e426 100644
--- a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
@@ -263,7 +263,9 @@ void QDeclarativeAnimatedImage::movieRequestFinished()
d->_movie = new QMovie(d->reply);
if (!d->_movie->isValid()){
+#ifndef QT_NO_DEBUG_STREAM
qmlInfo(this) << "Error Reading Animated Image File " << d->url;
+#endif
delete d->_movie;
d->_movie = 0;
return;
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
index 560d586..10dc0f8 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
@@ -160,6 +160,7 @@ void QDeclarativeFlickablePrivate::init()
q->setFiltersChildEvents(true);
QDeclarativeItemPrivate *viewportPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(viewport));
viewportPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry);
+ lastPosTime.invalidate();
}
/*
@@ -656,7 +657,7 @@ void QDeclarativeFlickablePrivate::handleMousePressEvent(QGraphicsSceneMouseEven
void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
Q_Q(QDeclarativeFlickable);
- if (!interactive || lastPosTime.isNull())
+ if (!interactive || !lastPosTime.isValid())
return;
bool rejectY = false;
bool rejectX = false;
@@ -752,7 +753,7 @@ void QDeclarativeFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEv
stealMouse = false;
q->setKeepMouseGrab(false);
pressed = false;
- if (lastPosTime.isNull())
+ if (!lastPosTime.isValid())
return;
if (QDeclarativeItemPrivate::elapsed(lastPosTime) > 100) {
@@ -780,7 +781,7 @@ void QDeclarativeFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEv
fixupX();
}
- lastPosTime = QTime();
+ lastPosTime.invalidate();
if (!timeline.isActive())
q->movementEnding();
@@ -1026,24 +1027,6 @@ QDeclarativeListProperty<QGraphicsObject> QDeclarativeFlickable::flickableChildr
return QGraphicsItemPrivate::get(d->viewport)->childrenList();
}
-bool QDeclarativeFlickable::overShoot() const
-{
- Q_D(const QDeclarativeFlickable);
- return d->boundsBehavior == DragAndOvershootBounds;
-}
-
-void QDeclarativeFlickable::setOverShoot(bool o)
-{
- Q_D(QDeclarativeFlickable);
- if ((o && d->boundsBehavior == DragAndOvershootBounds)
- || (!o && d->boundsBehavior == StopAtBounds))
- return;
- qmlInfo(this) << "overshoot is deprecated and will be removed imminently - use boundsBehavior.";
- d->boundsBehavior = o ? DragAndOvershootBounds : StopAtBounds;
- emit boundsBehaviorChanged();
- emit overShootChanged();
-}
-
/*!
\qmlproperty enumeration Flickable::boundsBehavior
This property holds whether the surface may be dragged
@@ -1078,7 +1061,6 @@ void QDeclarativeFlickable::setBoundsBehavior(BoundsBehavior b)
return;
d->boundsBehavior = b;
emit boundsBehaviorChanged();
- emit overShootChanged();
}
/*!
@@ -1237,8 +1219,8 @@ bool QDeclarativeFlickable::sendMouseEvent(QGraphicsSceneMouseEvent *event)
}
return stealThisEvent || d->delayedPressEvent;
- } else if (!d->lastPosTime.isNull()) {
- d->lastPosTime = QTime();
+ } else if (d->lastPosTime.isValid()) {
+ d->lastPosTime.invalidate();
}
if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease) {
d->clearDelayedPress();
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p.h
index 05887b8..d40a0dc 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeflickable_p.h
@@ -64,7 +64,6 @@ class Q_DECLARATIVE_EXPORT QDeclarativeFlickable : public QDeclarativeItem
Q_PROPERTY(qreal horizontalVelocity READ horizontalVelocity NOTIFY horizontalVelocityChanged)
Q_PROPERTY(qreal verticalVelocity READ verticalVelocity NOTIFY verticalVelocityChanged)
- Q_PROPERTY(bool overShoot READ overShoot WRITE setOverShoot NOTIFY overShootChanged) // deprecated
Q_PROPERTY(BoundsBehavior boundsBehavior READ boundsBehavior WRITE setBoundsBehavior NOTIFY boundsBehaviorChanged)
Q_PROPERTY(qreal maximumFlickVelocity READ maximumFlickVelocity WRITE setMaximumFlickVelocity NOTIFY maximumFlickVelocityChanged)
Q_PROPERTY(qreal flickDeceleration READ flickDeceleration WRITE setFlickDeceleration NOTIFY flickDecelerationChanged)
@@ -101,9 +100,6 @@ public:
QDeclarativeListProperty<QObject> flickableData();
QDeclarativeListProperty<QGraphicsObject> flickableChildren();
- bool overShoot() const;
- void setOverShoot(bool);
-
enum BoundsBehavior { StopAtBounds, DragOverBounds, DragAndOvershootBounds };
BoundsBehavior boundsBehavior() const;
void setBoundsBehavior(BoundsBehavior);
@@ -172,7 +168,6 @@ Q_SIGNALS:
void pageChanged();
void flickableDirectionChanged();
void interactiveChanged();
- void overShootChanged();
void boundsBehaviorChanged();
void maximumFlickVelocityChanged();
void flickDecelerationChanged();
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
index b467ed2..66d2678 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
@@ -140,13 +140,13 @@ public:
bool stealMouse : 1;
bool pressed : 1;
bool interactive : 1;
- QTime lastPosTime;
+ QElapsedTimer lastPosTime;
QPointF lastPos;
QPointF pressPos;
- QTime pressTime;
+ QElapsedTimer pressTime;
qreal deceleration;
qreal maxVelocity;
- QTime velocityTime;
+ QElapsedTimer velocityTime;
QPointF lastFlickablePosition;
qreal reportedVelocitySmoothing;
QGraphicsSceneMouseEvent *delayedPressEvent;
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp
index 2841ac3..134bd6d 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp
@@ -3131,6 +3131,7 @@ bool QDeclarativeItem::event(QEvent *ev)
return QGraphicsObject::event(ev);
}
+#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug debug, QDeclarativeItem *item)
{
if (!item) {
@@ -3144,42 +3145,58 @@ QDebug operator<<(QDebug debug, QDeclarativeItem *item)
<< ", z =" << item->zValue() << ')';
return debug;
}
+#endif
-int QDeclarativeItemPrivate::consistentTime = -1;
-void QDeclarativeItemPrivate::setConsistentTime(int t)
+qint64 QDeclarativeItemPrivate::consistentTime = -1;
+void QDeclarativeItemPrivate::setConsistentTime(qint64 t)
{
consistentTime = t;
}
-QTime QDeclarativeItemPrivate::currentTime()
+class QElapsedTimerConsistentTimeHack
{
- if (consistentTime == -1)
- return QTime::currentTime();
- else
- return QTime(0, 0).addMSecs(consistentTime);
-}
+public:
+ void start() {
+ t1 = QDeclarativeItemPrivate::consistentTime;
+ t2 = 0;
+ }
+ qint64 elapsed() {
+ return QDeclarativeItemPrivate::consistentTime - t1;
+ }
+ qint64 restart() {
+ qint64 val = QDeclarativeItemPrivate::consistentTime - t1;
+ t1 = QDeclarativeItemPrivate::consistentTime;
+ t2 = 0;
+ return val;
+ }
+
+private:
+ qint64 t1;
+ qint64 t2;
+};
-void QDeclarativeItemPrivate::start(QTime &t)
+void QDeclarativeItemPrivate::start(QElapsedTimer &t)
{
- t = currentTime();
+ if (QDeclarativeItemPrivate::consistentTime == -1)
+ t.start();
+ else
+ ((QElapsedTimerConsistentTimeHack*)&t)->start();
}
-int QDeclarativeItemPrivate::elapsed(QTime &t)
+qint64 QDeclarativeItemPrivate::elapsed(QElapsedTimer &t)
{
- int n = t.msecsTo(currentTime());
- if (n < 0) // passed midnight
- n += 86400 * 1000;
- return n;
+ if (QDeclarativeItemPrivate::consistentTime == -1)
+ return t.elapsed();
+ else
+ return ((QElapsedTimerConsistentTimeHack*)&t)->elapsed();
}
-int QDeclarativeItemPrivate::restart(QTime &t)
+qint64 QDeclarativeItemPrivate::restart(QElapsedTimer &t)
{
- QTime time = currentTime();
- int n = t.msecsTo(time);
- if (n < 0) // passed midnight
- n += 86400*1000;
- t = time;
- return n;
+ if (QDeclarativeItemPrivate::consistentTime == -1)
+ return t.restart();
+ else
+ return ((QElapsedTimerConsistentTimeHack*)&t)->restart();
}
QT_END_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.h b/src/declarative/graphicsitems/qdeclarativeitem.h
index 29fd241..77e316b 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.h
+++ b/src/declarative/graphicsitems/qdeclarativeitem.h
@@ -209,7 +209,9 @@ T qobject_cast(QGraphicsItem *item)
return qobject_cast<T>(o);
}
+#ifndef QT_NO_DEBUG_STREAM
QDebug Q_DECLARATIVE_EXPORT operator<<(QDebug debug, QDeclarativeItem *item);
+#endif
QT_END_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativeitem_p.h b/src/declarative/graphicsitems/qdeclarativeitem_p.h
index 15b34f0..184d6f1 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeitem_p.h
@@ -305,12 +305,11 @@ public:
virtual void focusChanged(bool);
- static int consistentTime;
- static QTime currentTime();
- static void setConsistentTime(int t);
- static void start(QTime &);
- static int elapsed(QTime &);
- static int restart(QTime &);
+ static qint64 consistentTime;
+ static void setConsistentTime(qint64 t);
+ static void start(QElapsedTimer &);
+ static qint64 elapsed(QElapsedTimer &);
+ static qint64 restart(QElapsedTimer &);
};
/*
diff --git a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
index 7c55009..0be8dac 100644
--- a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
@@ -112,9 +112,11 @@ void QDeclarativeItemModule::defineModule()
qmlRegisterType<QDeclarativePathPercent>("Qt",4,7,"PathPercent");
qmlRegisterType<QDeclarativePathQuad>("Qt",4,7,"PathQuad");
qmlRegisterType<QDeclarativePathView>("Qt",4,7,"PathView");
+#ifndef QT_NO_VALIDATOR
qmlRegisterType<QIntValidator>("Qt",4,7,"IntValidator");
qmlRegisterType<QDoubleValidator>("Qt",4,7,"DoubleValidator");
qmlRegisterType<QRegExpValidator>("Qt",4,7,"RegExpValidator");
+#endif
qmlRegisterType<QDeclarativeRectangle>("Qt",4,7,"Rectangle");
qmlRegisterType<QDeclarativeRepeater>("Qt",4,7,"Repeater");
qmlRegisterType<QGraphicsRotation>("Qt",4,7,"Rotation");
@@ -138,9 +140,13 @@ void QDeclarativeItemModule::defineModule()
qmlRegisterType<QDeclarativePathElement>();
qmlRegisterType<QDeclarativeCurve>();
qmlRegisterType<QDeclarativeScaleGrid>();
+#ifndef QT_NO_VALIDATOR
qmlRegisterType<QValidator>();
+#endif
qmlRegisterType<QDeclarativeVisualModel>();
+#ifndef QT_NO_ACTION
qmlRegisterType<QAction>();
+#endif
qmlRegisterType<QDeclarativePen>();
qmlRegisterType<QDeclarativeFlickableVisibleArea>();
#ifndef QT_NO_GRAPHICSEFFECT
diff --git a/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp b/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp
index c8ecbb6..4add66d 100644
--- a/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp
@@ -50,20 +50,21 @@ QT_BEGIN_NAMESPACE
/*!
\qmlclass LayoutItem QDeclarativeLayoutItem
\since 4.7
- \brief The LayoutItem element allows you to place your declarative UI elements inside a classical Qt layout.
+ \brief The LayoutItem element allows declarative UI elements to be placed inside Qt's Graphics View layouts.
- LayoutItem is a variant of Item with a couple of additional properties. These properties provide the size hints
- needed for items to work in conjunction with Qt Layouts. The Qt Layout will resize the LayoutItem as appropriate,
+ LayoutItem is a variant of \l Item with additional size hint properties. These properties provide the size hints
+ necessary for items to work in conjunction with Qt \l{Graphics View Framework}{Graphics View} layout classes
+ such as QGraphicsLinearLayout and QGraphicsGridLayout. The Qt layout mechanisms will resize the LayoutItem as appropriate,
taking its size hints into account, and you can propagate this to the other elements in your UI via anchors and bindings.
- This is a QGraphicsLayoutItem subclass, and the properties merely expose the QGraphicsLayoutItem functionality to QML.
+ This is a QGraphicsLayoutItem subclass, and its properties merely expose the QGraphicsLayoutItem functionality to QML.
See the QGraphicsLayoutItem documentation for further details.
*/
/*!
\internal
\class QDeclarativeLayoutItem
- \brief The QDeclarativeLayoutItem class allows you to place your Fluid UI elements inside a classical Qt layout.
+ \brief The QDeclarativeLayoutItem class allows you to place your QML UI elements inside Qt's Graphics View layouts.
*/
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index 78c56d6..01928a1 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -1466,13 +1466,15 @@ void QDeclarativeListView::setModel(const QVariant &model)
disconnect(d->model, SIGNAL(destroyingItem(QDeclarativeItem*)), this, SLOT(destroyingItem(QDeclarativeItem*)));
}
d->clear();
+ QDeclarativeVisualModel *oldModel = d->model;
+ d->model = 0;
d->setPosition(0);
d->modelVariant = model;
QObject *object = qvariant_cast<QObject*>(model);
QDeclarativeVisualModel *vim = 0;
if (object && (vim = qobject_cast<QDeclarativeVisualModel *>(object))) {
if (d->ownModel) {
- delete d->model;
+ delete oldModel;
d->ownModel = false;
}
d->model = vim;
@@ -1480,6 +1482,8 @@ void QDeclarativeListView::setModel(const QVariant &model)
if (!d->ownModel) {
d->model = new QDeclarativeVisualDataModel(qmlContext(this), this);
d->ownModel = true;
+ } else {
+ d->model = oldModel;
}
if (QDeclarativeVisualDataModel *dataModel = qobject_cast<QDeclarativeVisualDataModel*>(d->model))
dataModel->setModel(model);
diff --git a/src/declarative/graphicsitems/qdeclarativepainteditem.cpp b/src/declarative/graphicsitems/qdeclarativepainteditem.cpp
index c4f0b86..13d1b61 100644
--- a/src/declarative/graphicsitems/qdeclarativepainteditem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepainteditem.cpp
@@ -152,8 +152,6 @@ void QDeclarativePaintedItem::setContentsSize(const QSize &size)
Q_D(QDeclarativePaintedItem);
if (d->contentsSize == size) return;
d->contentsSize = size;
- setImplicitWidth(size.width()*d->contentsScale);
- setImplicitHeight(size.height()*d->contentsScale);
clearCache();
update();
emit contentsSizeChanged();
@@ -170,8 +168,6 @@ void QDeclarativePaintedItem::setContentsScale(qreal scale)
Q_D(QDeclarativePaintedItem);
if (d->contentsScale == scale) return;
d->contentsScale = scale;
- setImplicitWidth(d->contentsSize.width()*scale);
- setImplicitHeight(d->contentsSize.height()*scale);
clearCache();
update();
emit contentsScaleChanged();
@@ -232,6 +228,19 @@ void QDeclarativePaintedItem::setCacheFrozen(bool frozen)
// XXX clear cache?
}
+QRectF QDeclarativePaintedItem::boundingRect() const
+{
+ Q_D(const QDeclarativePaintedItem);
+ qreal w = d->mWidth;
+ QSizeF sz = d->contentsSize * d->contentsScale;
+ if (w < sz.width())
+ w = sz.width();
+ qreal h = d->mHeight;
+ if (h < sz.height())
+ h = sz.height();
+ return QRectF(0.0,0.0,w,h);
+}
+
/*!
\internal
*/
diff --git a/src/declarative/graphicsitems/qdeclarativepainteditem_p.h b/src/declarative/graphicsitems/qdeclarativepainteditem_p.h
index 8d08ba2..86f065a 100644
--- a/src/declarative/graphicsitems/qdeclarativepainteditem_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepainteditem_p.h
@@ -93,6 +93,7 @@ protected:
const QVariant &value);
void setCacheFrozen(bool);
+ QRectF boundingRect() const;
Q_SIGNALS:
void fillColorChanged();
diff --git a/src/declarative/graphicsitems/qdeclarativepath.cpp b/src/declarative/graphicsitems/qdeclarativepath.cpp
index 2d08c7c..141a938 100644
--- a/src/declarative/graphicsitems/qdeclarativepath.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepath.cpp
@@ -867,6 +867,9 @@ qreal QDeclarativePathPercent::value() const
void QDeclarativePathPercent::setValue(qreal value)
{
- _value = value;
+ if (_value != value) {
+ _value = value;
+ emit changed();
+ }
}
QT_END_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativepath_p.h b/src/declarative/graphicsitems/qdeclarativepath_p.h
index 17a2ea3..dad43e6 100644
--- a/src/declarative/graphicsitems/qdeclarativepath_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepath_p.h
@@ -175,7 +175,7 @@ private:
class Q_DECLARATIVE_EXPORT QDeclarativePathPercent : public QDeclarativePathElement
{
Q_OBJECT
- Q_PROPERTY(qreal value READ value WRITE setValue)
+ Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY changed)
public:
QDeclarativePathPercent(QObject *parent=0) : QDeclarativePathElement(parent) {}
diff --git a/src/declarative/graphicsitems/qdeclarativepathview.cpp b/src/declarative/graphicsitems/qdeclarativepathview.cpp
index 207cc25..448ec06 100644
--- a/src/declarative/graphicsitems/qdeclarativepathview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepathview.cpp
@@ -110,6 +110,8 @@ QDeclarativeItem *QDeclarativePathViewPrivate::getItem(int modelIndex)
att->setOnPath(true);
}
item->setParentItem(q);
+ QDeclarativeItemPrivate *itemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(item));
+ itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry);
}
requestedIndex = -1;
return item;
@@ -121,6 +123,8 @@ void QDeclarativePathViewPrivate::releaseItem(QDeclarativeItem *item)
return;
if (QDeclarativePathViewAttached *att = attached(item))
att->setOnPath(false);
+ QDeclarativeItemPrivate *itemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(item));
+ itemPrivate->removeItemChangeListener(this, QDeclarativeItemPrivate::Geometry);
model->release(item);
}
@@ -944,7 +948,7 @@ void QDeclarativePathView::mousePressEvent(QGraphicsSceneMouseEvent *event)
void QDeclarativePathView::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativePathView);
- if (!d->interactive || d->lastPosTime.isNull())
+ if (!d->interactive || !d->lastPosTime.isValid())
return;
if (!d->stealMouse) {
@@ -978,7 +982,7 @@ void QDeclarativePathView::mouseReleaseEvent(QGraphicsSceneMouseEvent *)
Q_D(QDeclarativePathView);
d->stealMouse = false;
setKeepMouseGrab(false);
- if (!d->interactive || d->lastPosTime.isNull())
+ if (!d->interactive || !d->lastPosTime.isValid())
return;
qreal elapsed = qreal(d->lastElapsed + QDeclarativeItemPrivate::elapsed(d->lastPosTime)) / 1000.;
@@ -1013,7 +1017,7 @@ void QDeclarativePathView::mouseReleaseEvent(QGraphicsSceneMouseEvent *)
d->fixOffset();
}
- d->lastPosTime = QTime();
+ d->lastPosTime.invalidate();
ungrabMouse();
}
@@ -1055,8 +1059,8 @@ bool QDeclarativePathView::sendMouseEvent(QGraphicsSceneMouseEvent *event)
grabMouse();
return d->stealMouse;
- } else if (!d->lastPosTime.isNull()) {
- d->lastPosTime = QTime();
+ } else if (d->lastPosTime.isValid()) {
+ d->lastPosTime.invalidate();
}
return false;
}
@@ -1084,6 +1088,16 @@ bool QDeclarativePathView::sceneEventFilter(QGraphicsItem *i, QEvent *e)
return QDeclarativeItem::sceneEventFilter(i, e);
}
+bool QDeclarativePathView::event(QEvent *event)
+{
+ if (event->type() == QEvent::User) {
+ refill();
+ return true;
+ }
+
+ return QDeclarativeItem::event(event);
+}
+
void QDeclarativePathView::componentComplete()
{
Q_D(QDeclarativePathView);
@@ -1103,6 +1117,7 @@ void QDeclarativePathView::refill()
if (!d->isValid() || !isComponentComplete())
return;
+ d->layoutScheduled = false;
bool currentVisible = false;
// first move existing items and remove items off path
diff --git a/src/declarative/graphicsitems/qdeclarativepathview_p.h b/src/declarative/graphicsitems/qdeclarativepathview_p.h
index 349a01c..8a6f53f 100644
--- a/src/declarative/graphicsitems/qdeclarativepathview_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepathview_p.h
@@ -161,6 +161,7 @@ protected:
void mouseReleaseEvent(QGraphicsSceneMouseEvent *);
bool sendMouseEvent(QGraphicsSceneMouseEvent *event);
bool sceneEventFilter(QGraphicsItem *, QEvent *);
+ bool event(QEvent *event);
void componentComplete();
private Q_SLOTS:
diff --git a/src/declarative/graphicsitems/qdeclarativepathview_p_p.h b/src/declarative/graphicsitems/qdeclarativepathview_p_p.h
index 303486f..a0d2610 100644
--- a/src/declarative/graphicsitems/qdeclarativepathview_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepathview_p_p.h
@@ -68,7 +68,7 @@ QT_BEGIN_NAMESPACE
class QDeclarativeOpenMetaObjectType;
class QDeclarativePathViewAttached;
-class QDeclarativePathViewPrivate : public QDeclarativeItemPrivate
+class QDeclarativePathViewPrivate : public QDeclarativeItemPrivate, public QDeclarativeItemChangeListener
{
Q_DECLARE_PUBLIC(QDeclarativePathView)
@@ -77,7 +77,8 @@ public:
: path(0), currentIndex(0), currentItemOffset(0.0), startPc(0), lastDist(0)
, lastElapsed(0), mappedRange(1.0)
, stealMouse(false), ownModel(false), interactive(true), haveHighlightRange(true)
- , autoHighlight(true), highlightUp(false), dragMargin(0), deceleration(100)
+ , autoHighlight(true), highlightUp(false), layoutScheduled(false)
+ , dragMargin(0), deceleration(100)
, moveOffset(this, &QDeclarativePathViewPrivate::setOffset)
, firstIndex(-1), pathItems(-1), requestedIndex(-1)
, moveReason(Other), attType(0), highlightComponent(0), highlightItem(0)
@@ -89,14 +90,29 @@ public:
{
}
- void init()
- {
+ void init() {
Q_Q(QDeclarativePathView);
offset = 0;
q->setAcceptedMouseButtons(Qt::LeftButton);
q->setFlag(QGraphicsItem::ItemIsFocusScope);
q->setFiltersChildEvents(true);
q->connect(&tl, SIGNAL(updated()), q, SLOT(ticked()));
+ lastPosTime.invalidate();
+ }
+
+ void itemGeometryChanged(QDeclarativeItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) {
+ if ((newGeometry.size() != oldGeometry.size())
+ && (!highlightItem || item != highlightItem)) {
+ scheduleLayout();
+ }
+ }
+
+ void scheduleLayout() {
+ Q_Q(QDeclarativePathView);
+ if (!layoutScheduled) {
+ layoutScheduled = true;
+ QCoreApplication::postEvent(q, new QEvent(QEvent::User), Qt::HighEventPriority);
+ }
}
QDeclarativeItem *getItem(int modelIndex);
@@ -138,7 +154,8 @@ public:
bool haveHighlightRange : 1;
bool autoHighlight : 1;
bool highlightUp : 1;
- QTime lastPosTime;
+ bool layoutScheduled : 1;
+ QElapsedTimer lastPosTime;
QPointF lastPos;
qreal dragMargin;
qreal deceleration;
diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
index d098aa0..de3dbcd 100644
--- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
@@ -114,11 +114,11 @@ void QDeclarativeGradientStop::updateGradient()
rectangle with a gradient starting with red, blending to yellow at 1/3 of the
size of the rectangle, and ending with Green:
- \table
- \row
- \o \image gradient.png
- \o \quotefile doc/src/snippets/declarative/gradient.qml
- \endtable
+ \snippet doc/src/snippets/declarative/gradient.qml code
+
+ Note that this item is not a visual representation of a gradient. To display a
+ gradient use a visual item (like rectangle) which supports having a gradient set
+ on it for display.
\sa GradientStop
*/
@@ -202,8 +202,20 @@ void QDeclarativeRectangle::doUpdate()
A width of 1 creates a thin line. For no line, use a width of 0 or a transparent color.
- To keep the border smooth (rather than blurry), odd widths cause the rectangle to be painted at
- a half-pixel offset;
+ If \c border.width is an odd number, the rectangle is painted at a half-pixel offset to retain
+ border smoothness. Also, the border is rendered evenly on either side of the
+ rectangle's boundaries, and the spare pixel is rendered to the right and below the
+ rectangle (as documented for QRect rendering). This can cause unintended effects if
+ \c border.width is 1 and the rectangle is \l{clip}{clipped} by a parent item:
+
+ \table
+ \row
+ \o \snippet doc/src/snippets/declarative/rect-border-width.qml 0
+ \o \image rect-border-width.png
+ \endtable
+
+ Here, the innermost rectangle's border is clipped on the bottom and right edges by its
+ parent. To avoid this, the border width can be set to two instead of one.
*/
QDeclarativePen *QDeclarativeRectangle::border()
{
diff --git a/src/declarative/graphicsitems/qdeclarativerepeater.cpp b/src/declarative/graphicsitems/qdeclarativerepeater.cpp
index 04076f8..691cfa2 100644
--- a/src/declarative/graphicsitems/qdeclarativerepeater.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerepeater.cpp
@@ -80,14 +80,20 @@ QDeclarativeRepeaterPrivate::~QDeclarativeRepeaterPrivate()
The index is always exposed as an accessible \c index property.
In the case of an object or string list, the data element (of type string
or object) is available as the \c modelData property. In the case of a Qt model,
- all roles are available as named properties just like in the view classes. The
- following example shows how to use the index property inside the instantiated
- items.
+ all roles are available as named properties just like in the view classes.
- \snippet doc/src/snippets/declarative/repeater-index.qml 0
+ The following example shows how to use the \c index property inside the instantiated
+ items:
+ \snippet doc/src/snippets/declarative/repeater-index.qml 0
\image repeater-index.png
+ The repeater could also use the \c modelData property to reference the data for a
+ particular index:
+
+ \snippet doc/src/snippets/declarative/repeater-modeldata.qml 0
+ \image repeater-modeldata.png
+
Items instantiated by the Repeater are inserted, in order, as
children of the Repeater's parent. The insertion starts immediately after
the repeater's position in its parent stacking list. This is to allow
diff --git a/src/declarative/graphicsitems/qdeclarativescalegrid.cpp b/src/declarative/graphicsitems/qdeclarativescalegrid.cpp
index fe89190..a053aa0 100644
--- a/src/declarative/graphicsitems/qdeclarativescalegrid.cpp
+++ b/src/declarative/graphicsitems/qdeclarativescalegrid.cpp
@@ -130,8 +130,9 @@ QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(QIODevice *data)
int b = -1;
QString imgFile;
- while(!data->atEnd()) {
- QString line = QString::fromUtf8(data->readLine().trimmed());
+ QByteArray raw;
+ while(raw = data->readLine(), !raw.isEmpty()) {
+ QString line = QString::fromUtf8(raw.trimmed());
if (line.isEmpty() || line.startsWith(QLatin1Char('#')))
continue;
diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp
index 4e7e0fd..55cef8b 100644
--- a/src/declarative/graphicsitems/qdeclarativetext.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetext.cpp
@@ -318,7 +318,11 @@ void QDeclarativeText::setText(const QString &n)
if (d->richText) {
if (isComponentComplete()) {
d->ensureDoc();
+#ifndef QT_NO_TEXTHTMLPARSER
d->doc->setHtml(n);
+#else
+ d->doc->setPlainText(n);
+#endif
}
}
@@ -499,13 +503,10 @@ void QDeclarativeText::setVAlign(VAlignment align)
wrap if an explicit width has been set. wrapMode can be one of:
\list
- \o Text.NoWrap - no wrapping will be performed.
- \o Text.WordWrap - wrapping is done on word boundaries. If the text cannot be
- word-wrapped to the specified width it will be partially drawn outside of the item's bounds.
- If this is undesirable then enable clipping on the item (Item::clip).
- \o Text.WrapAnywhere - Text can be wrapped at any point on a line, even if it occurs in the middle of a word.
- \o Text.WrapAtWordBoundaryOrAnywhere - If possible, wrapping occurs at a word boundary; otherwise it
- will occur at the appropriate point on the line, even in the middle of a word.
+ \o Text.NoWrap - no wrapping will be performed. If the text contains insufficient newlines, then implicitWidth will exceed a set width.
+ \o Text.WordWrap - wrapping is done on word boundaries only. If a word is too long, implicitWidth will exceed a set width.
+ \o Text.WrapAnywhere - wrapping is done at any point on a line, even if it occurs in the middle of a word.
+ \o Text.Wrap - if possible, wrapping occurs at a word boundary; otherwise it will occur at the appropriate point on the line, even in the middle of a word.
\endlist
The default is Text.NoWrap.
@@ -608,7 +609,11 @@ void QDeclarativeText::setTextFormat(TextFormat format)
} else if (!wasRich && d->richText) {
if (isComponentComplete()) {
d->ensureDoc();
+#ifndef QT_NO_TEXTHTMLPARSER
d->doc->setHtml(d->text);
+#else
+ d->doc->setPlainText(d->text);
+#endif
}
d->updateLayout();
d->markImgDirty();
@@ -715,6 +720,7 @@ void QDeclarativeTextPrivate::updateSize()
QFontMetrics fm(font);
if (text.isEmpty()) {
q->setImplicitHeight(fm.height());
+ emit q->paintedSizeChanged();
return;
}
@@ -753,11 +759,36 @@ void QDeclarativeTextPrivate::updateSize()
//### need to comfirm cost of always setting these for richText
q->setImplicitWidth(richText ? (int)doc->idealWidth() : size.width());
q->setImplicitHeight(richText ? (int)doc->size().height() : size.height());
+ emit q->paintedSizeChanged();
} else {
dirty = true;
}
}
+/*!
+ \qmlproperty real Text::paintedWidth
+
+ Returns the width of the text, including width past the width
+ which is covered due to insufficient wrapping if WrapMode is set.
+*/
+qreal QDeclarativeText::paintedWidth() const
+{
+ return implicitWidth();
+}
+
+/*!
+ \qmlproperty real Text::paintedHeight
+
+ Returns the height of the text, including height past the height
+ which is covered due to there being more text than fits in the set height.
+*/
+qreal QDeclarativeText::paintedHeight() const
+{
+ return implicitHeight();
+}
+
+
+
// ### text layout handling should be profiled and optimized as needed
// what about QStackTextEngine engine(tmp, d->font.font()); QTextLayout textLayout(&engine);
@@ -968,7 +999,11 @@ void QDeclarativeText::reloadWithResources()
Q_D(QDeclarativeText);
if (!d->richText)
return;
+#ifndef QT_NO_TEXTHTMLPARSER
d->doc->setHtml(d->text);
+#else
+ d->doc->setPlainText(d->text);
+#endif
d->updateLayout();
d->markImgDirty();
}
@@ -1098,7 +1133,11 @@ void QDeclarativeText::componentComplete()
if (d->dirty) {
if (d->richText) {
d->ensureDoc();
+#ifndef QT_NO_TEXTHTMLPARSER
d->doc->setHtml(d->text);
+#else
+ d->doc->setPlainText(d->text);
+#endif
}
d->updateLayout();
d->dirty = false;
diff --git a/src/declarative/graphicsitems/qdeclarativetext_p.h b/src/declarative/graphicsitems/qdeclarativetext_p.h
index 00ce126..db21140 100644
--- a/src/declarative/graphicsitems/qdeclarativetext_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetext_p.h
@@ -71,6 +71,8 @@ class Q_DECLARATIVE_EXPORT QDeclarativeText : public QDeclarativeItem
Q_PROPERTY(WrapMode wrapMode READ wrapMode WRITE setWrapMode NOTIFY wrapModeChanged)
Q_PROPERTY(TextFormat textFormat READ textFormat WRITE setTextFormat NOTIFY textFormatChanged)
Q_PROPERTY(TextElideMode elide READ elideMode WRITE setElideMode NOTIFY elideModeChanged) //### elideMode?
+ Q_PROPERTY(qreal paintedWidth READ paintedWidth NOTIFY paintedSizeChanged)
+ Q_PROPERTY(qreal paintedHeight READ paintedHeight NOTIFY paintedSizeChanged)
public:
QDeclarativeText(QDeclarativeItem *parent=0);
@@ -98,7 +100,8 @@ public:
enum WrapMode { NoWrap = QTextOption::NoWrap,
WordWrap = QTextOption::WordWrap,
WrapAnywhere = QTextOption::WrapAnywhere,
- WrapAtWordBoundaryOrAnywhere = QTextOption::WrapAtWordBoundaryOrAnywhere
+ WrapAtWordBoundaryOrAnywhere = QTextOption::WrapAtWordBoundaryOrAnywhere, // COMPAT
+ Wrap = QTextOption::WrapAtWordBoundaryOrAnywhere
};
QString text() const;
@@ -137,6 +140,9 @@ public:
int resourcesLoading() const; // mainly for testing
+ qreal paintedWidth() const;
+ qreal paintedHeight() const;
+
Q_SIGNALS:
void textChanged(const QString &text);
void linkActivated(const QString &link);
@@ -149,6 +155,7 @@ Q_SIGNALS:
void wrapModeChanged();
void textFormatChanged(TextFormat textFormat);
void elideModeChanged(TextElideMode mode);
+ void paintedSizeChanged();
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event);
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
index 7b00d2f..ffb7dfe 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
@@ -61,8 +61,9 @@ QT_BEGIN_NAMESPACE
/*!
\qmlclass TextEdit QDeclarativeTextEdit
- \since 4.7
+ \since 4.7
\brief The TextEdit item allows you to add editable formatted text to a scene.
+ \inherits Item
It can display both plain and rich text. For example:
@@ -80,6 +81,21 @@ TextEdit {
\image declarative-textedit.gif
+ Note that the TextEdit does not implement scrolling, following the cursor, or other behaviors specific
+ to a look-and-feel. For example, to add flickable scrolling that follows the cursor:
+
+ \snippet snippets/declarative/texteditor.qml 0
+
+ A particular look-and-feel might use smooth scrolling (eg. using SmoothedFollow), might have a visible
+ scrollbar, or a scrollbar that fades in to show location, etc.
+
+ Clipboard support is provided by the cut(), copy(), and paste() functions, and the selection can
+ be handled in a traditional "mouse" mechanism by setting selectByMouse, or handled completely
+ from QML by manipulating selectionStart and selectionEnd, or using selectAll() or selectWord().
+
+ You can translate between cursor positions (characters from the start of the document) and pixel
+ points using positionAt() and positionToRectangle().
+
\sa Text
*/
@@ -111,9 +127,11 @@ QString QDeclarativeTextEdit::text() const
{
Q_D(const QDeclarativeTextEdit);
+#ifndef QT_NO_TEXTHTMLPARSER
if (d->richText)
return d->document->toHtml();
else
+#endif
return d->document->toPlainText();
}
@@ -244,7 +262,11 @@ void QDeclarativeTextEdit::setText(const QString &text)
d->text = text;
d->richText = d->format == RichText || (d->format == AutoText && Qt::mightBeRichText(text));
if (d->richText) {
+#ifndef QT_NO_TEXTHTMLPARSER
d->control->setHtml(text);
+#else
+ d->control->setPlainText(text);
+#endif
} else {
d->control->setPlainText(text);
}
@@ -309,7 +331,11 @@ void QDeclarativeTextEdit::setTextFormat(TextFormat format)
d->control->setPlainText(d->text);
updateSize();
} else if (!wasRich && d->richText) {
+#ifndef QT_NO_TEXTHTMLPARSER
d->control->setHtml(d->text);
+#else
+ d->control->setPlainText(d->text);
+#endif
updateSize();
}
d->format = format;
@@ -475,14 +501,13 @@ void QDeclarativeTextEdit::setVAlign(QDeclarativeTextEdit::VAlignment alignment)
The text will only wrap if an explicit width has been set.
\list
- \o TextEdit.NoWrap - no wrapping will be performed.
- \o TextEdit.WordWrap - wrapping is done on word boundaries.
- \o TextEdit.WrapAnywhere - Text can be wrapped at any point on a line, even if it occurs in the middle of a word.
- \o TextEdit.WrapAtWordBoundaryOrAnywhere - If possible, wrapping occurs at a word boundary; otherwise it
- will occur at the appropriate point on the line, even in the middle of a word.
+ \o TextEdit.NoWrap - no wrapping will be performed. If the text contains insufficient newlines, then implicitWidth will exceed a set width.
+ \o TextEdit.WordWrap - wrapping is done on word boundaries only. If a word is too long, implicitWidth will exceed a set width.
+ \o TextEdit.WrapAnywhere - wrapping is done at any point on a line, even if it occurs in the middle of a word.
+ \o TextEdit.Wrap - if possible, wrapping occurs at a word boundary; otherwise it will occur at the appropriate point on the line, even in the middle of a word.
\endlist
- The default is TextEdit.NoWrap.
+ The default is TextEdit.NoWrap. If you set a width, consider using TextEdit.Wrap.
*/
QDeclarativeTextEdit::WrapMode QDeclarativeTextEdit::wrapMode() const
{
@@ -502,6 +527,93 @@ void QDeclarativeTextEdit::setWrapMode(WrapMode mode)
}
/*!
+ \qmlproperty real TextEdit::paintedWidth
+
+ Returns the width of the text, including width past the width
+ which is covered due to insufficient wrapping if WrapMode is set.
+*/
+qreal QDeclarativeTextEdit::paintedWidth() const
+{
+ return implicitWidth();
+}
+
+/*!
+ \qmlproperty real TextEdit::paintedHeight
+
+ Returns the height of the text, including height past the height
+ which is covered due to there being more text than fits in the set height.
+*/
+qreal QDeclarativeTextEdit::paintedHeight() const
+{
+ return implicitHeight();
+}
+
+/*!
+ \qmlmethod rectangle TextEdit::positionToRectangle(position)
+
+ Returns the rectangle at the given \a position in the text. The x, y,
+ and height properties correspond to the cursor that would describe
+ that position.
+*/
+QRectF QDeclarativeTextEdit::positionToRectangle(int pos) const
+{
+ Q_D(const QDeclarativeTextEdit);
+ QTextCursor c(d->document);
+ c.setPosition(pos);
+ return d->control->cursorRect(c);
+
+}
+
+/*!
+ \qmlmethod int TextEdit::positionAt(x,y)
+
+ Returns the text position closest to pixel position (\a x,\a y).
+
+ Position 0 is before the first character, position 1 is after the first character
+ but before the second, and so on until position text.length, which is after all characters.
+*/
+int QDeclarativeTextEdit::positionAt(int x, int y) const
+{
+ Q_D(const QDeclarativeTextEdit);
+ int r = d->document->documentLayout()->hitTest(QPoint(x,y-d->yoff), Qt::FuzzyHit);
+ return r;
+}
+
+/*!
+ \qmlmethod int TextEdit::moveCursorSelection(int pos)
+
+ Moves the cursor to \a position and updates the selection accordingly.
+ (To only move the cursor, set the \l cursorPosition property.)
+
+ When this method is called it additionally sets either the
+ selectionStart or the selectionEnd (whichever was at the previous cursor position)
+ to the specified position. This allows you to easily extend and contract the selected
+ text range.
+
+ For example, take this sequence of calls:
+
+ \code
+ cursorPosition = 5
+ moveCursorSelection(9)
+ moveCursorSelection(7)
+ \endcode
+
+ This moves the cursor to position 5, extend the selection end from 5 to 9
+ and then retract the selection end from 9 to 7, leaving the text from position 5 to 7
+ selected (the 6th and 7th characters).
+*/
+void QDeclarativeTextEdit::moveCursorSelection(int pos)
+{
+ //Note that this is the same as setCursorPosition but with the KeepAnchor flag set
+ Q_D(QDeclarativeTextEdit);
+ QTextCursor cursor = d->control->textCursor();
+ if (cursor.position() == pos)
+ return;
+ cursor.setPosition(pos, QTextCursor::KeepAnchor);
+ d->control->setTextCursor(cursor);
+}
+
+/*!
\qmlproperty bool TextEdit::cursorVisible
If true the text edit shows a cursor.
@@ -574,7 +686,7 @@ void QDeclarativeTextEdit::setCursorDelegate(QDeclarativeComponent* c)
disconnect(d->control, SIGNAL(cursorPositionChanged()),
this, SLOT(moveCursorDelegate()));
d->control->setCursorWidth(-1);
- dirtyCache(cursorRect());
+ dirtyCache(cursorRectangle());
delete d->cursor;
d->cursor = 0;
}
@@ -601,7 +713,7 @@ void QDeclarativeTextEdit::loadCursorDelegate()
connect(d->control, SIGNAL(cursorPositionChanged()),
this, SLOT(moveCursorDelegate()));
d->control->setCursorWidth(0);
- dirtyCache(cursorRect());
+ dirtyCache(cursorRectangle());
QDeclarative_setParent_noEvent(d->cursor, this);
d->cursor->setParentItem(this);
d->cursor->setHeight(QFontMetrics(d->font).height());
@@ -615,12 +727,9 @@ void QDeclarativeTextEdit::loadCursorDelegate()
\qmlproperty int TextEdit::selectionStart
The cursor position before the first character in the current selection.
- Setting this and selectionEnd allows you to specify a selection in the
- text edit.
- Note that if selectionStart == selectionEnd then there is no current
- selection. If you attempt to set selectionStart to a value outside of
- the current text, selectionStart will not be changed.
+ This property is read-only. To change the selection, use select(start,end),
+ selectAll(), or selectWord().
\sa selectionEnd, cursorPosition, selectedText
*/
@@ -630,25 +739,13 @@ int QDeclarativeTextEdit::selectionStart() const
return d->control->textCursor().selectionStart();
}
-void QDeclarativeTextEdit::setSelectionStart(int s)
-{
- Q_D(QDeclarativeTextEdit);
- if(d->lastSelectionStart == s || s < 0 || s > text().length())
- return;
- d->lastSelectionStart = s;
- d->updateSelection();// Will emit the relevant signals
-}
-
/*!
\qmlproperty int TextEdit::selectionEnd
The cursor position after the last character in the current selection.
- Setting this and selectionStart allows you to specify a selection in the
- text edit.
- Note that if selectionStart == selectionEnd then there is no current
- selection. If you attempt to set selectionEnd to a value outside of
- the current text, selectionEnd will not be changed.
+ This property is read-only. To change the selection, use select(start,end),
+ selectAll(), or selectWord().
\sa selectionStart, cursorPosition, selectedText
*/
@@ -658,15 +755,6 @@ int QDeclarativeTextEdit::selectionEnd() const
return d->control->textCursor().selectionEnd();
}
-void QDeclarativeTextEdit::setSelectionEnd(int s)
-{
- Q_D(QDeclarativeTextEdit);
- if(d->lastSelectionEnd == s || s < 0 || s > text().length())
- return;
- d->lastSelectionEnd = s;
- d->updateSelection();// Will emit the relevant signals
-}
-
/*!
\qmlproperty string TextEdit::selectedText
@@ -773,7 +861,7 @@ void QDeclarativeTextEdit::componentComplete()
}
/*!
- \qmlproperty string TextEdit::selectByMouse
+ \qmlproperty bool TextEdit::selectByMouse
Defaults to false.
@@ -854,10 +942,12 @@ Qt::TextInteractionFlags QDeclarativeTextEdit::textInteractionFlags() const
}
/*!
- Returns the rectangle where the text cursor is rendered
- within the text edit.
+ \qmlproperty rectangle TextEdit::cursorRectangle
+
+ The rectangle where the text cursor is rendered
+ within the text edit. Read-only.
*/
-QRect QDeclarativeTextEdit::cursorRect() const
+QRect QDeclarativeTextEdit::cursorRectangle() const
{
Q_D(const QDeclarativeTextEdit);
return d->control->cursorRect().toRect().translated(0,-d->yoff);
@@ -914,6 +1004,8 @@ void QDeclarativeTextEditPrivate::focusChanged(bool hasFocus)
}
/*!
+ \qmlmethod void TextEdit::selectAll()
+
Causes all text to be selected.
*/
void QDeclarativeTextEdit::selectAll()
@@ -923,14 +1015,90 @@ void QDeclarativeTextEdit::selectAll()
}
/*!
+ \qmlmethod void TextEdit::selectWord()
+
+ Causes the word closest to the current cursor position to be selected.
+*/
+void QDeclarativeTextEdit::selectWord()
+{
+ Q_D(QDeclarativeTextEdit);
+ QTextCursor c = d->control->textCursor();
+ c.select(QTextCursor::WordUnderCursor);
+ d->control->setTextCursor(c);
+}
+
+/*!
+ \qmlmethod void TextEdit::select(start,end)
+
+ Causes the text from \a start to \a end to be selected.
+
+ If either start or end is out of range, the selection is not changed.
+
+ After calling this, selectionStart will become the lesser
+ and selectionEnd will become the greater (regardless of the order passed
+ to this method).
+
+ \sa selectionStart, selectionEnd
+*/
+void QDeclarativeTextEdit::select(int start, int end)
+{
+ Q_D(QDeclarativeTextEdit);
+ if (start < 0 || end < 0 || start > d->text.length() || end > d->text.length())
+ return;
+ QTextCursor cursor = d->control->textCursor();
+ cursor.beginEditBlock();
+ cursor.setPosition(start, QTextCursor::MoveAnchor);
+ cursor.setPosition(end, QTextCursor::KeepAnchor);
+ cursor.endEditBlock();
+ d->control->setTextCursor(cursor);
+
+ // QTBUG-11100
+ updateSelectionMarkers();
+}
+
+/*!
+ \qmlmethod TextEdit::cut()
+
+ Moves the currently selected text to the system clipboard.
+*/
+void QDeclarativeTextEdit::cut()
+{
+ Q_D(QDeclarativeTextEdit);
+ d->control->cut();
+}
+
+/*!
+ \qmlmethod TextEdit::copy()
+
+ Copies the currently selected text to the system clipboard.
+*/
+void QDeclarativeTextEdit::copy()
+{
+ Q_D(QDeclarativeTextEdit);
+ d->control->copy();
+}
+
+/*!
+ \qmlmethod TextEdit::paste()
+
+ Relaces the currently selected text by the contents of the system clipboard.
+*/
+void QDeclarativeTextEdit::paste()
+{
+ Q_D(QDeclarativeTextEdit);
+ d->control->paste();
+}
+
+
+/*!
\overload
Handles the given mouse \a event.
*/
void QDeclarativeTextEdit::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativeTextEdit);
- bool hadFocus = hasFocus();
if (d->focusOnPress){
+ bool hadFocus = hasFocus();
QGraphicsItem *p = parentItem();//###Is there a better way to find my focus scope?
while(p) {
if (p->flags() & QGraphicsItem::ItemIsFocusScope)
@@ -938,9 +1106,11 @@ void QDeclarativeTextEdit::mousePressEvent(QGraphicsSceneMouseEvent *event)
p = p->parentItem();
}
setFocus(true);
+ if (hasFocus() == hadFocus && d->showInputPanelOnFocus && !isReadOnly()) {
+ // re-open input panel on press if already focused
+ openSoftwareInputPanel();
+ }
}
- if (!hadFocus && hasFocus())
- d->clickCausedFocus = true;
if (event->type() != QEvent::GraphicsSceneMouseDoubleClick || d->selectByMouse)
d->control->processEvent(event, QPointF(0, -d->yoff));
if (!event->isAccepted())
@@ -954,11 +1124,6 @@ Handles the given mouse \a event.
void QDeclarativeTextEdit::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativeTextEdit);
- QWidget *widget = event->widget();
- if (widget && (d->control->textInteractionFlags() & Qt::TextEditable) && boundingRect().contains(event->pos()))
- qt_widget_private(widget)->handleSoftwareInputPanel(event->button(), d->clickCausedFocus);
- d->clickCausedFocus = false;
-
d->control->processEvent(event, QPointF(0, -d->yoff));
if (!event->isAccepted())
QDeclarativePaintedItem::mouseReleaseEvent(event);
@@ -1036,9 +1201,14 @@ void QDeclarativeTextEdit::drawContents(QPainter *painter, const QRect &bounds)
void QDeclarativeTextEdit::updateImgCache(const QRectF &rf)
{
Q_D(const QDeclarativeTextEdit);
- QRect r = rf.toRect();
- if (r != QRect(0,0,INT_MAX,INT_MAX)) // Don't translate "everything"
- r = r.translated(0,d->yoff);
+ QRect r;
+ if (!rf.isValid()) {
+ r = QRect(0,0,INT_MAX,INT_MAX);
+ } else {
+ r = rf.toRect();
+ if (r != QRect(0,0,INT_MAX,INT_MAX)) // Don't translate "everything"
+ r = r.translated(0,d->yoff);
+ }
dirtyCache(r);
emit update();
}
@@ -1076,6 +1246,7 @@ void QDeclarativeTextEditPrivate::init()
QObject::connect(control, SIGNAL(selectionChanged()), q, SLOT(updateSelectionMarkers()));
QObject::connect(control, SIGNAL(cursorPositionChanged()), q, SLOT(updateSelectionMarkers()));
QObject::connect(control, SIGNAL(cursorPositionChanged()), q, SIGNAL(cursorPositionChanged()));
+ QObject::connect(control, SIGNAL(cursorPositionChanged()), q, SIGNAL(cursorRectangleChanged()));
document = control->document();
document->setDefaultFont(font);
@@ -1107,7 +1278,6 @@ void QDeclarativeTextEditPrivate::updateSelection()
QTextCursor cursor = control->textCursor();
bool startChange = (lastSelectionStart != cursor.selectionStart());
bool endChange = (lastSelectionEnd != cursor.selectionEnd());
- //### Is it worth calculating a more minimal set of movements?
cursor.beginEditBlock();
cursor.setPosition(lastSelectionStart, QTextCursor::MoveAnchor);
cursor.setPosition(lastSelectionEnd, QTextCursor::KeepAnchor);
@@ -1117,8 +1287,6 @@ void QDeclarativeTextEditPrivate::updateSelection()
q->selectionStartChanged();
if(endChange)
q->selectionEndChanged();
- startChange = (lastSelectionStart != control->textCursor().selectionStart());
- endChange = (lastSelectionEnd != control->textCursor().selectionEnd());
}
void QDeclarativeTextEdit::updateSelectionMarkers()
@@ -1144,7 +1312,7 @@ void QDeclarativeTextEdit::updateSize()
int dy = height();
// ### assumes that if the width is set, the text will fill to edges
// ### (unless wrap is false, then clipping will occur)
- if (widthValid())
+ if (widthValid() && d->document->textWidth() != width())
d->document->setTextWidth(width());
dy -= (int)d->document->size().height();
@@ -1160,7 +1328,7 @@ void QDeclarativeTextEdit::updateSize()
//### need to comfirm cost of always setting these
int newWidth = qCeil(d->document->idealWidth());
- if (!widthValid())
+ if (!widthValid() && d->document->textWidth() != newWidth)
d->document->setTextWidth(newWidth); // ### Text does not align if width is not set (QTextDoc bug)
int cursorWidth = 1;
if(d->cursor)
@@ -1170,9 +1338,12 @@ void QDeclarativeTextEdit::updateSize()
newWidth += 3;// ### Need a better way of accounting for space between char and cursor
// ### Setting the implicitWidth triggers another updateSize(), and unless there are bindings nothing has changed.
setImplicitWidth(newWidth);
- setImplicitHeight(d->text.isEmpty() ? fm.height() : (int)d->document->size().height());
+ qreal newHeight = d->document->isEmpty() ? fm.height() : (int)d->document->size().height();
+ setImplicitHeight(newHeight);
+
+ setContentsSize(QSize(newWidth, newHeight));
- setContentsSize(QSize(width(), height()));
+ emit paintedSizeChanged();
} else {
d->dirty = true;
}
@@ -1193,4 +1364,127 @@ void QDeclarativeTextEditPrivate::updateDefaultTextOption()
document->setDefaultTextOption(opt);
}
+
+/*!
+ \qmlmethod void TextEdit::openSoftwareInputPanel()
+
+ Opens software input panels like virtual keyboards for typing, useful for
+ customizing when you want the input keyboard to be shown and hidden in
+ your application.
+
+ By default input panels are shown when TextEdit element gains focus and hidden
+ when the focus is lost. You can disable the automatic behavior by setting the
+ property showInputPanelOnFocus to false and use functions openSoftwareInputPanel()
+ and closeSoftwareInputPanel() to implement the behavior you want.
+
+ Only relevant on platforms, which provide virtual keyboards.
+
+ \code
+ import Qt 4.7
+ TextEdit {
+ id: textEdit
+ text: "Hello world!"
+ showInputPanelOnFocus: false
+ MouseArea {
+ anchors.fill: parent
+ onClicked: textEdit.openSoftwareInputPanel()
+ }
+ onFocusChanged: if (!focus) closeSoftwareInputpanel()
+ }
+ \endcode
+*/
+void QDeclarativeTextEdit::openSoftwareInputPanel()
+{
+ QEvent event(QEvent::RequestSoftwareInputPanel);
+ if (qApp) {
+ if (QGraphicsView * view = qobject_cast<QGraphicsView*>(qApp->focusWidget())) {
+ if (view->scene() && view->scene() == scene()) {
+ QApplication::sendEvent(view, &event);
+ }
+ }
+ }
+}
+
+/*!
+ \qmlmethod void TextEdit::closeSoftwareInputPanel()
+
+ Closes a software input panel like a virtual keyboard shown on the screen, useful
+ for customizing when you want the input keyboard to be shown and hidden in
+ your application.
+
+ By default input panels are shown when TextEdit element gains focus and hidden
+ when the focus is lost. You can disable the automatic behavior by setting the
+ property showInputPanelOnFocus to false and use functions openSoftwareInputPanel()
+ and closeSoftwareInputPanel() to implement the behavior you want.
+
+ Only relevant on platforms, which provide virtual keyboards.
+
+ \code
+ import Qt 4.7
+ TextEdit {
+ id: textEdit
+ text: "Hello world!"
+ showInputPanelOnFocus: false
+ MouseArea {
+ anchors.fill: parent
+ onClicked: textEdit.openSoftwareInputPanel()
+ }
+ onFocusChanged: if (!focus) closeSoftwareInputpanel()
+ }
+ \endcode
+*/
+void QDeclarativeTextEdit::closeSoftwareInputPanel()
+{
+ QEvent event(QEvent::CloseSoftwareInputPanel);
+ if (qApp) {
+ if (QGraphicsView * view = qobject_cast<QGraphicsView*>(qApp->focusWidget())) {
+ if (view->scene() && view->scene() == scene()) {
+ QApplication::sendEvent(view, &event);
+ }
+ }
+ }
+}
+
+/*!
+ \qmlproperty bool TextEdit::showInputPanelOnFocus
+ Whether input panels are automatically shown when TextEdit element gains
+ focus and hidden when focus is lost. By default this is set to true.
+
+ Only relevant on platforms, which provide virtual keyboards.
+*/
+bool QDeclarativeTextEdit::showInputPanelOnFocus() const
+{
+ Q_D(const QDeclarativeTextEdit);
+ return d->showInputPanelOnFocus;
+}
+
+void QDeclarativeTextEdit::setShowInputPanelOnFocus(bool showOnFocus)
+{
+ Q_D(QDeclarativeTextEdit);
+ if (d->showInputPanelOnFocus == showOnFocus)
+ return;
+
+ d->showInputPanelOnFocus = showOnFocus;
+
+ emit showInputPanelOnFocusChanged(d->showInputPanelOnFocus);
+}
+
+void QDeclarativeTextEdit::focusInEvent(QFocusEvent *event)
+{
+ Q_D(const QDeclarativeTextEdit);
+ if (d->showInputPanelOnFocus && !isReadOnly() && event->reason() != Qt::ActiveWindowFocusReason) {
+ openSoftwareInputPanel();
+ }
+ QDeclarativePaintedItem::focusInEvent(event);
+}
+
+void QDeclarativeTextEdit::focusOutEvent(QFocusEvent *event)
+{
+ Q_D(const QDeclarativeTextEdit);
+ if (d->showInputPanelOnFocus && !isReadOnly()) {
+ closeSoftwareInputPanel();
+ }
+ QDeclarativePaintedItem::focusOutEvent(event);
+}
+
QT_END_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit_p.h b/src/declarative/graphicsitems/qdeclarativetextedit_p.h
index 8848d47..3abfc35 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextedit_p.h
@@ -74,15 +74,19 @@ class Q_DECLARATIVE_EXPORT QDeclarativeTextEdit : public QDeclarativePaintedItem
Q_PROPERTY(HAlignment horizontalAlignment READ hAlign WRITE setHAlign NOTIFY horizontalAlignmentChanged)
Q_PROPERTY(VAlignment verticalAlignment READ vAlign WRITE setVAlign NOTIFY verticalAlignmentChanged)
Q_PROPERTY(WrapMode wrapMode READ wrapMode WRITE setWrapMode NOTIFY wrapModeChanged)
+ Q_PROPERTY(qreal paintedWidth READ paintedWidth NOTIFY paintedSizeChanged)
+ Q_PROPERTY(qreal paintedHeight READ paintedHeight NOTIFY paintedSizeChanged)
Q_PROPERTY(TextFormat textFormat READ textFormat WRITE setTextFormat NOTIFY textFormatChanged)
Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly NOTIFY readOnlyChanged)
Q_PROPERTY(bool cursorVisible READ isCursorVisible WRITE setCursorVisible NOTIFY cursorVisibleChanged)
Q_PROPERTY(int cursorPosition READ cursorPosition WRITE setCursorPosition NOTIFY cursorPositionChanged)
+ Q_PROPERTY(QRect cursorRectangle READ cursorRectangle NOTIFY cursorRectangleChanged)
Q_PROPERTY(QDeclarativeComponent* cursorDelegate READ cursorDelegate WRITE setCursorDelegate NOTIFY cursorDelegateChanged)
- Q_PROPERTY(int selectionStart READ selectionStart WRITE setSelectionStart NOTIFY selectionStartChanged)
- Q_PROPERTY(int selectionEnd READ selectionEnd WRITE setSelectionEnd NOTIFY selectionEndChanged)
+ Q_PROPERTY(int selectionStart READ selectionStart NOTIFY selectionStartChanged)
+ Q_PROPERTY(int selectionEnd READ selectionEnd NOTIFY selectionEndChanged)
Q_PROPERTY(QString selectedText READ selectedText NOTIFY selectionChanged)
Q_PROPERTY(bool focusOnPress READ focusOnPress WRITE setFocusOnPress NOTIFY focusOnPressChanged)
+ Q_PROPERTY(bool showInputPanelOnFocus READ showInputPanelOnFocus WRITE setShowInputPanelOnFocus NOTIFY showInputPanelOnFocusChanged)
Q_PROPERTY(bool persistentSelection READ persistentSelection WRITE setPersistentSelection NOTIFY persistentSelectionChanged)
Q_PROPERTY(qreal textMargin READ textMargin WRITE setTextMargin NOTIFY textMarginChanged)
Q_PROPERTY(Qt::InputMethodHints inputMethodHints READ inputMethodHints WRITE setInputMethodHints)
@@ -112,9 +116,13 @@ public:
enum WrapMode { NoWrap = QTextOption::NoWrap,
WordWrap = QTextOption::WordWrap,
WrapAnywhere = QTextOption::WrapAnywhere,
- WrapAtWordBoundaryOrAnywhere = QTextOption::WrapAtWordBoundaryOrAnywhere
+ WrapAtWordBoundaryOrAnywhere = QTextOption::WrapAtWordBoundaryOrAnywhere, // COMPAT
+ Wrap = QTextOption::WrapAtWordBoundaryOrAnywhere
};
+ Q_INVOKABLE void openSoftwareInputPanel();
+ Q_INVOKABLE void closeSoftwareInputPanel();
+
QString text() const;
void setText(const QString &);
@@ -152,16 +160,16 @@ public:
void setCursorDelegate(QDeclarativeComponent*);
int selectionStart() const;
- void setSelectionStart(int);
-
int selectionEnd() const;
- void setSelectionEnd(int);
QString selectedText() const;
bool focusOnPress() const;
void setFocusOnPress(bool on);
+ bool showInputPanelOnFocus() const;
+ void setShowInputPanelOnFocus(bool showOnFocus);
+
bool persistentSelection() const;
void setPersistentSelection(bool on);
@@ -180,13 +188,22 @@ public:
void setTextInteractionFlags(Qt::TextInteractionFlags flags);
Qt::TextInteractionFlags textInteractionFlags() const;
- QRect cursorRect() const;
+ QRect cursorRectangle() const;
QVariant inputMethodQuery(Qt::InputMethodQuery property) const;
+ qreal paintedWidth() const;
+ qreal paintedHeight() const;
+
+ Q_INVOKABLE QRectF positionToRectangle(int) const;
+ Q_INVOKABLE int positionAt(int x, int y) const;
+ Q_INVOKABLE void moveCursorSelection(int pos);
+
Q_SIGNALS:
void textChanged(const QString &);
+ void paintedSizeChanged();
void cursorPositionChanged();
+ void cursorRectangleChanged();
void selectionStartChanged();
void selectionEndChanged();
void selectionChanged();
@@ -205,9 +222,15 @@ Q_SIGNALS:
void persistentSelectionChanged(bool isPersistentSelection);
void textMarginChanged(qreal textMargin);
void selectByMouseChanged(bool selectByMouse);
+ void showInputPanelOnFocusChanged(bool showOnFocus);
public Q_SLOTS:
void selectAll();
+ void selectWord();
+ void select(int start, int end);
+ void cut();
+ void copy();
+ void paste();
private Q_SLOTS:
void updateImgCache(const QRectF &rect);
@@ -226,6 +249,8 @@ protected:
bool event(QEvent *);
void keyPressEvent(QKeyEvent *);
void keyReleaseEvent(QKeyEvent *);
+ void focusInEvent(QFocusEvent *event);
+ void focusOutEvent(QFocusEvent *event);
// mouse filter?
void mousePressEvent(QGraphicsSceneMouseEvent *event);
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h b/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
index d96796c..8e1d630 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
@@ -70,9 +70,9 @@ public:
QDeclarativeTextEditPrivate()
: color("black"), hAlign(QDeclarativeTextEdit::AlignLeft), vAlign(QDeclarativeTextEdit::AlignTop),
imgDirty(true), dirty(false), richText(false), cursorVisible(false), focusOnPress(true),
- persistentSelection(true), clickCausedFocus(false), textMargin(0.0), lastSelectionStart(0), lastSelectionEnd(0),
- cursorComponent(0), cursor(0), format(QDeclarativeTextEdit::AutoText), document(0),
- wrapMode(QDeclarativeTextEdit::NoWrap),
+ showInputPanelOnFocus(true), persistentSelection(true), textMargin(0.0), lastSelectionStart(0),
+ lastSelectionEnd(0), cursorComponent(0), cursor(0), format(QDeclarativeTextEdit::AutoText),
+ document(0), wrapMode(QDeclarativeTextEdit::NoWrap),
selectByMouse(false),
yoff(0)
{
@@ -101,8 +101,8 @@ public:
bool richText : 1;
bool cursorVisible : 1;
bool focusOnPress : 1;
+ bool showInputPanelOnFocus : 1;
bool persistentSelection : 1;
- bool clickCausedFocus : 1;
qreal textMargin;
int lastSelectionStart;
int lastSelectionEnd;
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
index 2e7715f..7b96c0c 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
@@ -46,6 +46,7 @@
#include <qdeclarativeinfo.h>
#include <QValidator>
+#include <QTextCursor>
#include <QApplication>
#include <QFontMetrics>
#include <QPainter>
@@ -54,8 +55,9 @@ QT_BEGIN_NAMESPACE
/*!
\qmlclass TextInput QDeclarativeTextInput
- \since 4.7
+ \since 4.7
\brief The TextInput item allows you to add an editable line of text to a scene.
+ \inherits Item
TextInput can only display a single line of text, and can only display
plain text. However it can provide addition input constraints on the text.
@@ -428,10 +430,12 @@ void QDeclarativeTextInput::setCursorPosition(int cp)
Returns a Rect which encompasses the cursor, but which may be larger than is
required. Ignores custom cursor delegates.
*/
-QRect QDeclarativeTextInput::cursorRect() const
+QRect QDeclarativeTextInput::cursorRectangle() const
{
Q_D(const QDeclarativeTextInput);
- return d->control->cursorRect();
+ QRect r = d->control->cursorRect();
+ r.setHeight(r.height()-1); // Make consistent with TextEdit (QLineControl inexplicably adds 1)
+ return r;
}
/*!
@@ -453,15 +457,6 @@ int QDeclarativeTextInput::selectionStart() const
return d->lastSelectionStart;
}
-void QDeclarativeTextInput::setSelectionStart(int s)
-{
- Q_D(QDeclarativeTextInput);
- if(d->lastSelectionStart == s || s < 0 || s > text().length())
- return;
- d->lastSelectionStart = s;
- d->control->setSelection(s, d->lastSelectionEnd - s);
-}
-
/*!
\qmlproperty int TextInput::selectionEnd
@@ -481,13 +476,12 @@ int QDeclarativeTextInput::selectionEnd() const
return d->lastSelectionEnd;
}
-void QDeclarativeTextInput::setSelectionEnd(int s)
+void QDeclarativeTextInput::select(int start, int end)
{
Q_D(QDeclarativeTextInput);
- if(d->lastSelectionEnd == s || s < 0 || s > text().length())
+ if (start < 0 || end < 0 || start > d->control->text().length() || end > d->control->text().length())
return;
- d->lastSelectionEnd = s;
- d->control->setSelection(d->lastSelectionStart, s - d->lastSelectionStart);
+ d->control->setSelection(start, end-start);
}
/*!
@@ -647,6 +641,7 @@ void QDeclarativeTextInput::setAutoScroll(bool b)
\sa acceptableInput, inputMask
*/
+#ifndef QT_NO_VALIDATOR
QValidator* QDeclarativeTextInput::validator() const
{
Q_D(const QDeclarativeTextInput);
@@ -668,6 +663,7 @@ void QDeclarativeTextInput::setValidator(QValidator* v)
emit validatorChanged();
}
+#endif // QT_NO_VALIDATOR
/*!
\qmlproperty string TextInput::inputMask
@@ -832,7 +828,20 @@ void QDeclarativeTextInput::moveCursor()
}
/*!
- \qmlmethod int TextInput::xToPosition(int x)
+ \qmlmethod rect TextInput::positionToRectangle(int x)
+*/
+QRectF QDeclarativeTextInput::positionToRectangle(int x) const
+{
+ Q_D(const QDeclarativeTextInput);
+ QFontMetrics fm = QFontMetrics(d->font);
+ return QRectF(d->control->cursorToX(x)-d->hscroll,
+ 0.0,
+ d->control->cursorWidth(),
+ cursorRectangle().height());
+}
+
+/*!
+ \qmlmethod int TextInput::positionAt(int x)
This function returns the character position at
x pixels from the left of the textInput. Position 0 is before the
@@ -842,10 +851,10 @@ void QDeclarativeTextInput::moveCursor()
This means that for all x values before the first character this function returns 0,
and for all x values after the last character this function returns text.length.
*/
-int QDeclarativeTextInput::xToPosition(int x)
+int QDeclarativeTextInput::positionAt(int x) const
{
Q_D(const QDeclarativeTextInput);
- return d->control->xToPos(x - d->hscroll);
+ return d->control->xToPos(x + d->hscroll);
}
void QDeclarativeTextInputPrivate::focusChanged(bool hasFocus)
@@ -885,8 +894,8 @@ void QDeclarativeTextInput::keyPressEvent(QKeyEvent* ev)
void QDeclarativeTextInput::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativeTextInput);
- bool hadFocus = hasFocus();
if(d->focusOnPress){
+ bool hadFocus = hasFocus();
QGraphicsItem *p = parentItem();//###Is there a better way to find my focus scope?
while(p) {
if (p->flags() & QGraphicsItem::ItemIsFocusScope)
@@ -894,9 +903,11 @@ void QDeclarativeTextInput::mousePressEvent(QGraphicsSceneMouseEvent *event)
p = p->parentItem();
}
setFocus(true);
+ if (hasFocus() == hadFocus && d->showInputPanelOnFocus && !isReadOnly()) {
+ // re-open input panel on press w already focused
+ openSoftwareInputPanel();
+ }
}
- if (!hadFocus && hasFocus())
- d->clickCausedFocus = true;
bool mark = event->modifiers() & Qt::ShiftModifier;
int cursor = d->xToPos(event->pos().x());
@@ -922,10 +933,7 @@ Handles the given mouse \a event.
void QDeclarativeTextInput::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativeTextInput);
- QWidget *widget = event->widget();
- if (widget && !d->control->isReadOnly() && boundingRect().contains(event->pos()))
- qt_widget_private(widget)->handleSoftwareInputPanel(event->button(), d->clickCausedFocus);
- d->clickCausedFocus = false;
+ d->control->processEvent(event);
if (!event->isAccepted())
QDeclarativePaintedItem::mouseReleaseEvent(event);
}
@@ -1019,7 +1027,6 @@ void QDeclarativeTextInput::drawContents(QPainter *p, const QRect &r)
d->hscroll -= minLB;
offset = QPoint(d->hscroll, 0);
}
-
d->control->draw(p, offset, r, flags);
p->restore();
@@ -1057,12 +1064,27 @@ QVariant QDeclarativeTextInput::inputMethodQuery(Qt::InputMethodQuery property)
}
}
+/*!
+ \qmlmethod void TextInput::selectAll()
+
+ Causes all text to be selected.
+*/
void QDeclarativeTextInput::selectAll()
{
Q_D(QDeclarativeTextInput);
d->control->setSelection(0, d->control->text().length());
}
+/*!
+ \qmlmethod void TextInput::selectWord()
+
+ Causes the word closest to the current cursor position to be selected.
+*/
+void QDeclarativeTextInput::selectWord()
+{
+ Q_D(QDeclarativeTextInput);
+ d->control->selectWordAtPos(d->control->cursor());
+}
/*!
\qmlproperty bool TextInput::smooth
@@ -1120,7 +1142,7 @@ QString QDeclarativeTextInput::displayText() const
}
/*!
- \qmlproperty string TextInput::selectByMouse
+ \qmlproperty bool TextInput::selectByMouse
Defaults to false.
@@ -1174,6 +1196,129 @@ void QDeclarativeTextInput::moveCursorSelection(int position)
d->control->moveCursor(position, true);
}
+/*!
+ \qmlmethod void TextInput::openSoftwareInputPanel()
+
+ Opens software input panels like virtual keyboards for typing, useful for
+ customizing when you want the input keyboard to be shown and hidden in
+ your application.
+
+ By default input panels are shown when TextInput element gains focus and hidden
+ when the focus is lost. You can disable the automatic behavior by setting the
+ property showInputPanelOnFocus to false and use functions openSoftwareInputPanel()
+ and closeSoftwareInputPanel() to implement the behavior you want.
+
+ Only relevant on platforms, which provide virtual keyboards.
+
+ \code
+ import Qt 4.7
+ TextInput {
+ id: textInput
+ text: "Hello world!"
+ showInputPanelOnFocus: false
+ MouseArea {
+ anchors.fill: parent
+ onClicked: textInput.openSoftwareInputPanel()
+ }
+ onFocusChanged: if (!focus) closeSoftwareInputPanel()
+ }
+ \endcode
+*/
+void QDeclarativeTextInput::openSoftwareInputPanel()
+{
+ QEvent event(QEvent::RequestSoftwareInputPanel);
+ if (qApp) {
+ if (QGraphicsView * view = qobject_cast<QGraphicsView*>(qApp->focusWidget())) {
+ if (view->scene() && view->scene() == scene()) {
+ QApplication::sendEvent(view, &event);
+ }
+ }
+ }
+}
+
+/*!
+ \qmlmethod void TextInput::closeSoftwareInputPanel()
+
+ Closes a software input panel like a virtual keyboard shown on the screen, useful
+ for customizing when you want the input keyboard to be shown and hidden in
+ your application.
+
+ By default input panels are shown when TextInput element gains focus and hidden
+ when the focus is lost. You can disable the automatic behavior by setting the
+ property showInputPanelOnFocus to false and use functions openSoftwareInputPanel()
+ and closeSoftwareInputPanel() to implement the behavior you want.
+
+ Only relevant on platforms, which provide virtual keyboards.
+
+ \code
+ import Qt 4.7
+ TextInput {
+ id: textInput
+ text: "Hello world!"
+ showInputPanelOnFocus: false
+ MouseArea {
+ anchors.fill: parent
+ onClicked: textInput.openSoftwareInputPanel()
+ }
+ onFocusChanged: if (!focus) closeSoftwareInputPanel()
+ }
+ \endcode
+*/
+void QDeclarativeTextInput::closeSoftwareInputPanel()
+{
+ QEvent event(QEvent::CloseSoftwareInputPanel);
+ if (qApp) {
+ QEvent event(QEvent::CloseSoftwareInputPanel);
+ if (QGraphicsView * view = qobject_cast<QGraphicsView*>(qApp->focusWidget())) {
+ if (view->scene() && view->scene() == scene()) {
+ QApplication::sendEvent(view, &event);
+ }
+ }
+ }
+}
+
+/*!
+ \qmlproperty bool TextInput::showInputPanelOnFocus
+ Whether input panels are automatically shown when TextInput element gains
+ focus and hidden when focus is lost. By default this is set to true.
+
+ Only relevant on platforms, which provide virtual keyboards.
+*/
+bool QDeclarativeTextInput::showInputPanelOnFocus() const
+{
+ Q_D(const QDeclarativeTextInput);
+ return d->showInputPanelOnFocus;
+}
+
+void QDeclarativeTextInput::setShowInputPanelOnFocus(bool showOnFocus)
+{
+ Q_D(QDeclarativeTextInput);
+ if (d->showInputPanelOnFocus == showOnFocus)
+ return;
+
+ d->showInputPanelOnFocus = showOnFocus;
+
+ emit showInputPanelOnFocusChanged(d->showInputPanelOnFocus);
+}
+
+void QDeclarativeTextInput::focusInEvent(QFocusEvent *event)
+{
+ Q_D(const QDeclarativeTextInput);
+ if (d->showInputPanelOnFocus && !isReadOnly() && event->reason() != Qt::ActiveWindowFocusReason) {
+ openSoftwareInputPanel();
+ }
+ QDeclarativePaintedItem::focusInEvent(event);
+}
+
+void QDeclarativeTextInput::focusOutEvent(QFocusEvent *event)
+{
+ Q_D(const QDeclarativeTextInput);
+ if (d->showInputPanelOnFocus && !isReadOnly()) {
+ closeSoftwareInputPanel();
+ }
+ QDeclarativePaintedItem::focusOutEvent(event);
+}
+
void QDeclarativeTextInputPrivate::init()
{
Q_Q(QDeclarativeTextInput);
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p.h
index b2fd057..6bc6fc4 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextinput_p.h
@@ -72,20 +72,23 @@ class Q_DECLARATIVE_EXPORT QDeclarativeTextInput : public QDeclarativePaintedIte
Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly NOTIFY readOnlyChanged)
Q_PROPERTY(bool cursorVisible READ isCursorVisible WRITE setCursorVisible NOTIFY cursorVisibleChanged)
Q_PROPERTY(int cursorPosition READ cursorPosition WRITE setCursorPosition NOTIFY cursorPositionChanged)
- Q_PROPERTY(QRect cursorRect READ cursorRect NOTIFY cursorPositionChanged)
+ Q_PROPERTY(QRect cursorRectangle READ cursorRectangle NOTIFY cursorPositionChanged)
Q_PROPERTY(QDeclarativeComponent *cursorDelegate READ cursorDelegate WRITE setCursorDelegate NOTIFY cursorDelegateChanged)
- Q_PROPERTY(int selectionStart READ selectionStart WRITE setSelectionStart NOTIFY selectionStartChanged)
- Q_PROPERTY(int selectionEnd READ selectionEnd WRITE setSelectionEnd NOTIFY selectionEndChanged)
+ Q_PROPERTY(int selectionStart READ selectionStart NOTIFY selectionStartChanged)
+ Q_PROPERTY(int selectionEnd READ selectionEnd NOTIFY selectionEndChanged)
Q_PROPERTY(QString selectedText READ selectedText NOTIFY selectedTextChanged)
Q_PROPERTY(int maximumLength READ maxLength WRITE setMaxLength NOTIFY maximumLengthChanged)
+#ifndef QT_NO_VALIDATOR
Q_PROPERTY(QValidator* validator READ validator WRITE setValidator NOTIFY validatorChanged)
+#endif
Q_PROPERTY(QString inputMask READ inputMask WRITE setInputMask NOTIFY inputMaskChanged)
Q_PROPERTY(Qt::InputMethodHints inputMethodHints READ inputMethodHints WRITE setInputMethodHints)
Q_PROPERTY(bool acceptableInput READ hasAcceptableInput NOTIFY acceptableInputChanged)
Q_PROPERTY(EchoMode echoMode READ echoMode WRITE setEchoMode NOTIFY echoModeChanged)
Q_PROPERTY(bool focusOnPress READ focusOnPress WRITE setFocusOnPress NOTIFY focusOnPressChanged)
+ Q_PROPERTY(bool showInputPanelOnFocus READ showInputPanelOnFocus WRITE setShowInputPanelOnFocus NOTIFY showInputPanelOnFocusChanged)
Q_PROPERTY(QString passwordCharacter READ passwordCharacter WRITE setPasswordCharacter NOTIFY passwordCharacterChanged)
Q_PROPERTY(QString displayText READ displayText NOTIFY displayTextChanged)
Q_PROPERTY(bool autoScroll READ autoScroll WRITE setAutoScroll NOTIFY autoScrollChanged)
@@ -109,9 +112,13 @@ public:
};
//Auxilliary functions needed to control the TextInput from QML
- Q_INVOKABLE int xToPosition(int x);
+ Q_INVOKABLE int positionAt(int x) const;
+ Q_INVOKABLE QRectF positionToRectangle(int x) const;
Q_INVOKABLE void moveCursorSelection(int pos);
+ Q_INVOKABLE void openSoftwareInputPanel();
+ Q_INVOKABLE void closeSoftwareInputPanel();
+
QString text() const;
void setText(const QString &);
@@ -139,22 +146,20 @@ public:
int cursorPosition() const;
void setCursorPosition(int cp);
- QRect cursorRect() const;
+ QRect cursorRectangle() const;
int selectionStart() const;
- void setSelectionStart(int);
-
int selectionEnd() const;
- void setSelectionEnd(int);
QString selectedText() const;
int maxLength() const;
void setMaxLength(int ml);
+#ifndef QT_NO_VALIDATOR
QValidator * validator() const;
void setValidator(QValidator* v);
-
+#endif
QString inputMask() const;
void setInputMask(const QString &im);
@@ -172,6 +177,9 @@ public:
bool focusOnPress() const;
void setFocusOnPress(bool);
+ bool showInputPanelOnFocus() const;
+ void setShowInputPanelOnFocus(bool showOnFocus);
+
bool autoScroll() const;
void setAutoScroll(bool);
@@ -208,6 +216,7 @@ Q_SIGNALS:
void focusOnPressChanged(bool focusOnPress);
void autoScrollChanged(bool autoScroll);
void selectByMouseChanged(bool selectByMouse);
+ void showInputPanelOnFocusChanged(bool showOnFocus);
protected:
virtual void geometryChanged(const QRectF &newGeometry,
@@ -218,9 +227,13 @@ protected:
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
void keyPressEvent(QKeyEvent* ev);
bool event(QEvent *e);
+ void focusInEvent(QFocusEvent *event);
+ void focusOutEvent(QFocusEvent *event);
public Q_SLOTS:
void selectAll();
+ void selectWord();
+ void select(int start, int end);
private Q_SLOTS:
void updateSize(bool needsRedraw = true);
@@ -238,10 +251,12 @@ private:
QT_END_NAMESPACE
QML_DECLARE_TYPE(QDeclarativeTextInput)
+#ifndef QT_NO_VALIDATOR
QML_DECLARE_TYPE(QValidator)
QML_DECLARE_TYPE(QIntValidator)
QML_DECLARE_TYPE(QDoubleValidator)
QML_DECLARE_TYPE(QRegExpValidator)
+#endif
QT_END_HEADER
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
index 1d8e0f7..f44d014 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
@@ -72,7 +72,7 @@ public:
color((QRgb)0), style(QDeclarativeText::Normal),
styleColor((QRgb)0), hAlign(QDeclarativeTextInput::AlignLeft),
hscroll(0), oldScroll(0), focused(false), focusOnPress(true),
- cursorVisible(false), autoScroll(true), clickCausedFocus(false),
+ showInputPanelOnFocus(true), cursorVisible(false), autoScroll(true),
selectByMouse(false)
{
}
@@ -115,9 +115,9 @@ public:
int oldScroll;
bool focused;
bool focusOnPress;
+ bool showInputPanelOnFocus;
bool cursorVisible;
bool autoScroll;
- bool clickCausedFocus;
bool selectByMouse;
};
diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp
index d27aced..80a1093 100644
--- a/src/declarative/qml/qdeclarativecompiler.cpp
+++ b/src/declarative/qml/qdeclarativecompiler.cpp
@@ -240,6 +240,7 @@ bool QDeclarativeCompiler::testLiteralAssignment(const QMetaProperty &prop,
if (!ok) COMPILE_EXCEPTION(v, tr("Invalid property assignment: color expected"));
}
break;
+#ifndef QT_NO_TEXTDATE
case QVariant::Date:
{
bool ok;
@@ -261,6 +262,7 @@ bool QDeclarativeCompiler::testLiteralAssignment(const QMetaProperty &prop,
if (!ok) COMPILE_EXCEPTION(v, tr("Invalid property assignment: datetime expected"));
}
break;
+#endif // QT_NO_TEXTDATE
case QVariant::Point:
case QVariant::PointF:
{
@@ -414,6 +416,7 @@ void QDeclarativeCompiler::genLiteralAssignment(const QMetaProperty &prop,
instr.storeColor.value = c.rgba();
}
break;
+#ifndef QT_NO_TEXTDATE
case QVariant::Date:
{
QDate d = QDeclarativeStringConverters::dateFromString(string);
@@ -447,6 +450,7 @@ void QDeclarativeCompiler::genLiteralAssignment(const QMetaProperty &prop,
instr.storeDateTime.valueIndex = index;
}
break;
+#endif // QT_NO_TEXTDATE
case QVariant::Point:
case QVariant::PointF:
{
diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp
index 7aa17e8..9847079 100644
--- a/src/declarative/qml/qdeclarativecomponent.cpp
+++ b/src/declarative/qml/qdeclarativecomponent.cpp
@@ -53,6 +53,7 @@
#include "private/qdeclarativebinding_p_p.h"
#include "private/qdeclarativeglobal_p.h"
#include "private/qdeclarativescriptparser_p.h"
+#include "private/qdeclarativedebugtrace_p.h"
#include <QStack>
#include <QStringList>
@@ -693,6 +694,11 @@ QDeclarativeComponentPrivate::beginCreate(QDeclarativeContextData *context, cons
QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(engine);
+ bool isRoot = !ep->inBeginCreate;
+ if (isRoot)
+ QDeclarativeDebugTrace::startRange(QDeclarativeDebugTrace::Creating);
+ QDeclarativeDebugTrace::rangeData(QDeclarativeDebugTrace::Creating, cc->url);
+
QDeclarativeContextData *ctxt = new QDeclarativeContextData;
ctxt->isInternal = true;
ctxt->url = cc->url;
@@ -839,6 +845,7 @@ void QDeclarativeComponentPrivate::complete(QDeclarativeEnginePrivate *enginePri
enginePriv->erroredBindings->removeError();
}
}
+
}
}
@@ -860,6 +867,8 @@ void QDeclarativeComponentPrivate::completeCreate()
if (state.completePending) {
QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(engine);
complete(ep, &state);
+
+ QDeclarativeDebugTrace::endRange(QDeclarativeDebugTrace::Creating);
}
}
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index a7384a9..39b0802 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -153,16 +153,28 @@ void QDeclarativeEnginePrivate::defineModule()
/*!
\qmlclass Qt QDeclarativeEnginePrivate
-\brief The QML Global Qt Object
+\brief The QML global Qt object provides useful enums and functions from Qt.
+
+The \c Qt object provides useful enums and functions from Qt, for use in all QML files.
+
+The \c Qt object is not a QML element; it cannot be instantiated. It is a global object
+with enums and functions. To use it, call the members of the global \c Qt object directly.
+For example:
+
+\qml
+import Qt 4.7
+
+Text {
+ color: Qt.rgba(255, 0, 0, 1)
+ text: Qt.md5("hello, world")
+}
+\endqml
-The Qt object provides useful enums and functions from Qt, for use in all QML
-files. Note that you do note create instances of this type, but instead use
-the members of the global "Qt" object.
\section1 Enums
The Qt object contains all enums in the Qt namespace. For example, you can
-access the AlignLeft member of the Qt::AlignmentFlag enum with \c Qt.AlignLeft.
+access the \c AlignLeft member of the \c Qt::AlignmentFlag enum with \c Qt.AlignLeft.
For a full list of enums, see the \l{Qt Namespace} documentation.
@@ -172,23 +184,23 @@ data types. This is primarily useful when setting the properties of an item
when the property has one of the following types:
\list
-\o Color
-\o Rect
-\o Point
-\o Size
-\o Vector3D
+\o \c color - use \l{Qt::rgba()}{Qt.rgba()}, \l{Qt::hsla()}{Qt.hsla()}, \l{Qt::darker()}{Qt.darker()}, \l{Qt::lighter()}{Qt.lighter()} or \l{Qt::tint()}{Qt.tint()}
+\o \c rect - use \l{Qt::rect()}{Qt.rect()}
+\o \c point - use \l{Qt::point()}{Qt.point()}
+\o \c size - use \l{Qt::size()}{Qt.size()}
+\o \c vector3d - use \l{Qt::vector3d()}{Qt.vector3d()}
\endlist
-There are also string based constructors for these types, see \l{qdeclarativebasictypes.html}{Qml Types}.
+There are also string based constructors for these types, see \l{qdeclarativebasictypes.html}{QML Basic Types}.
\section1 Date/Time Formatters
The Qt object contains several functions for formatting dates and times.
\list
- \o \l{Qt::formatDateTime}{string Qt.formatDateTime(datetime date, variant format)
- \o \l{Qt::formatDate}{string Qt.formatDate(datetime date, variant format)
- \o \l{Qt::formatTime}{string Qt.formatTime(datetime date, variant format)
+ \o \l{Qt::formatDateTime}{string Qt.formatDateTime(datetime date, variant format)}
+ \o \l{Qt::formatDate}{string Qt.formatDate(datetime date, variant format)}
+ \o \l{Qt::formatTime}{string Qt.formatTime(datetime date, variant format)}
\endlist
The format specification is described at \l{Qt::formatDateTime}{Qt.formatDateTime}.
@@ -200,8 +212,8 @@ items from files or strings. See \l{Dynamic Object Management} for an overview
of their use.
\list
- \o \l{Qt::createComponent}{object Qt.createComponent(url)}
- \o \l{Qt::createQmlObject}{object Qt.createQmlObject(string qml, object parent, string filepath)}
+ \o \l{Qt::createComponent()}{object Qt.createComponent(url)}
+ \o \l{Qt::createQmlObject()}{object Qt.createQmlObject(string qml, object parent, string filepath)}
\endlist
*/
@@ -226,8 +238,7 @@ QDeclarativeEnginePrivate::QDeclarativeEnginePrivate(QDeclarativeEngine *e)
/*!
\qmlmethod url Qt::resolvedUrl(url)
-This function returns \c url resolved relative to the URL of the
-caller.
+Returns \c url resolved relative to the URL of the caller.
*/
QUrl QDeclarativeScriptEngine::resolvedUrl(QScriptContext *context, const QUrl& url)
{
@@ -285,10 +296,12 @@ QDeclarativeScriptEngine::QDeclarativeScriptEngine(QDeclarativeEnginePrivate *pr
qtObject.setProperty(QLatin1String("tint"), newFunction(QDeclarativeEnginePrivate::tint, 2));
}
+#ifndef QT_NO_TEXTDATE
//date/time formatting
qtObject.setProperty(QLatin1String("formatDate"),newFunction(QDeclarativeEnginePrivate::formatDate, 2));
qtObject.setProperty(QLatin1String("formatTime"),newFunction(QDeclarativeEnginePrivate::formatTime, 2));
qtObject.setProperty(QLatin1String("formatDateTime"),newFunction(QDeclarativeEnginePrivate::formatDateTime, 2));
+#endif
//misc methods
qtObject.setProperty(QLatin1String("openUrlExternally"),newFunction(QDeclarativeEnginePrivate::desktopOpenUrl, 1));
@@ -1035,8 +1048,11 @@ QString QDeclarativeEnginePrivate::urlToLocalFileOrQrc(const QUrl& url)
/*!
\qmlmethod object Qt::createComponent(url)
-This function takes the URL of a QML file as its only argument. It returns
-a component object which can be used to create and load that QML file.
+Returns a \l Component object created using the QML file at the specified \a url,
+or \c null if there was an error in creating the component.
+
+Call \l {Component::createObject()}{Component.createObject()} on the returned
+component to create an object instance of the component.
Here is an example. Remember that QML files that might be loaded
over the network cannot be expected to be ready immediately.
@@ -1049,17 +1065,8 @@ If you are certain the files will be local, you could simplify to:
\snippet doc/src/snippets/declarative/componentCreation.js 2
-The methods and properties of the \l {Component} element are defined in its own
-page, but when using it dynamically only two methods are usually used.
- \l {Component::createObject()}{Component.createObject()} returns the created object or \c null if there is an error.
-If there is an error, \l {Component::errorString()}{Component.errorString()} describes
-the error that occurred. Note that createObject() takes exactly one argument, which is set
-to the parent of the created object. Graphical objects without a parent will not appear
-on the scene, but if you do not wish to parent the item at this point you can safely pass
-in null.
-
-If you want to just create an arbitrary string of QML, instead of
-loading a QML file, consider the \l{Qt.createQmlObject(string qml, object parent, string filepath)}{Qt.createQmlObject()} function.
+To create a QML object from an arbitrary string of QML (instead of a file),
+use \l{Qt::createQmlObject()}{Qt.createQmlObject()}.
*/
QScriptValue QDeclarativeEnginePrivate::createComponent(QScriptContext *ctxt, QScriptEngine *engine)
@@ -1088,29 +1095,22 @@ QScriptValue QDeclarativeEnginePrivate::createComponent(QScriptContext *ctxt, QS
/*!
\qmlmethod object Qt::createQmlObject(string qml, object parent, string filepath)
-Creates a new object from the specified string of QML. It requires a
-second argument, which is the id of an existing QML object to use as
-the new object's parent. If a third argument is provided, this is used
-for error reporting as the filepath that the QML came from.
+Returns a new object created from the given \a string of QML with the specified \a parent,
+or \c null if there was an error in creating the object.
+
+If \a filepath is specified, it will be used for error reporting for the created object.
Example (where \c targetItem is the id of an existing QML item):
\snippet doc/src/snippets/declarative/createQmlObject.qml 0
-This function is intended for use inside QML only. It is intended to behave
-similarly to eval, but for creating QML elements.
-
-Returns the created object, \c or null if there is an error. In the case of an
-error, a QtScript Error object is thrown. This object has the additional property,
-qmlErrors, which is an array of all the errors encountered when trying to execute the
-QML. Each object in the array has the members \c lineNumber, \c columnNumber, \c fileName and \c message.
+In the case of an error, a QtScript Error object is thrown. This object has an additional property,
+\c qmlErrors, which is an array of the errors encountered.
+Each object in this array has the members \c lineNumber, \c columnNumber, \c fileName and \c message.
Note that this function returns immediately, and therefore may not work if
-the QML loads new components. If you are trying to load a new component,
-for example from a QML file, consider the \l{Qt.createComponent(url file)}{Qt.createComponent()} function
-instead. 'New components' refers to external QML files that have not yet
-been loaded, and so it is safe to use \c Qt.createQmlObject() to load built-in
-components.
+the \a qml string loads new components (that is, external QML files that have not yet been loaded).
+If this is the case, consider using \l{Qt::createComponent()}{Qt.createComponent()} instead.
*/
QScriptValue QDeclarativeEnginePrivate::createQmlObject(QScriptContext *ctxt, QScriptEngine *engine)
@@ -1217,7 +1217,7 @@ QScriptValue QDeclarativeEnginePrivate::isQtObject(QScriptContext *ctxt, QScript
/*!
\qmlmethod Qt::vector3d(real x, real y, real z)
-This function returns a Vector3D with the specified \c x, \c y and \c z.
+Returns a Vector3D with the specified \c x, \c y and \c z.
*/
QScriptValue QDeclarativeEnginePrivate::vector3d(QScriptContext *ctxt, QScriptEngine *engine)
{
@@ -1231,8 +1231,9 @@ QScriptValue QDeclarativeEnginePrivate::vector3d(QScriptContext *ctxt, QScriptEn
/*!
\qmlmethod string Qt::formatDate(datetime date, variant format)
-This function returns the string representation of \c date, formatted according to \c format.
+Returns the string representation of \c date, formatted according to \c format.
*/
+#ifndef QT_NO_TEXTDATE
QScriptValue QDeclarativeEnginePrivate::formatDate(QScriptContext*ctxt, QScriptEngine*engine)
{
int argCount = ctxt->argumentCount();
@@ -1256,7 +1257,7 @@ QScriptValue QDeclarativeEnginePrivate::formatDate(QScriptContext*ctxt, QScriptE
/*!
\qmlmethod string Qt::formatTime(datetime time, variant format)
-This function returns the string representation of \c time, formatted according to \c format.
+Returns the string representation of \c time, formatted according to \c format.
See Qt::formatDateTime for how to define \c format.
*/
@@ -1283,7 +1284,7 @@ QScriptValue QDeclarativeEnginePrivate::formatTime(QScriptContext*ctxt, QScriptE
/*!
\qmlmethod string Qt::formatDateTime(datetime dateTime, variant format)
-This function returns the string representation of \c dateTime, formatted according to \c format.
+Returns the string representation of \c dateTime, formatted according to \c format.
\c format for the date/time formatting functions is be specified as follows.
@@ -1370,11 +1371,12 @@ QScriptValue QDeclarativeEnginePrivate::formatDateTime(QScriptContext*ctxt, QScr
}
return engine->newVariant(qVariantFromValue(date.toString(enumFormat)));
}
+#endif // QT_NO_TEXTDATE
/*!
\qmlmethod color Qt::rgba(real red, real green, real blue, real alpha)
-This function returns a Color with the specified \c red, \c green, \c blue and \c alpha components.
+Returns a color with the specified \c red, \c green, \c blue and \c alpha components.
All components should be in the range 0-1 inclusive.
*/
QScriptValue QDeclarativeEnginePrivate::rgba(QScriptContext *ctxt, QScriptEngine *engine)
@@ -1402,7 +1404,7 @@ QScriptValue QDeclarativeEnginePrivate::rgba(QScriptContext *ctxt, QScriptEngine
/*!
\qmlmethod color Qt::hsla(real hue, real saturation, real lightness, real alpha)
-This function returns a Color with the specified \c hue, \c saturation, \c lightness and \c alpha components.
+Returns a color with the specified \c hue, \c saturation, \c lightness and \c alpha components.
All components should be in the range 0-1 inclusive.
*/
QScriptValue QDeclarativeEnginePrivate::hsla(QScriptContext *ctxt, QScriptEngine *engine)
@@ -1430,7 +1432,9 @@ QScriptValue QDeclarativeEnginePrivate::hsla(QScriptContext *ctxt, QScriptEngine
/*!
\qmlmethod rect Qt::rect(int x, int y, int width, int height)
-This function returns a Rect with the top-left corner at \c x, \c y and the specified \c width and \c height.
+Returns a \c rect with the top-left corner at \c x, \c y and the specified \c width and \c height.
+
+The returned object has \c x, \c y, \c width and \c height attributes with the given values.
*/
QScriptValue QDeclarativeEnginePrivate::rect(QScriptContext *ctxt, QScriptEngine *engine)
{
@@ -1450,7 +1454,7 @@ QScriptValue QDeclarativeEnginePrivate::rect(QScriptContext *ctxt, QScriptEngine
/*!
\qmlmethod point Qt::point(int x, int y)
-This function returns a Point with the specified \c x and \c y coordinates.
+Returns a Point with the specified \c x and \c y coordinates.
*/
QScriptValue QDeclarativeEnginePrivate::point(QScriptContext *ctxt, QScriptEngine *engine)
{
@@ -1463,7 +1467,7 @@ QScriptValue QDeclarativeEnginePrivate::point(QScriptContext *ctxt, QScriptEngin
/*!
\qmlmethod Qt::size(int width, int height)
-This function returns as Size with the specified \c width and \c height.
+Returns a Size with the specified \c width and \c height.
*/
QScriptValue QDeclarativeEnginePrivate::size(QScriptContext *ctxt, QScriptEngine *engine)
{
@@ -1476,7 +1480,7 @@ QScriptValue QDeclarativeEnginePrivate::size(QScriptContext *ctxt, QScriptEngine
/*!
\qmlmethod color Qt::lighter(color baseColor, real factor)
-This function returns a color lighter than \c baseColor by the \c factor provided.
+Returns a color lighter than \c baseColor by the \c factor provided.
If the factor is greater than 1.0, this functions returns a lighter color.
Setting factor to 1.5 returns a color that is 50% brighter. If the factor is less than 1.0,
@@ -1512,7 +1516,7 @@ QScriptValue QDeclarativeEnginePrivate::lighter(QScriptContext *ctxt, QScriptEng
/*!
\qmlmethod color Qt::darker(color baseColor, real factor)
-This function returns a color darker than \c baseColor by the \c factor provided.
+Returns a color darker than \c baseColor by the \c factor provided.
If the factor is greater than 1.0, this function returns a darker color.
Setting factor to 3.0 returns a color that has one-third the brightness.
@@ -1549,7 +1553,7 @@ QScriptValue QDeclarativeEnginePrivate::darker(QScriptContext *ctxt, QScriptEngi
/*!
\qmlmethod bool Qt::openUrlExternally(url target)
-This function attempts to open the specified \c target url in an external application, based on the user's desktop preferences. It will return true if it succeeds, and false otherwise.
+Attempts to open the specified \c target url in an external application, based on the user's desktop preferences. Returns true if it succeeds, and false otherwise.
*/
QScriptValue QDeclarativeEnginePrivate::desktopOpenUrl(QScriptContext *ctxt, QScriptEngine *e)
{
@@ -1564,7 +1568,7 @@ QScriptValue QDeclarativeEnginePrivate::desktopOpenUrl(QScriptContext *ctxt, QSc
/*!
\qmlmethod list<string> Qt::fontFamilies()
-This function returns a list of the font families available to the application.
+Returns a list of the font families available to the application.
*/
QScriptValue QDeclarativeEnginePrivate::fontFamilies(QScriptContext *ctxt, QScriptEngine *e)
@@ -1579,7 +1583,7 @@ QScriptValue QDeclarativeEnginePrivate::fontFamilies(QScriptContext *ctxt, QScri
/*!
\qmlmethod string Qt::md5(data)
-This function returns a hex string of the md5 hash of \c data.
+Returns a hex string of the md5 hash of \c data.
*/
QScriptValue QDeclarativeEnginePrivate::md5(QScriptContext *ctxt, QScriptEngine *)
{
diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h
index 804476c..3269e98 100644
--- a/src/declarative/qml/qdeclarativeengine_p.h
+++ b/src/declarative/qml/qdeclarativeengine_p.h
@@ -302,10 +302,11 @@ public:
static QScriptValue consoleLog(QScriptContext*, QScriptEngine*);
static QScriptValue quit(QScriptContext*, QScriptEngine*);
+#ifndef QT_NO_TEXTDATE
static QScriptValue formatDate(QScriptContext*, QScriptEngine*);
static QScriptValue formatTime(QScriptContext*, QScriptEngine*);
static QScriptValue formatDateTime(QScriptContext*, QScriptEngine*);
-
+#endif
static QScriptEngine *getScriptEngine(QDeclarativeEngine *e) { return &e->d_func()->scriptEngine; }
static QDeclarativeEngine *getEngine(QScriptEngine *e) { return static_cast<QDeclarativeScriptEngine*>(e)->p->q_func(); }
static QDeclarativeEnginePrivate *get(QDeclarativeEngine *e) { return e->d_func(); }
diff --git a/src/declarative/qml/qdeclarativeinfo.h b/src/declarative/qml/qdeclarativeinfo.h
index 2ac28f4..b41abd8 100644
--- a/src/declarative/qml/qdeclarativeinfo.h
+++ b/src/declarative/qml/qdeclarativeinfo.h
@@ -81,7 +81,9 @@ public:
inline QDeclarativeInfo &operator<<(const void * t) { QDebug::operator<<(t); return *this; }
inline QDeclarativeInfo &operator<<(QTextStreamFunction f) { QDebug::operator<<(f); return *this; }
inline QDeclarativeInfo &operator<<(QTextStreamManipulator m) { QDebug::operator<<(m); return *this; }
+#ifndef QT_NO_DEBUG_STREAM
inline QDeclarativeInfo &operator<<(const QUrl &t) { static_cast<QDebug &>(*this) << t; return *this; }
+#endif
private:
friend Q_DECLARATIVE_EXPORT QDeclarativeInfo qmlInfo(const QObject *me);
diff --git a/src/declarative/qml/qdeclarativeinstruction.cpp b/src/declarative/qml/qdeclarativeinstruction.cpp
index b86d082..0f7b09d 100644
--- a/src/declarative/qml/qdeclarativeinstruction.cpp
+++ b/src/declarative/qml/qdeclarativeinstruction.cpp
@@ -49,6 +49,10 @@ QT_BEGIN_NAMESPACE
void QDeclarativeCompiledData::dump(QDeclarativeInstruction *instr, int idx)
{
+#ifdef QT_NO_DEBUG_STREAM
+ Q_UNUSED(instr)
+ Q_UNUSED(idx)
+#else
QByteArray lineNumber = QByteArray::number(instr->line);
if (instr->line == (unsigned short)-1)
lineNumber = "NA";
@@ -217,6 +221,7 @@ void QDeclarativeCompiledData::dump(QDeclarativeInstruction *instr, int idx)
qWarning().nospace() << idx << "\t\t" << line << "\t" << "XXX UNKOWN INSTRUCTION" << "\t" << instr->type;
break;
}
+#endif // QT_NO_DEBUG_STREAM
}
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativestringconverters.cpp b/src/declarative/qml/qdeclarativestringconverters.cpp
index bbcc00b..8bd2cf1 100644
--- a/src/declarative/qml/qdeclarativestringconverters.cpp
+++ b/src/declarative/qml/qdeclarativestringconverters.cpp
@@ -106,12 +106,14 @@ QVariant QDeclarativeStringConverters::variantFromString(const QString &s, int p
return QVariant(uint(qRound(s.toDouble(ok))));
case QMetaType::QColor:
return QVariant::fromValue(colorFromString(s, ok));
+#ifndef QT_NO_TEXTDATE
case QMetaType::QDate:
return QVariant::fromValue(dateFromString(s, ok));
case QMetaType::QTime:
return QVariant::fromValue(timeFromString(s, ok));
case QMetaType::QDateTime:
return QVariant::fromValue(dateTimeFromString(s, ok));
+#endif // QT_NO_TEXTDATE
case QMetaType::QPointF:
return QVariant::fromValue(pointFFromString(s, ok));
case QMetaType::QPoint:
@@ -150,6 +152,7 @@ QColor QDeclarativeStringConverters::colorFromString(const QString &s, bool *ok)
}
}
+#ifndef QT_NO_TEXTDATE
QDate QDeclarativeStringConverters::dateFromString(const QString &s, bool *ok)
{
QDate d = QDate::fromString(s, Qt::ISODate);
@@ -170,6 +173,7 @@ QDateTime QDeclarativeStringConverters::dateTimeFromString(const QString &s, boo
if (ok) *ok = d.isValid();
return d;
}
+#endif // QT_NO_TEXTDATE
//expects input of "x,y"
QPointF QDeclarativeStringConverters::pointFFromString(const QString &s, bool *ok)
diff --git a/src/declarative/qml/qdeclarativestringconverters_p.h b/src/declarative/qml/qdeclarativestringconverters_p.h
index 97f72fc..842d1b3 100644
--- a/src/declarative/qml/qdeclarativestringconverters_p.h
+++ b/src/declarative/qml/qdeclarativestringconverters_p.h
@@ -73,9 +73,11 @@ namespace QDeclarativeStringConverters
QVariant Q_DECLARATIVE_EXPORT variantFromString(const QString &, int preferredType, bool *ok = 0);
QColor Q_DECLARATIVE_EXPORT colorFromString(const QString &, bool *ok = 0);
+#ifndef QT_NO_TEXTDATE
QDate Q_DECLARATIVE_EXPORT dateFromString(const QString &, bool *ok = 0);
QTime Q_DECLARATIVE_EXPORT timeFromString(const QString &, bool *ok = 0);
QDateTime Q_DECLARATIVE_EXPORT dateTimeFromString(const QString &, bool *ok = 0);
+#endif
QPointF Q_DECLARATIVE_EXPORT pointFFromString(const QString &, bool *ok = 0);
QSizeF Q_DECLARATIVE_EXPORT sizeFFromString(const QString &, bool *ok = 0);
QRectF Q_DECLARATIVE_EXPORT rectFFromString(const QString &, bool *ok = 0);
diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp
index 1550351..2ca030e 100644
--- a/src/declarative/qml/qdeclarativeworkerscript.cpp
+++ b/src/declarative/qml/qdeclarativeworkerscript.cpp
@@ -295,6 +295,7 @@ void QDeclarativeWorkerScriptEnginePrivate::processLoad(int id, const QUrl &url)
ctxt->pushScope(urlContext);
ctxt->pushScope(activation);
ctxt->setActivationObject(activation);
+ QDeclarativeScriptParser::extractPragmas(script);
workerEngine->baseUrl = url;
workerEngine->evaluate(script);
diff --git a/src/declarative/util/qdeclarativepropertychanges.cpp b/src/declarative/util/qdeclarativepropertychanges.cpp
index d99de7a..08f4750 100644
--- a/src/declarative/util/qdeclarativepropertychanges.cpp
+++ b/src/declarative/util/qdeclarativepropertychanges.cpp
@@ -62,7 +62,7 @@ QT_BEGIN_NAMESPACE
/*!
\qmlclass PropertyChanges QDeclarativePropertyChanges
\since 4.7
- \brief The PropertyChanges element describes new property values for a state.
+ \brief The PropertyChanges element describes new property bindings or values for a state.
PropertyChanges provides a state change that modifies the properties of an item.
@@ -89,6 +89,21 @@ QT_BEGIN_NAMESPACE
MouseArea { anchors.fill: parent; onClicked: myText.state = 'myState' }
}
\endqml
+
+ By default, PropertyChanges will establish new bindings where appropriate.
+ For example, the following creates a new binding for myItem's height property.
+
+ \qml
+ PropertyChanges {
+ target: myItem
+ height: parent.height
+ }
+ \endqml
+
+ If you don't want a binding to be established (and instead just want to assign
+ the value of the binding at the time the state is entered),
+ you should set the PropertyChange's \l{PropertyChanges::explicit}{explicit}
+ property to \c true.
State-specific script for signal handlers can also be specified:
diff --git a/src/declarative/util/qdeclarativestate.cpp b/src/declarative/util/qdeclarativestate.cpp
index b5f7900..dc2b2cc 100644
--- a/src/declarative/util/qdeclarativestate.cpp
+++ b/src/declarative/util/qdeclarativestate.cpp
@@ -486,6 +486,7 @@ void QDeclarativeState::apply(QDeclarativeStateGroup *group, QDeclarativeTransit
// All the local reverts now become part of the ongoing revertList
d->revertList << additionalReverts;
+#ifndef QT_NO_DEBUG_STREAM
// Output for debugging
if (stateChangeDebug()) {
foreach(const QDeclarativeAction &action, applyList) {
@@ -497,6 +498,7 @@ void QDeclarativeState::apply(QDeclarativeStateGroup *group, QDeclarativeTransit
<< "To:" << action.toValue;
}
}
+#endif
d->transitionManager.transition(applyList, trans);
}
diff --git a/src/declarative/util/qdeclarativestateoperations.cpp b/src/declarative/util/qdeclarativestateoperations.cpp
index 80ae5f5..99f163e 100644
--- a/src/declarative/util/qdeclarativestateoperations.cpp
+++ b/src/declarative/util/qdeclarativestateoperations.cpp
@@ -1128,8 +1128,8 @@ void QDeclarativeAnchorChanges::setObject(QDeclarativeItem *target)
\qml
AnchorChanges {
target: myItem
- left: undefined //remove myItem's left anchor
- right: otherItem.right
+ anchors.left: undefined //remove myItem's left anchor
+ anchors.right: otherItem.right
}
\endqml
*/
diff --git a/src/declarative/util/qdeclarativetransitionmanager.cpp b/src/declarative/util/qdeclarativetransitionmanager.cpp
index 368d484..9f198e4 100644
--- a/src/declarative/util/qdeclarativetransitionmanager.cpp
+++ b/src/declarative/util/qdeclarativetransitionmanager.cpp
@@ -233,6 +233,7 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
action.property.write(action.toValue);
}
}
+#ifndef QT_NO_DEBUG_STREAM
if (stateChangeDebug()) {
foreach(const QDeclarativeAction &action, applyList) {
if (action.event)
@@ -243,6 +244,7 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
<< "To:" << action.toValue;
}
}
+#endif
if (!transition)
d->applyBindings();
}
diff --git a/src/declarative/util/qdeclarativeview.cpp b/src/declarative/util/qdeclarativeview.cpp
index e68ef94..6059ad6 100644
--- a/src/declarative/util/qdeclarativeview.cpp
+++ b/src/declarative/util/qdeclarativeview.cpp
@@ -45,11 +45,11 @@
#include <qdeclarativeitem.h>
#include <qdeclarativeengine.h>
#include <qdeclarativecontext.h>
-#include <qdeclarativedebug_p.h>
-#include <qdeclarativedebugservice_p.h>
#include <qdeclarativeglobal_p.h>
#include <qdeclarativeguard_p.h>
+#include <private/qdeclarativedebugtrace_p.h>
+
#include <qscriptvalueiterator.h>
#include <qdebug.h>
#include <qtimer.h>
@@ -66,66 +66,64 @@
#include <QtCore/qabstractanimation.h>
#include <private/qgraphicsview_p.h>
#include <private/qdeclarativeitem_p.h>
+#include <private/qabstractanimation_p.h>
#include <private/qdeclarativeitemchangelistener_p.h>
QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(frameRateDebug, QML_SHOW_FRAMERATE)
-class QDeclarativeViewDebugServer;
-class FrameBreakAnimation : public QAbstractAnimation
+class QDeclarativeScene : public QGraphicsScene
{
public:
- FrameBreakAnimation(QDeclarativeViewDebugServer *s)
- : QAbstractAnimation((QObject*)s), server(s)
- {
- start();
- }
+ QDeclarativeScene();
- virtual int duration() const { return -1; }
- virtual void updateCurrentTime(int msecs);
+protected:
+ virtual void keyPressEvent(QKeyEvent *);
+ virtual void keyReleaseEvent(QKeyEvent *);
-private:
- QDeclarativeViewDebugServer *server;
+ virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *);
+ virtual void mousePressEvent(QGraphicsSceneMouseEvent *);
+ virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *);
};
-class QDeclarativeViewDebugServer : public QDeclarativeDebugService
+QDeclarativeScene::QDeclarativeScene()
{
-public:
- QDeclarativeViewDebugServer(QObject *parent = 0) : QDeclarativeDebugService(QLatin1String("CanvasFrameRate"), parent), breaks(0)
- {
- timer.start();
- new FrameBreakAnimation(this);
- }
+}
- void addTiming(int pe, int tbf)
- {
- if (!isEnabled())
- return;
-
- bool isFrameBreak = breaks > 1;
- breaks = 0;
- int e = timer.elapsed();
- QByteArray data;
- QDataStream ds(&data, QIODevice::WriteOnly);
- ds << (int)pe << (int)tbf << (int)e
- << (bool)isFrameBreak;
- sendMessage(data);
- }
+void QDeclarativeScene::keyPressEvent(QKeyEvent *e)
+{
+ QDeclarativeDebugTrace::addEvent(QDeclarativeDebugTrace::Key);
- void frameBreak() { ++breaks; }
+ QGraphicsScene::keyPressEvent(e);
+}
-private:
- QTime timer;
- int breaks;
-};
+void QDeclarativeScene::keyReleaseEvent(QKeyEvent *e)
+{
+ QDeclarativeDebugTrace::addEvent(QDeclarativeDebugTrace::Key);
-Q_GLOBAL_STATIC(QDeclarativeViewDebugServer, qfxViewDebugServer);
+ QGraphicsScene::keyReleaseEvent(e);
+}
-void FrameBreakAnimation::updateCurrentTime(int msecs)
+void QDeclarativeScene::mouseMoveEvent(QGraphicsSceneMouseEvent *e)
{
- Q_UNUSED(msecs);
- server->frameBreak();
+ QDeclarativeDebugTrace::addEvent(QDeclarativeDebugTrace::Mouse);
+
+ QGraphicsScene::mouseMoveEvent(e);
+}
+
+void QDeclarativeScene::mousePressEvent(QGraphicsSceneMouseEvent *e)
+{
+ QDeclarativeDebugTrace::addEvent(QDeclarativeDebugTrace::Mouse);
+
+ QGraphicsScene::mousePressEvent(e);
+}
+
+void QDeclarativeScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *e)
+{
+ QDeclarativeDebugTrace::addEvent(QDeclarativeDebugTrace::Mouse);
+
+ QGraphicsScene::mouseReleaseEvent(e);
}
class QDeclarativeViewPrivate : public QGraphicsViewPrivate, public QDeclarativeItemChangeListener
@@ -152,11 +150,11 @@ public:
QBasicTimer resizetimer;
QDeclarativeView::ResizeMode resizeMode;
- QTime frameTimer;
+ QElapsedTimer frameTimer;
void init();
- QGraphicsScene scene;
+ QDeclarativeScene scene;
};
void QDeclarativeViewPrivate::execute()
@@ -676,12 +674,18 @@ void QDeclarativeView::resizeEvent(QResizeEvent *e)
void QDeclarativeView::paintEvent(QPaintEvent *event)
{
Q_D(QDeclarativeView);
+
+ QDeclarativeDebugTrace::addEvent(QDeclarativeDebugTrace::FramePaint);
+ QDeclarativeDebugTrace::startRange(QDeclarativeDebugTrace::Painting);
+
int time = 0;
- if (frameRateDebug() || QDeclarativeViewDebugServer::isDebuggingEnabled())
+ if (frameRateDebug())
time = d->frameTimer.restart();
+
QGraphicsView::paintEvent(event);
- if (QDeclarativeViewDebugServer::isDebuggingEnabled())
- qfxViewDebugServer()->addTiming(d->frameTimer.elapsed(), time);
+
+ QDeclarativeDebugTrace::endRange(QDeclarativeDebugTrace::Painting);
+
if (frameRateDebug())
qDebug() << "paintEvent:" << d->frameTimer.elapsed() << "time since last frame:" << time;
}
diff --git a/src/declarative/util/qdeclarativexmllistmodel.cpp b/src/declarative/util/qdeclarativexmllistmodel.cpp
index d08e37b..4f9355b 100644
--- a/src/declarative/util/qdeclarativexmllistmodel.cpp
+++ b/src/declarative/util/qdeclarativexmllistmodel.cpp
@@ -80,7 +80,11 @@ typedef QPair<int, int> QDeclarativeXmlListRange;
/*!
\qmlproperty string XmlRole::name
- The name for the role. This name is used to access the model data for this role from Qml.
+
+ The name for the role. This name is used to access the model data for this role.
+
+ For example, the following model has a role named "title", which can be accessed
+ from the view's delegate:
\qml
XmlListModel {
@@ -91,19 +95,27 @@ typedef QPair<int, int> QDeclarativeXmlListRange;
ListView {
model: xmlModel
- Text { text: title }
+ delegate: Text { text: title }
}
\endqml
*/
/*!
\qmlproperty string XmlRole::query
- The relative XPath query for this role. The query should not start with a '/' (i.e. it must be
- relative).
+ The relative XPath expression query for this role. The query must be relative; it cannot start
+ with a '/'.
- \qml
- XmlRole { name: "title"; query: "title/string()" }
- \endqml
+ For example, if there is an XML document like this:
+
+ \quotefile doc/src/snippets/declarative/xmlrole.xml
+
+ Here are some valid XPath expressions for XmlRole queries on this document:
+
+ \snippet doc/src/snippets/declarative/xmlrole.qml 0
+ \dots 4
+ \snippet doc/src/snippets/declarative/xmlrole.qml 1
+
+ See the \l{http://www.w3.org/TR/xpath20/}{W3C XPath 2.0 specification} for more information.
*/
/*!
@@ -521,9 +533,12 @@ void QDeclarativeXmlListModelPrivate::clear_role(QDeclarativeListProperty<QDecla
\endqml
The \l {XmlListModel::query}{query} value of "/rss/channel/item" specifies that the XmlListModel should generate
- a model item for each \c <item> in the XML document. The XmlRole objects define the
+ a model item for each \c <item> in the XML document.
+
+ The XmlRole objects define the
model item attributes; here, each model item will have \c title and \c pubDate
attributes that match the \c title and \c pubDate values of its corresponding \c <item>.
+ (See \l XmlRole::query for more examples of valid XPath expressions for XmlRole.)
The model could be used in a ListView, like this:
@@ -559,8 +574,6 @@ void QDeclarativeXmlListModelPrivate::clear_role(QDeclarativeListProperty<QDecla
If multiple key roles are specified, the model only adds and reload items
with a combined value of all key roles that is not already present in
the model.
-
- \sa {declarative/xml/xmldata}{XML data example}
*/
QDeclarativeXmlListModel::QDeclarativeXmlListModel(QObject *parent)
diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp
index bf9f530..e6ea198 100644
--- a/src/gui/egl/qegl.cpp
+++ b/src/gui/egl/qegl.cpp
@@ -42,6 +42,7 @@
#include <QtGui/qpaintdevice.h>
#include <QtGui/qpixmap.h>
#include <QtGui/qwidget.h>
+#include <QtCore/qatomic.h>
#include <QtCore/qdebug.h>
#include "qegl_p.h"
@@ -50,6 +51,34 @@
QT_BEGIN_NAMESPACE
+
+/*
+ QEglContextTracker is used to track the EGL contexts that we
+ create internally in Qt, so that we can call eglTerminate() to
+ free additional EGL resources when the last context is destroyed.
+*/
+
+class QEglContextTracker
+{
+public:
+ static void ref() { contexts.ref(); }
+ static void deref() {
+ if (!contexts.deref()) {
+ eglTerminate(QEgl::display());
+ displayOpen = 0;
+ }
+ }
+ static void setDisplayOpened() { displayOpen = 1; }
+ static bool displayOpened() { return displayOpen; }
+
+private:
+ static QBasicAtomicInt contexts;
+ static QBasicAtomicInt displayOpen;
+};
+
+QBasicAtomicInt QEglContextTracker::contexts = Q_BASIC_ATOMIC_INITIALIZER(0);
+QBasicAtomicInt QEglContextTracker::displayOpen = Q_BASIC_ATOMIC_INITIALIZER(0);
+
// Current GL and VG contexts. These are used to determine if
// we can avoid an eglMakeCurrent() after a call to lazyDoneCurrent().
// If a background thread modifies the value, the worst that will
@@ -66,6 +95,7 @@ QEglContext::QEglContext()
, ownsContext(true)
, sharing(false)
{
+ QEglContextTracker::ref();
}
QEglContext::~QEglContext()
@@ -76,6 +106,7 @@ QEglContext::~QEglContext()
currentGLContext = 0;
if (currentVGContext == this)
currentVGContext = 0;
+ QEglContextTracker::deref();
}
bool QEglContext::isValid() const
@@ -505,11 +536,9 @@ static _eglDestroyImageKHR qt_eglDestroyImageKHR = 0;
EGLDisplay QEgl::display()
{
static EGLDisplay dpy = EGL_NO_DISPLAY;
- static bool openedDisplay = false;
-
- if (!openedDisplay) {
+ if (!QEglContextTracker::displayOpened()) {
dpy = eglGetDisplay(nativeDisplay());
- openedDisplay = true;
+ QEglContextTracker::setDisplayOpened();
if (dpy == EGL_NO_DISPLAY) {
qWarning("QEgl::display(): Falling back to EGL_DEFAULT_DISPLAY");
dpy = eglGetDisplay(EGLNativeDisplayType(EGL_DEFAULT_DISPLAY));
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index c4ee99a..b867345 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -1275,14 +1275,14 @@ void QGraphicsItemPrivate::childrenBoundingRectHelper(QTransform *x, QRectF *rec
QTransform matrix = childd->transformToParent();
if (x)
matrix *= *x;
- *rect |= matrix.mapRect(child->boundingRect());
+ *rect |= matrix.mapRect(child->d_ptr->effectiveBoundingRect());
if (!childd->children.isEmpty())
childd->childrenBoundingRectHelper(&matrix, rect);
} else {
if (x)
- *rect |= x->mapRect(child->boundingRect());
+ *rect |= x->mapRect(child->d_ptr->effectiveBoundingRect());
else
- *rect |= child->boundingRect();
+ *rect |= child->d_ptr->effectiveBoundingRect();
if (!childd->children.isEmpty())
childd->childrenBoundingRectHelper(x, rect);
}
@@ -5687,32 +5687,28 @@ void QGraphicsItem::scroll(qreal dx, qreal dy, const QRectF &rect)
return;
}
+ // Find pixmap in cache, then remove to avoid deep copy when modifying.s
QPixmap cachedPixmap;
if (!QPixmapCache::find(cache->key, &cachedPixmap)) {
update(rect);
return;
}
+ QPixmapCache::remove(cache->key);
+
+ QRect scrollRect = (rect.isNull() ? boundingRect() : rect).toAlignedRect();
+ if (!scrollRect.intersects(cache->boundingRect))
+ return; // Nothing to scroll.
QRegion exposed;
- const bool scrollEntirePixmap = rect.isNull();
- if (scrollEntirePixmap) {
- // Scroll entire pixmap.
- cachedPixmap.scroll(dx, dy, cachedPixmap.rect(), &exposed);
- } else {
- if (!rect.intersects(cache->boundingRect))
- return; // Nothing to scroll.
- // Scroll sub-rect of pixmap. The rect is in item coordinates
- // so we have to translate it to pixmap coordinates.
- QRect scrollRect = rect.toAlignedRect();
- cachedPixmap.scroll(dx, dy, scrollRect.translated(-cache->boundingRect.topLeft()), &exposed);
- }
+ cachedPixmap.scroll(dx, dy, scrollRect.translated(-cache->boundingRect.topLeft()), &exposed);
- QPixmapCache::replace(cache->key, cachedPixmap);
+ // Reinsert into cache.
+ cache->key = QPixmapCache::insert(cachedPixmap);
// Translate the existing expose.
for (int i = 0; i < cache->exposed.size(); ++i) {
QRectF &e = cache->exposed[i];
- if (!scrollEntirePixmap && !e.intersects(rect))
+ if (!rect.isNull() && !e.intersects(rect))
continue;
e.translate(dx, dy);
}
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index ae0abf9..22c3f92 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -4889,6 +4889,24 @@ void QGraphicsScenePrivate::markDirty(QGraphicsItem *item, const QRectF &rect, b
if (updateAll)
return;
+ if (removingItemFromScene && !ignoreOpacity && !item->d_ptr->ignoreOpacity) {
+ // If any of the item's ancestors ignore opacity, it means that the opacity
+ // was set to 0 (and the update request has not yet been processed). That
+ // also means that we have to ignore the opacity for the item itself; otherwise
+ // things like: parent->setOpacity(0); scene->removeItem(child) won't work.
+ // Note that we only do this when removing items from the scene. In all other
+ // cases the ignoreOpacity bit propagates properly in processDirtyItems, but
+ // since the item is removed immediately it won't be processed there.
+ QGraphicsItem *p = item->d_ptr->parent;
+ while (p) {
+ if (p->d_ptr->ignoreOpacity) {
+ item->d_ptr->ignoreOpacity = true;
+ break;
+ }
+ p = p->d_ptr->parent;
+ }
+ }
+
if (item->d_ptr->discardUpdateRequest(/*ignoreVisibleBit=*/force,
/*ignoreDirtyBit=*/removingItemFromScene || invalidateChildren,
/*ignoreOpacity=*/ignoreOpacity)) {
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 9dfcd2c..a83b528 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -53,7 +53,7 @@ static const int QGRAPHICSVIEW_PREALLOC_STYLE_OPTIONS = 503; // largest prime <
QGraphicsView visualizes the contents of a QGraphicsScene in a scrollable
viewport. To create a scene with geometrical items, see QGraphicsScene's
- documentation. QGraphicsView is part of \l{The Graphics View Framework}.
+ documentation. QGraphicsView is part of the \l{Graphics View Framework}.
To visualize a scene, you start by constructing a QGraphicsView object,
passing the address of the scene you want to visualize to QGraphicsView's
diff --git a/src/gui/gui.pro b/src/gui/gui.pro
index a6370b2..7f1cb78 100644
--- a/src/gui/gui.pro
+++ b/src/gui/gui.pro
@@ -3,6 +3,7 @@ QPRO_PWD = $$PWD
QT = core
DEFINES += QT_BUILD_GUI_LIB QT_NO_USING_NAMESPACE
win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x65000000
+irix-cc*:QMAKE_CXXFLAGS += -no_prelink -ptused
!win32:!embedded:!mac:!symbian:CONFIG += x11
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index 85be5b1..98f235e 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -4812,7 +4812,7 @@ bool QImageData::doImageIO(const QImage *image, QImageWriter *writer, int qualit
or as a BMP image if the stream's version is 1. Note that writing
the stream to a file will not produce a valid image file.
- \sa QImage::save(), {Format of the QDataStream Operators}
+ \sa QImage::save(), {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &s, const QImage &image)
@@ -4838,7 +4838,7 @@ QDataStream &operator<<(QDataStream &s, const QImage &image)
Reads an image from the given \a stream and stores it in the given
\a image.
- \sa QImage::load(), {Format of the QDataStream Operators}
+ \sa QImage::load(), {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &s, QImage &image)
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index 474cd2e..3013726 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -635,17 +635,21 @@ void QPixmap::resize_helper(const QSize &s)
if (size() == s)
return;
+ // QPixmap.data member may be QRuntimePixmapData so use pixmapData() function to get
+ // the actual underlaying runtime pixmap data.
+ QPixmapData *pd = pixmapData();
+
// Create new pixmap
- QPixmap pm(QSize(w, h), data ? data->type : QPixmapData::PixmapType);
+ QPixmap pm(QSize(w, h), pd ? pd->type : QPixmapData::PixmapType);
bool uninit = false;
#if defined(Q_WS_X11)
- QX11PixmapData *x11Data = data && data->classId() == QPixmapData::X11Class ? static_cast<QX11PixmapData*>(data.data()) : 0;
+ QX11PixmapData *x11Data = pd && pd->classId() == QPixmapData::X11Class ? static_cast<QX11PixmapData*>(pd) : 0;
if (x11Data) {
pm.x11SetScreen(x11Data->xinfo.screen());
uninit = x11Data->flags & QX11PixmapData::Uninitialized;
}
#elif defined(Q_WS_MAC)
- QMacPixmapData *macData = data && data->classId() == QPixmapData::MacClass ? static_cast<QMacPixmapData*>(data.data()) : 0;
+ QMacPixmapData *macData = pd && pd->classId() == QPixmapData::MacClass ? static_cast<QMacPixmapData*>(pd) : 0;
if (macData)
uninit = macData->uninit;
#endif
@@ -659,7 +663,7 @@ void QPixmap::resize_helper(const QSize &s)
#if defined(Q_WS_X11)
if (x11Data && x11Data->x11_mask) {
- QX11PixmapData *pmData = static_cast<QX11PixmapData*>(pm.data.data());
+ QX11PixmapData *pmData = static_cast<QX11PixmapData*>(pd);
pmData->x11_mask = (Qt::HANDLE)XCreatePixmap(X11->display,
RootWindow(x11Data->xinfo.display(),
x11Data->xinfo.screen()),
@@ -1163,8 +1167,9 @@ QPixmap QPixmap::grabWidget(QWidget * widget, const QRect &rect)
Qt::HANDLE QPixmap::handle() const
{
#if defined(Q_WS_X11)
- if (data && data->classId() == QPixmapData::X11Class)
- return static_cast<const QX11PixmapData*>(data.constData())->handle();
+ const QPixmapData *pd = pixmapData();
+ if (pd && pd->classId() == QPixmapData::X11Class)
+ return static_cast<const QX11PixmapData*>(pd)->handle();
#endif
return 0;
}
@@ -1281,7 +1286,7 @@ bool QPixmap::convertFromImage(const QImage &image, ColorMode mode)
image. Note that writing the stream to a file will not produce a
valid image file.
- \sa QPixmap::save(), {Format of the QDataStream Operators}
+ \sa QPixmap::save(), {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &stream, const QPixmap &pixmap)
@@ -1294,7 +1299,7 @@ QDataStream &operator<<(QDataStream &stream, const QPixmap &pixmap)
Reads an image from the given \a stream into the given \a pixmap.
- \sa QPixmap::load(), {Format of the QDataStream Operators}
+ \sa QPixmap::load(), {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &stream, QPixmap &pixmap)
@@ -1944,17 +1949,20 @@ void QPixmap::detach()
if (!data)
return;
- QPixmapData::ClassId id = data->classId();
+ // QPixmap.data member may be QRuntimePixmapData so use pixmapData() function to get
+ // the actual underlaying runtime pixmap data.
+ QPixmapData *pd = pixmapData();
+ QPixmapData::ClassId id = pd->classId();
if (id == QPixmapData::RasterClass) {
- QRasterPixmapData *rasterData = static_cast<QRasterPixmapData*>(data.data());
+ QRasterPixmapData *rasterData = static_cast<QRasterPixmapData*>(pd);
rasterData->image.detach();
}
if (data->is_cached && data->ref == 1)
- QImagePixmapCleanupHooks::executePixmapDataModificationHooks(data.data());
+ QImagePixmapCleanupHooks::executePixmapDataModificationHooks(pd);
#if defined(Q_WS_MAC)
- QMacPixmapData *macData = id == QPixmapData::MacClass ? static_cast<QMacPixmapData*>(data.data()) : 0;
+ QMacPixmapData *macData = id == QPixmapData::MacClass ? static_cast<QMacPixmapData*>(pd) : 0;
if (macData) {
if (macData->cg_mask) {
CGImageRelease(macData->cg_mask);
@@ -1969,8 +1977,8 @@ void QPixmap::detach()
++data->detach_no;
#if defined(Q_WS_X11)
- if (data->classId() == QPixmapData::X11Class) {
- QX11PixmapData *d = static_cast<QX11PixmapData*>(data.data());
+ if (pd->classId() == QPixmapData::X11Class) {
+ QX11PixmapData *d = static_cast<QX11PixmapData*>(pd);
d->flags &= ~QX11PixmapData::Uninitialized;
// reset the cache data
@@ -2060,9 +2068,15 @@ QPixmap QPixmap::fromImage(const QImage &image, Qt::ImageConversionFlags flags)
*/
QPixmapData* QPixmap::pixmapData() const
{
- return data.data();
+ if (data) {
+ QPixmapData* pm = data.data();
+ return pm->runtimeData() ? pm->runtimeData() : pm;
+ }
+
+ return 0;
}
+
/*!
\enum QPixmap::HBitmapFormat
diff --git a/src/gui/image/qpixmap.h b/src/gui/image/qpixmap.h
index 180af3b..82546da 100644
--- a/src/gui/image/qpixmap.h
+++ b/src/gui/image/qpixmap.h
@@ -271,9 +271,7 @@ private:
friend class QX11PaintEngine;
friend class QCoreGraphicsPaintEngine;
friend class QWidgetPrivate;
- friend class QRasterPaintEngine;
friend class QRasterBuffer;
- friend class QPixmapCacheEntry;
#if !defined(QT_NO_DATASTREAM)
friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPixmap &);
#endif
diff --git a/src/gui/image/qpixmapcache_p.h b/src/gui/image/qpixmapcache_p.h
index 825f272..6db3b20 100644
--- a/src/gui/image/qpixmapcache_p.h
+++ b/src/gui/image/qpixmapcache_p.h
@@ -81,8 +81,9 @@ class QPixmapCacheEntry : public QPixmap
public:
QPixmapCacheEntry(const QPixmapCache::Key &key, const QPixmap &pix) : QPixmap(pix), key(key)
{
- if (data && data->classId() == QPixmapData::RasterClass) {
- QRasterPixmapData *d = static_cast<QRasterPixmapData*>(data.data());
+ QPixmapData *pd = pixmapData();
+ if (pd && pd->classId() == QPixmapData::RasterClass) {
+ QRasterPixmapData *d = static_cast<QRasterPixmapData*>(pd);
if (!d->image.isNull() && d->image.d->paintEngine
&& !d->image.d->paintEngine->isActive())
{
diff --git a/src/gui/image/qpixmapdata_p.h b/src/gui/image/qpixmapdata_p.h
index 827fa18..60ed26a 100644
--- a/src/gui/image/qpixmapdata_p.h
+++ b/src/gui/image/qpixmapdata_p.h
@@ -73,7 +73,7 @@ public:
};
#endif
enum ClassId { RasterClass, X11Class, MacClass, DirectFBClass,
- OpenGLClass, OpenVGClass, CustomClass = 1024 };
+ OpenGLClass, OpenVGClass, RuntimeClass, CustomClass = 1024 };
QPixmapData(PixelType pixelType, int classId);
virtual ~QPixmapData();
@@ -133,7 +133,10 @@ public:
static QPixmapData *create(int w, int h, PixelType type);
+ virtual QPixmapData *runtimeData() const { return 0; }
+
protected:
+
void setSerialNumber(int serNo);
int w;
int h;
diff --git a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
index d081cfd..4cdc4ad 100644
--- a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
+++ b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
@@ -44,6 +44,9 @@
#include "qcoefepinputcontext_p.h"
#include <qapplication.h>
#include <qtextformat.h>
+#include <qgraphicsview.h>
+#include <qgraphicsscene.h>
+#include <qgraphicswidget.h>
#include <private/qcore_symbian_p.h>
#include <fepitfr.h>
@@ -320,12 +323,14 @@ TCoeInputCapabilities QCoeFepInputContext::inputCapabilities()
return TCoeInputCapabilities(m_textCapabilities, this, 0);
}
-static QTextCharFormat qt_TCharFormat2QTextCharFormat(const TCharFormat &cFormat)
+static QTextCharFormat qt_TCharFormat2QTextCharFormat(const TCharFormat &cFormat, bool validStyleColor)
{
QTextCharFormat qFormat;
- QBrush foreground(QColor(cFormat.iFontPresentation.iTextColor.Internal()));
- qFormat.setForeground(foreground);
+ if (validStyleColor) {
+ QBrush foreground(QColor(cFormat.iFontPresentation.iTextColor.Internal()));
+ qFormat.setForeground(foreground);
+ }
qFormat.setFontStrikeOut(cFormat.iFontPresentation.iStrikethrough == EStrikethroughOn);
qFormat.setFontUnderline(cFormat.iFontPresentation.iUnderline == EUnderlineOn);
@@ -484,10 +489,30 @@ void QCoeFepInputContext::applyHints(Qt::InputMethodHints hints)
void QCoeFepInputContext::applyFormat(QList<QInputMethodEvent::Attribute> *attributes)
{
TCharFormat cFormat;
- const QColor styleTextColor = focusWidget() ? focusWidget()->palette().text().color() :
- QApplication::palette("QLineEdit").text().color();
- const TLogicalRgb fontColor(TRgb(styleTextColor.red(), styleTextColor.green(), styleTextColor.blue(), styleTextColor.alpha()));
- cFormat.iFontPresentation.iTextColor = fontColor;
+ QColor styleTextColor;
+ if (QWidget *focused = focusWidget()) {
+ QGraphicsView *gv = qobject_cast<QGraphicsView*>(focused);
+ if (!gv) // could be either the QGV or its viewport that has focus
+ gv = qobject_cast<QGraphicsView*>(focused->parentWidget());
+ if (gv) {
+ if (QGraphicsScene *scene = gv->scene()) {
+ if (QGraphicsItem *focusItem = scene->focusItem()) {
+ if (focusItem->isWidget()) {
+ styleTextColor = static_cast<QGraphicsWidget*>(focusItem)->palette().text().color();
+ }
+ }
+ }
+ } else {
+ styleTextColor = focused->palette().text().color();
+ }
+ } else {
+ styleTextColor = QApplication::palette("QLineEdit").text().color();
+ }
+
+ if (styleTextColor.isValid()) {
+ const TLogicalRgb fontColor(TRgb(styleTextColor.red(), styleTextColor.green(), styleTextColor.blue(), styleTextColor.alpha()));
+ cFormat.iFontPresentation.iTextColor = fontColor;
+ }
TInt numChars = 0;
TInt charPos = 0;
@@ -501,7 +526,7 @@ void QCoeFepInputContext::applyFormat(QList<QInputMethodEvent::Attribute> *attri
attributes->append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat,
charPos,
numChars,
- QVariant(qt_TCharFormat2QTextCharFormat(cFormat))));
+ QVariant(qt_TCharFormat2QTextCharFormat(cFormat, styleTextColor.isValid()))));
charPos += numChars;
if (charPos >= m_preeditString.size()) {
break;
diff --git a/src/gui/itemviews/qitemdelegate.cpp b/src/gui/itemviews/qitemdelegate.cpp
index d5f6fd2..9bbfc23 100644
--- a/src/gui/itemviews/qitemdelegate.cpp
+++ b/src/gui/itemviews/qitemdelegate.cpp
@@ -667,7 +667,6 @@ void QItemDelegate::drawDisplay(QPainter *painter, const QStyleOptionViewItem &o
{
Q_D(const QItemDelegate);
- QPen pen = painter->pen();
QPalette::ColorGroup cg = option.state & QStyle::State_Enabled
? QPalette::Normal : QPalette::Disabled;
if (cg == QPalette::Normal && !(option.state & QStyle::State_Active))
diff --git a/src/gui/itemviews/qlistwidget.cpp b/src/gui/itemviews/qlistwidget.cpp
index 125f0c4..da1d5db 100644
--- a/src/gui/itemviews/qlistwidget.cpp
+++ b/src/gui/itemviews/qlistwidget.cpp
@@ -791,7 +791,7 @@ QListWidgetItem &QListWidgetItem::operator=(const QListWidgetItem &other)
This operator uses QListWidgetItem::write().
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &out, const QListWidgetItem &item)
{
@@ -806,7 +806,7 @@ QDataStream &operator<<(QDataStream &out, const QListWidgetItem &item)
This operator uses QListWidgetItem::read().
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &in, QListWidgetItem &item)
{
diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp
index b12cd45..f9b6b94 100644
--- a/src/gui/itemviews/qsortfilterproxymodel.cpp
+++ b/src/gui/itemviews/qsortfilterproxymodel.cpp
@@ -2392,7 +2392,7 @@ bool QSortFilterProxyModel::lessThan(const QModelIndex &left, const QModelIndex
QVariant r = (right.model() ? right.model()->data(right, d->sort_role) : QVariant());
switch (l.userType()) {
case QVariant::Invalid:
- return (r.type() == QVariant::Invalid);
+ return (r.type() != QVariant::Invalid);
case QVariant::Int:
return l.toInt() < r.toInt();
case QVariant::UInt:
diff --git a/src/gui/itemviews/qstandarditemmodel.cpp b/src/gui/itemviews/qstandarditemmodel.cpp
index 9d52c78..767b5a9 100644
--- a/src/gui/itemviews/qstandarditemmodel.cpp
+++ b/src/gui/itemviews/qstandarditemmodel.cpp
@@ -1921,7 +1921,7 @@ void QStandardItem::write(QDataStream &out) const
This operator uses QStandardItem::read().
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &in, QStandardItem &item)
{
@@ -1937,7 +1937,7 @@ QDataStream &operator>>(QDataStream &in, QStandardItem &item)
This operator uses QStandardItem::write().
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &out, const QStandardItem &item)
{
diff --git a/src/gui/itemviews/qtablewidget.cpp b/src/gui/itemviews/qtablewidget.cpp
index f653a41..5bb242e 100644
--- a/src/gui/itemviews/qtablewidget.cpp
+++ b/src/gui/itemviews/qtablewidget.cpp
@@ -1428,7 +1428,7 @@ void QTableWidgetItem::write(QDataStream &out) const
This operator uses QTableWidgetItem::read().
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &in, QTableWidgetItem &item)
{
@@ -1443,7 +1443,7 @@ QDataStream &operator>>(QDataStream &in, QTableWidgetItem &item)
This operator uses QTableWidgetItem::write().
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &out, const QTableWidgetItem &item)
{
diff --git a/src/gui/itemviews/qtreewidget.cpp b/src/gui/itemviews/qtreewidget.cpp
index 4c80325..0e06f34 100644
--- a/src/gui/itemviews/qtreewidget.cpp
+++ b/src/gui/itemviews/qtreewidget.cpp
@@ -2199,7 +2199,7 @@ void QTreeWidgetItem::executePendingSort() const
This operator uses QTreeWidgetItem::write().
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &out, const QTreeWidgetItem &item)
{
@@ -2214,7 +2214,7 @@ QDataStream &operator<<(QDataStream &out, const QTreeWidgetItem &item)
This operator uses QTreeWidgetItem::read().
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &in, QTreeWidgetItem &item)
{
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp
index 920000e..6caa7ee 100644
--- a/src/gui/kernel/qapplication.cpp
+++ b/src/gui/kernel/qapplication.cpp
@@ -70,6 +70,10 @@
#include "qmessagebox.h"
#include <QtGui/qgraphicsproxywidget.h>
+#ifdef QT_GRAPHICSSYSTEM_RUNTIME
+#include "private/qgraphicssystem_runtime_p.h"
+#endif
+
#include "qinputcontext.h"
#include "qkeymapper_p.h"
@@ -440,6 +444,7 @@ QPalette *QApplicationPrivate::set_pal = 0; // default palette set by pro
QGraphicsSystem *QApplicationPrivate::graphics_system = 0; // default graphics system
QString QApplicationPrivate::graphics_system_name; // graphics system id - for delayed initialization
+bool QApplicationPrivate::runtime_graphics_system = false;
Q_GLOBAL_STATIC(QMutex, applicationFontMutex)
QFont *QApplicationPrivate::app_font = 0; // default application font
@@ -664,7 +669,8 @@ void QApplicationPrivate::process_cmdline()
\o -geometry \e geometry, sets the client geometry of the first window
that is shown.
\o -fn or \c -font \e font, defines the application font. The font
- should be specified using an X logical font description.
+ should be specified using an X logical font description. Note that
+ this option is ignored when Qt is built with fontconfig support enabled.
\o -bg or \c -background \e color, sets the default background color
and an application palette (light and dark shades are calculated).
\o -fg or \c -foreground \e color, sets the default foreground color.
@@ -772,6 +778,9 @@ void QApplicationPrivate::construct(
qt_is_gui_used = (qt_appType != QApplication::Tty);
process_cmdline();
+ // the environment variable has the lowest precedence of runtime graphicssystem switches
+ if (graphics_system_name.isEmpty())
+ graphics_system_name = QString::fromLocal8Bit(qgetenv("QT_GRAPHICSSYSTEM"));
// Must be called before initialize()
qt_init(this, qt_appType
#ifdef Q_WS_X11
@@ -1552,10 +1561,18 @@ QStyle* QApplication::setStyle(const QString& style)
on-screen widgets and QPixmaps. The available systems are \c{"native"},
\c{"raster"} and \c{"opengl"}.
- This function call overrides both the application commandline
- \c{-graphicssystem} switch and the configure \c{-graphicssystem} switch.
+ There are several ways to set the graphics backend, in order of decreasing
+ precedence:
+ \list
+ \o the application commandline \c{-graphicssystem} switch
+ \o QApplication::setGraphicsSystem()
+ \o the QT_GRAPHICSSYSTEM environment variable
+ \o the Qt configure \c{-graphicssystem} switch
+ \endlist
+ If the highest precedence switch sets an invalid name, the error will be
+ ignored and the default backend will be used.
- \warning This function must be called before the QApplication constructor
+ \warning This function is only effective before the QApplication constructor
is called.
\note The \c{"opengl"} option is currently experimental.
@@ -1563,7 +1580,14 @@ QStyle* QApplication::setStyle(const QString& style)
void QApplication::setGraphicsSystem(const QString &system)
{
- QApplicationPrivate::graphics_system_name = system;
+#ifdef QT_GRAPHICSSYSTEM_RUNTIME
+ if (QApplicationPrivate::graphics_system_name == QLatin1String("runtime")) {
+ QRuntimeGraphicsSystem *r =
+ static_cast<QRuntimeGraphicsSystem *>(QApplicationPrivate::graphics_system);
+ r->setGraphicsSystem(system);
+ } else
+#endif
+ QApplicationPrivate::graphics_system_name = system;
}
/*!
@@ -2216,15 +2240,17 @@ void QApplication::closeAllWindows()
{
bool did_close = true;
QWidget *w;
- while((w = activeModalWidget()) && did_close) {
- if(!w->isVisible())
+ while ((w = activeModalWidget()) && did_close) {
+ if (!w->isVisible() || w->data->is_closing)
break;
did_close = w->close();
}
QWidgetList list = QApplication::topLevelWidgets();
for (int i = 0; did_close && i < list.size(); ++i) {
w = list.at(i);
- if (w->isVisible() && w->windowType() != Qt::Desktop) {
+ if (w->isVisible()
+ && w->windowType() != Qt::Desktop
+ && !w->data->is_closing) {
did_close = w->close();
list = QApplication::topLevelWidgets();
i = -1;
@@ -5261,18 +5287,20 @@ bool QApplication::keypadNavigationEnabled()
This function replaces the QInputContext instance used by the application
with \a inputContext.
+ Qt takes ownership of the given \a inputContext.
+
\sa inputContext()
*/
void QApplication::setInputContext(QInputContext *inputContext)
{
- Q_D(QApplication);
- Q_UNUSED(d);// only static members being used.
+ if (inputContext == QApplicationPrivate::inputContext)
+ return;
if (!inputContext) {
qWarning("QApplication::setInputContext: called with 0 input context");
return;
}
- delete d->inputContext;
- d->inputContext = inputContext;
+ delete QApplicationPrivate::inputContext;
+ QApplicationPrivate::inputContext = inputContext;
}
/*!
diff --git a/src/gui/kernel/qapplication_p.h b/src/gui/kernel/qapplication_p.h
index 25dea1f..9a5714b 100644
--- a/src/gui/kernel/qapplication_p.h
+++ b/src/gui/kernel/qapplication_p.h
@@ -412,6 +412,7 @@ public:
static QPalette *set_pal;
static QGraphicsSystem *graphics_system;
static QString graphics_system_name;
+ static bool runtime_graphics_system;
private:
static QFont *app_font; // private for a reason! Always use QApplication::font() instead!
@@ -579,7 +580,8 @@ public:
void _q_readRX71MultiTouchEvents();
#endif
-#if defined(Q_WS_S60)
+#if defined(Q_OS_SYMBIAN)
+ int pressureSupported;
int maxTouchPressure;
QList<QTouchEvent::TouchPoint> appAllTouchPoints;
#endif
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 0058ff5..82c3545 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -62,6 +62,9 @@
#include "qpaintengine.h"
#include "private/qmenubar_p.h"
#include "private/qsoftkeymanager_p.h"
+#ifdef QT_GRAPHICSSYSTEM_RUNTIME
+#include "private/qgraphicssystem_runtime_p.h"
+#endif
#include "apgwgnam.h" // For CApaWindowGroupName
#include <mdaaudiotoneplayer.h> // For CMdaAudioToneUtility
@@ -83,6 +86,10 @@
QT_BEGIN_NAMESPACE
+// Goom Events through Window Server
+static const int KGoomMemoryLowEvent = 0x10282DBF;
+static const int KGoomMemoryGoodEvent = 0x20026790;
+
#if defined(QT_DEBUG)
static bool appNoGrab = false; // Grabbing enabled
#endif
@@ -408,25 +415,44 @@ void QSymbianControl::HandleLongTapEventL( const TPoint& aPenEventLocation, cons
void QSymbianControl::translateAdvancedPointerEvent(const TAdvancedPointerEvent *event)
{
QApplicationPrivate *d = QApplicationPrivate::instance();
+ QPointF screenPos = qwidget->mapToGlobal(QPoint(event->iPosition.iX, event->iPosition.iY));
+ qreal pressure;
+ if(d->pressureSupported
+ && event->Pressure() > 0) //workaround for misconfigured HAL
+ pressure = event->Pressure() / qreal(d->maxTouchPressure);
+ else
+ pressure = qreal(1.0);
+ processTouchEvent(event->PointerNumber(), event->iType, screenPos, pressure);
+}
+#endif
+void QSymbianControl::processTouchEvent(int pointerNumber, TPointerEvent::TType type, QPointF screenPos, qreal pressure)
+{
QRect screenGeometry = qApp->desktop()->screenGeometry(qwidget);
- while (d->appAllTouchPoints.count() <= event->PointerNumber())
- d->appAllTouchPoints.append(QTouchEvent::TouchPoint(d->appAllTouchPoints.count()));
+ QApplicationPrivate *d = QApplicationPrivate::instance();
+
+ QList<QTouchEvent::TouchPoint> points = d->appAllTouchPoints;
+ while (points.count() <= pointerNumber)
+ points.append(QTouchEvent::TouchPoint(points.count()));
Qt::TouchPointStates allStates = 0;
- for (int i = 0; i < d->appAllTouchPoints.count(); ++i) {
- QTouchEvent::TouchPoint &touchPoint = d->appAllTouchPoints[i];
+ for (int i = 0; i < points.count(); ++i) {
+ QTouchEvent::TouchPoint &touchPoint = points[i];
- if (touchPoint.id() == event->PointerNumber()) {
+ if (touchPoint.id() == pointerNumber) {
Qt::TouchPointStates state;
- switch (event->iType) {
+ switch (type) {
case TPointerEvent::EButton1Down:
+#ifdef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER
case TPointerEvent::EEnterHighPressure:
+#endif
state = Qt::TouchPointPressed;
break;
case TPointerEvent::EButton1Up:
+#ifdef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER
case TPointerEvent::EExitCloseProximity:
+#endif
state = Qt::TouchPointReleased;
break;
case TPointerEvent::EDrag:
@@ -437,16 +463,15 @@ void QSymbianControl::translateAdvancedPointerEvent(const TAdvancedPointerEvent
state = Qt::TouchPointStationary;
break;
}
- if (event->PointerNumber() == 0)
+ if (pointerNumber == 0)
state |= Qt::TouchPointPrimary;
touchPoint.setState(state);
- QPointF screenPos = qwidget->mapToGlobal(QPoint(event->iPosition.iX, event->iPosition.iY));
touchPoint.setScreenPos(screenPos);
touchPoint.setNormalizedPos(QPointF(screenPos.x() / screenGeometry.width(),
screenPos.y() / screenGeometry.height()));
- touchPoint.setPressure(event->Pressure() / qreal(d->maxTouchPressure));
+ touchPoint.setPressure(pressure);
} else if (touchPoint.state() != Qt::TouchPointReleased) {
// all other active touch points should be marked as stationary
touchPoint.setState(Qt::TouchPointStationary);
@@ -458,13 +483,14 @@ void QSymbianControl::translateAdvancedPointerEvent(const TAdvancedPointerEvent
if ((allStates & Qt::TouchPointStateMask) == Qt::TouchPointReleased) {
// all touch points released
d->appAllTouchPoints.clear();
+ } else {
+ d->appAllTouchPoints = points;
}
QApplicationPrivate::translateRawTouchEvent(qwidget,
QTouchEvent::TouchScreen,
- d->appAllTouchPoints);
+ points);
}
-#endif
void QSymbianControl::HandlePointerEventL(const TPointerEvent& pEvent)
{
@@ -538,6 +564,13 @@ void QSymbianControl::HandlePointerEvent(const TPointerEvent& pEvent)
qt_symbian_move_cursor_sprite();
#endif
+//Generate single touch event for S60 5.0 (has touchscreen, does not have advanced pointers)
+#ifndef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER
+ if (S60->hasTouchscreen) {
+ processTouchEvent(0, pEvent.iType, QPointF(globalPos), 1.0);
+ }
+#endif
+
sendMouseEvent(receiver, type, globalPos, button, modifiers);
}
@@ -922,7 +955,16 @@ void QSymbianControl::Draw(const TRect& controlRect) const
const TRect backingStoreRect(TPoint(backingStoreBase.x(), backingStoreBase.y()), controlRect.Size());
if (engine->type() == QPaintEngine::Raster) {
- QS60WindowSurface *s60Surface = static_cast<QS60WindowSurface *>(qwidget->windowSurface());
+ QS60WindowSurface *s60Surface;
+#ifdef QT_GRAPHICSSYSTEM_RUNTIME
+ if (QApplicationPrivate::runtime_graphics_system) {
+ QRuntimeWindowSurface *rtSurface =
+ static_cast<QRuntimeWindowSurface*>(qwidget->windowSurface());
+ s60Surface = static_cast<QS60WindowSurface *>(rtSurface->m_windowSurface);
+ } else
+#endif
+ s60Surface = static_cast<QS60WindowSurface *>(qwidget->windowSurface());
+
CFbsBitmap *bitmap = s60Surface->symbianBitmap();
CWindowGc &gc = SystemGc();
@@ -1805,6 +1847,53 @@ int QApplicationPrivate::symbianProcessWsEvent(const QSymbianEvent *symbianEvent
}
#endif
break;
+ case KGoomMemoryLowEvent:
+#ifdef QT_DEBUG
+ qDebug() << "QApplicationPrivate::symbianProcessWsEvent - KGoomMemoryLowEvent";
+#endif
+ if (callSymbianEventFilters(symbianEvent))
+ return 1;
+#ifdef QT_GRAPHICSSYSTEM_RUNTIME
+ if(QApplicationPrivate::runtime_graphics_system) {
+ bool switchToSwRendering(false);
+
+ foreach (QWidget *w, QApplication::topLevelWidgets()) {
+ if(w->d_func()->topData()->backingStore) {
+ switchToSwRendering = true;
+ break;
+ }
+ }
+
+ if (switchToSwRendering) {
+ QRuntimeGraphicsSystem *gs =
+ static_cast<QRuntimeGraphicsSystem*>(QApplicationPrivate::graphics_system);
+
+ uint memoryUsage = gs->memoryUsage();
+ uint memoryForFullscreen = ( S60->screenDepth / 8 )
+ * S60->screenWidthInPixels
+ * S60->screenHeightInPixels;
+
+ S60->memoryLimitForHwRendering = memoryUsage - memoryForFullscreen;
+ gs->setGraphicsSystem(QLatin1String("raster"));
+ }
+ }
+#endif
+ break;
+ case KGoomMemoryGoodEvent:
+#ifdef QT_DEBUG
+ qDebug() << "QApplicationPrivate::symbianProcessWsEvent - KGoomMemoryGoodEvent";
+#endif
+ if (callSymbianEventFilters(symbianEvent))
+ return 1;
+#ifdef QT_GRAPHICSSYSTEM_RUNTIME
+ if(QApplicationPrivate::runtime_graphics_system) {
+ QRuntimeGraphicsSystem *gs =
+ static_cast<QRuntimeGraphicsSystem*>(QApplicationPrivate::graphics_system);
+ gs->setGraphicsSystem(QLatin1String("openvg"), S60->memoryLimitForHwRendering);
+ S60->memoryLimitForHwRendering = 0;
+ }
+#endif
+ break;
default:
break;
}
@@ -1983,8 +2072,13 @@ TUint QApplicationPrivate::resolveS60ScanCode(TInt scanCode, TUint keysym)
void QApplicationPrivate::initializeMultitouch_sys()
{
#ifdef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER
+ if (HAL::Get(HALData::EPointer3DPressureSupported, pressureSupported) != KErrNone)
+ pressureSupported = 0;
if (HAL::Get(HALData::EPointer3DMaxPressure, maxTouchPressure) != KErrNone)
maxTouchPressure = KMaxTInt;
+#else
+ pressureSupported = 0;
+ maxTouchPressure = KMaxTInt;
#endif
}
diff --git a/src/gui/kernel/qdnd_x11.cpp b/src/gui/kernel/qdnd_x11.cpp
index 2b12317..92dd0a1 100644
--- a/src/gui/kernel/qdnd_x11.cpp
+++ b/src/gui/kernel/qdnd_x11.cpp
@@ -64,6 +64,7 @@
#include "qtextcodec.h"
#include "qdnd_p.h"
+#include "qapplication_p.h"
#include "qt_x11_p.h"
#include "qx11info_x11.h"
@@ -1111,7 +1112,20 @@ void qt_xdnd_send_leave()
waiting_for_status = false;
}
-
+// TODO: remove and use QApplication::currentKeyboardModifiers() in Qt 4.8.
+static Qt::KeyboardModifiers currentKeyboardModifiers()
+{
+ Window root;
+ Window child;
+ int root_x, root_y, win_x, win_y;
+ uint keybstate;
+ for (int i = 0; i < ScreenCount(X11->display); ++i) {
+ if (XQueryPointer(X11->display, QX11Info::appRootWindow(i), &root, &child,
+ &root_x, &root_y, &win_x, &win_y, &keybstate))
+ return X11->translateModifiers(keybstate & 0x00ff);
+ }
+ return 0;
+}
void QX11Data::xdndHandleDrop(QWidget *, const XEvent * xe, bool passive)
{
@@ -1159,6 +1173,11 @@ void QX11Data::xdndHandleDrop(QWidget *, const XEvent * xe, bool passive)
if (!dropData)
dropData = (manager->object) ? manager->dragPrivate()->data : manager->dropData;
+ // Drop coming from another app? Update keyboard modifiers.
+ if (!qt_xdnd_dragging) {
+ QApplicationPrivate::modifier_buttons = currentKeyboardModifiers();
+ }
+
QDropEvent de(qt_xdnd_current_position, possible_actions, dropData,
QApplication::mouseButtons(), QApplication::keyboardModifiers());
QApplication::sendEvent(qt_xdnd_current_widget, &de);
diff --git a/src/gui/kernel/qdrag.cpp b/src/gui/kernel/qdrag.cpp
index b57615c..77f8fc0 100644
--- a/src/gui/kernel/qdrag.cpp
+++ b/src/gui/kernel/qdrag.cpp
@@ -253,7 +253,9 @@ Qt::DropAction QDrag::exec(Qt::DropActions supportedActions)
can take some time, but this function does not block the event
loop. Other events are still delivered to the application while
the operation is performed. On Windows, the Qt event loop is
- blocked while during the operation.
+ blocked during the operation. However, QDrag::exec() on
+ Windows causes processEvents() to be called frequently to keep the GUI responsive.
+ If any loops or operations are called while a drag operation is active, it will block the drag operation.
*/
Qt::DropAction QDrag::exec(Qt::DropActions supportedActions, Qt::DropAction defaultDropAction)
diff --git a/src/gui/kernel/qt_cocoa_helpers_mac_p.h b/src/gui/kernel/qt_cocoa_helpers_mac_p.h
index 6b005ca..57d2c90 100644
--- a/src/gui/kernel/qt_cocoa_helpers_mac_p.h
+++ b/src/gui/kernel/qt_cocoa_helpers_mac_p.h
@@ -73,6 +73,9 @@
**
****************************************************************************/
+#ifndef QT_COCOA_HELPERS_MAC_P_H
+#define QT_COCOA_HELPERS_MAC_P_H
+
//
// W A R N I N G
// -------------
@@ -224,3 +227,5 @@ void qt_cocoaPostMessage(id target, SEL selector, int argCount=0, id arg1=0, id
void qt_mac_post_retranslateAppMenu();
QT_END_NAMESPACE
+
+#endif // QT_COCOA_HELPERS_MAC_P_H
diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h
index f560458..fe3fa57 100644
--- a/src/gui/kernel/qt_s60_p.h
+++ b/src/gui/kernel/qt_s60_p.h
@@ -129,6 +129,7 @@ public:
int supportsPremultipliedAlpha : 1;
int avkonComponentsSupportTransparency : 1;
int menuBeingConstructed : 1;
+ int memoryLimitForHwRendering;
QApplication::QS60MainApplicationFactory s60ApplicationFactory; // typedef'ed pointer type
static inline void updateScreenSize();
static inline RWsSession& wsSession();
@@ -216,6 +217,7 @@ private:
const QPoint &globalPos,
Qt::MouseButton button,
Qt::KeyboardModifiers modifiers);
+ void processTouchEvent(int pointerNumber, TPointerEvent::TType type, QPointF screenPos, qreal pressure);
void HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation );
#ifdef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER
void translateAdvancedPointerEvent(const TAdvancedPointerEvent *event);
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index 6d48e0e..a891be0 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -248,9 +248,14 @@ QWidgetPrivate::~QWidgetPrivate()
QWindowSurface *QWidgetPrivate::createDefaultWindowSurface()
{
Q_Q(QWidget);
+
+ QWindowSurface *surface;
if (QApplicationPrivate::graphicsSystem())
- return QApplicationPrivate::graphicsSystem()->createWindowSurface(q);
- return createDefaultWindowSurface_sys();
+ surface = QApplicationPrivate::graphicsSystem()->createWindowSurface(q);
+ else
+ surface = createDefaultWindowSurface_sys();
+
+ return surface;
}
/*!
@@ -312,6 +317,8 @@ QInputContext *QWidget::inputContext()
This function sets the input context \a context
on this widget.
+ Qt takes ownership of the given input \a context.
+
\sa inputContext()
*/
void QWidget::setInputContext(QInputContext *context)
@@ -320,6 +327,8 @@ void QWidget::setInputContext(QInputContext *context)
if (!testAttribute(Qt::WA_InputMethodEnabled))
return;
#ifndef QT_NO_IM
+ if (context == d->ic)
+ return;
if (d->ic)
delete d->ic;
d->ic = context;
@@ -670,8 +679,8 @@ void QWidget::setAutoFillBackground(bool enabled)
(to move the keyboard focus), and passes on most of the other events to
one of the more specialized handlers above.
- Events and the mechanism used to deliver them are covered in the
- \l{Events and Event Filters} document.
+ Events and the mechanism used to deliver them are covered in
+ \l{The Event System}.
\section1 Groups of Functions and Properties
diff --git a/src/gui/math3d/qgenericmatrix.cpp b/src/gui/math3d/qgenericmatrix.cpp
index 96405a8b..be30cb6 100644
--- a/src/gui/math3d/qgenericmatrix.cpp
+++ b/src/gui/math3d/qgenericmatrix.cpp
@@ -252,7 +252,7 @@ QT_BEGIN_NAMESPACE
Writes the given \a matrix to the given \a stream and returns a
reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
/*!
@@ -262,7 +262,7 @@ QT_BEGIN_NAMESPACE
Reads a NxM matrix from the given \a stream into the given \a matrix
and returns a reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
#endif
diff --git a/src/gui/math3d/qmatrix4x4.cpp b/src/gui/math3d/qmatrix4x4.cpp
index 62d740c..16c7f97 100644
--- a/src/gui/math3d/qmatrix4x4.cpp
+++ b/src/gui/math3d/qmatrix4x4.cpp
@@ -1878,7 +1878,7 @@ QDebug operator<<(QDebug dbg, const QMatrix4x4 &m)
Writes the given \a matrix to the given \a stream and returns a
reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &stream, const QMatrix4x4 &matrix)
@@ -1896,7 +1896,7 @@ QDataStream &operator<<(QDataStream &stream, const QMatrix4x4 &matrix)
Reads a 4x4 matrix from the given \a stream into the given \a matrix
and returns a reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &stream, QMatrix4x4 &matrix)
diff --git a/src/gui/math3d/qquaternion.cpp b/src/gui/math3d/qquaternion.cpp
index ad71836..2fd66eb 100644
--- a/src/gui/math3d/qquaternion.cpp
+++ b/src/gui/math3d/qquaternion.cpp
@@ -595,7 +595,7 @@ QDebug operator<<(QDebug dbg, const QQuaternion &q)
Writes the given \a quaternion to the given \a stream and returns a
reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &stream, const QQuaternion &quaternion)
@@ -612,7 +612,7 @@ QDataStream &operator<<(QDataStream &stream, const QQuaternion &quaternion)
Reads a quaternion from the given \a stream into the given \a quaternion
and returns a reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &stream, QQuaternion &quaternion)
diff --git a/src/gui/math3d/qvector2d.cpp b/src/gui/math3d/qvector2d.cpp
index b67e8a1..6a5cfc8 100644
--- a/src/gui/math3d/qvector2d.cpp
+++ b/src/gui/math3d/qvector2d.cpp
@@ -434,7 +434,7 @@ QDebug operator<<(QDebug dbg, const QVector2D &vector)
Writes the given \a vector to the given \a stream and returns a
reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &stream, const QVector2D &vector)
@@ -450,7 +450,7 @@ QDataStream &operator<<(QDataStream &stream, const QVector2D &vector)
Reads a 2D vector from the given \a stream into the given \a vector
and returns a reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &stream, QVector2D &vector)
diff --git a/src/gui/math3d/qvector3d.cpp b/src/gui/math3d/qvector3d.cpp
index 6a592b2..dfcce0e 100644
--- a/src/gui/math3d/qvector3d.cpp
+++ b/src/gui/math3d/qvector3d.cpp
@@ -585,7 +585,7 @@ QDebug operator<<(QDebug dbg, const QVector3D &vector)
Writes the given \a vector to the given \a stream and returns a
reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &stream, const QVector3D &vector)
@@ -602,7 +602,7 @@ QDataStream &operator<<(QDataStream &stream, const QVector3D &vector)
Reads a 3D vector from the given \a stream into the given \a vector
and returns a reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &stream, QVector3D &vector)
diff --git a/src/gui/math3d/qvector4d.cpp b/src/gui/math3d/qvector4d.cpp
index f2f3cc6..abff1ba 100644
--- a/src/gui/math3d/qvector4d.cpp
+++ b/src/gui/math3d/qvector4d.cpp
@@ -538,7 +538,7 @@ QDebug operator<<(QDebug dbg, const QVector4D &vector)
Writes the given \a vector to the given \a stream and returns a
reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &stream, const QVector4D &vector)
@@ -555,7 +555,7 @@ QDataStream &operator<<(QDataStream &stream, const QVector4D &vector)
Reads a 4D vector from the given \a stream into the given \a vector
and returns a reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &stream, QVector4D &vector)
diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri
index ed8ee76..123af1c 100644
--- a/src/gui/painting/painting.pri
+++ b/src/gui/painting/painting.pri
@@ -118,12 +118,14 @@ embedded {
} else {
HEADERS += \
painting/qgraphicssystem_raster_p.h \
+ painting/qgraphicssystem_runtime_p.h \
painting/qgraphicssystemfactory_p.h \
painting/qgraphicssystemplugin_p.h \
painting/qwindowsurface_raster_p.h \
SOURCES += \
painting/qgraphicssystem_raster.cpp \
+ painting/qgraphicssystem_runtime.cpp \
painting/qgraphicssystemfactory.cpp \
painting/qgraphicssystemplugin.cpp \
painting/qwindowsurface_raster.cpp \
diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp
index 96d547b..b468b11 100644
--- a/src/gui/painting/qbrush.cpp
+++ b/src/gui/painting/qbrush.cpp
@@ -329,8 +329,8 @@ struct QBrushDataPointerDeleter
\endtable
- For more information about painting in general, see \l{The Paint
- System} documentation.
+ For more information about painting in general, see the \l{Paint
+ System}.
\sa Qt::BrushStyle, QPainter, QColor
*/
@@ -1013,7 +1013,7 @@ QDebug operator<<(QDebug dbg, const QBrush &b)
Writes the given \a brush to the given \a stream and returns a
reference to the \a stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &s, const QBrush &b)
@@ -1081,7 +1081,7 @@ QDataStream &operator<<(QDataStream &s, const QBrush &b)
Reads the given \a brush from the given \a stream and returns a
reference to the \a stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &s, QBrush &b)
diff --git a/src/gui/painting/qgraphicssystem_runtime.cpp b/src/gui/painting/qgraphicssystem_runtime.cpp
new file mode 100644
index 0000000..32a8578
--- /dev/null
+++ b/src/gui/painting/qgraphicssystem_runtime.cpp
@@ -0,0 +1,487 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <private/qgraphicssystem_runtime_p.h>
+#include <private/qgraphicssystem_raster_p.h>
+#include <private/qgraphicssystemfactory_p.h>
+#include <private/qapplication_p.h>
+#include <private/qwidget_p.h>
+#include <QtCore/QDebug>
+#include <QtCore/QTimer>
+#include <QtGui/QBitmap>
+
+QT_BEGIN_NAMESPACE
+
+static int qt_pixmap_serial = 0;
+
+#define READBACK(f) \
+ m_graphicsSystem->decreaseMemoryUsage(memoryUsage()); \
+ f \
+ readBackInfo(); \
+ m_graphicsSystem->increaseMemoryUsage(memoryUsage()); \
+
+
+class QDeferredGraphicsSystemChange : public QObject
+{
+ Q_OBJECT
+
+public:
+ QDeferredGraphicsSystemChange(QRuntimeGraphicsSystem *gs, const QString& graphicsSystemName)
+ : m_graphicsSystem(gs), m_graphicsSystemName(graphicsSystemName)
+ {
+ }
+
+ void launch()
+ {
+ QTimer::singleShot(0, this, SLOT(doChange()));
+ }
+
+private slots:
+
+ void doChange()
+ {
+ m_graphicsSystem->setGraphicsSystem(m_graphicsSystemName);
+ deleteLater();
+ }
+
+private:
+
+ QRuntimeGraphicsSystem *m_graphicsSystem;
+ QString m_graphicsSystemName;
+};
+
+QRuntimePixmapData::QRuntimePixmapData(const QRuntimeGraphicsSystem *gs, PixelType type)
+ : QPixmapData(type, RuntimeClass), m_graphicsSystem(gs)
+{
+ setSerialNumber(++qt_pixmap_serial);
+}
+
+QRuntimePixmapData::~QRuntimePixmapData()
+{
+ m_graphicsSystem->removePixmapData(this);
+ delete m_data;
+}
+
+void QRuntimePixmapData::readBackInfo()
+{
+ w = m_data->width();
+ h = m_data->height();
+ d = m_data->depth();
+ is_null = m_data->isNull();
+}
+
+
+QPixmapData *QRuntimePixmapData::createCompatiblePixmapData() const
+{
+ QRuntimePixmapData *rtData = new QRuntimePixmapData(m_graphicsSystem, pixelType());
+ rtData->m_data = m_data->createCompatiblePixmapData();
+ return rtData;
+}
+
+
+void QRuntimePixmapData::resize(int width, int height)
+{
+ READBACK(
+ m_data->resize(width, height);
+ )
+}
+
+
+void QRuntimePixmapData::fromImage(const QImage &image,
+ Qt::ImageConversionFlags flags)
+{
+ READBACK(
+ m_data->fromImage(image, flags);
+ )
+}
+
+
+bool QRuntimePixmapData::fromFile(const QString &filename, const char *format,
+ Qt::ImageConversionFlags flags)
+{
+ bool success(false);
+ READBACK(
+ success = m_data->fromFile(filename, format, flags);
+ )
+ return success;
+}
+
+bool QRuntimePixmapData::fromData(const uchar *buffer, uint len, const char *format,
+ Qt::ImageConversionFlags flags)
+{
+ bool success(false);
+ READBACK(
+ success = m_data->fromData(buffer, len, format, flags);
+ )
+ return success;
+}
+
+
+void QRuntimePixmapData::copy(const QPixmapData *data, const QRect &rect)
+{
+ if (data->runtimeData()) {
+ READBACK(
+ m_data->copy(data->runtimeData(), rect);
+ )
+ } else {
+ READBACK(
+ m_data->copy(data, rect);
+ )
+ }
+}
+
+bool QRuntimePixmapData::scroll(int dx, int dy, const QRect &rect)
+{
+ return m_data->scroll(dx, dy, rect);
+}
+
+
+int QRuntimePixmapData::metric(QPaintDevice::PaintDeviceMetric metric) const
+{
+ return m_data->metric(metric);
+}
+
+void QRuntimePixmapData::fill(const QColor &color)
+{
+ return m_data->fill(color);
+}
+
+QBitmap QRuntimePixmapData::mask() const
+{
+ return m_data->mask();
+}
+
+void QRuntimePixmapData::setMask(const QBitmap &mask)
+{
+ READBACK(
+ m_data->setMask(mask);
+ )
+}
+
+bool QRuntimePixmapData::hasAlphaChannel() const
+{
+ return m_data->hasAlphaChannel();
+}
+
+QPixmap QRuntimePixmapData::transformed(const QTransform &matrix,
+ Qt::TransformationMode mode) const
+{
+ return m_data->transformed(matrix, mode);
+}
+
+void QRuntimePixmapData::setAlphaChannel(const QPixmap &alphaChannel)
+{
+ READBACK(
+ m_data->setAlphaChannel(alphaChannel);
+ )
+}
+
+QPixmap QRuntimePixmapData::alphaChannel() const
+{
+ return m_data->alphaChannel();
+}
+
+QImage QRuntimePixmapData::toImage() const
+{
+ return m_data->toImage();
+}
+
+QPaintEngine* QRuntimePixmapData::paintEngine() const
+{
+ return m_data->paintEngine();
+}
+
+QImage* QRuntimePixmapData::buffer()
+{
+ return m_data->buffer();
+}
+
+#if defined(Q_OS_SYMBIAN)
+void* QRuntimePixmapData::toNativeType(NativeType type)
+{
+ return m_data->toNativeType(type);
+}
+
+void QRuntimePixmapData::fromNativeType(void *pixmap, NativeType type)
+{
+ m_data->fromNativeType(pixmap, type);
+ readBackInfo();
+}
+#endif
+
+QPixmapData* QRuntimePixmapData::runtimeData() const
+{
+ return m_data;
+}
+
+uint QRuntimePixmapData::memoryUsage() const
+{
+ if(is_null || d == 0)
+ return 0;
+ return w * h * (d / 8);
+}
+
+
+QRuntimeWindowSurface::QRuntimeWindowSurface(const QRuntimeGraphicsSystem *gs, QWidget *window)
+ : QWindowSurface(window), m_windowSurface(0), m_pendingWindowSurface(0), m_graphicsSystem(gs)
+{
+
+}
+
+QRuntimeWindowSurface::~QRuntimeWindowSurface()
+{
+ m_graphicsSystem->removeWindowSurface(this);
+ delete m_windowSurface;
+}
+
+QPaintDevice *QRuntimeWindowSurface::paintDevice()
+{
+ return m_windowSurface->paintDevice();
+}
+
+void QRuntimeWindowSurface::flush(QWidget *widget, const QRegion &region,
+ const QPoint &offset)
+{
+ m_windowSurface->flush(widget, region, offset);
+
+ int destroyPolicy = m_graphicsSystem->windowSurfaceDestroyPolicy();
+ if(m_pendingWindowSurface &&
+ destroyPolicy == QRuntimeGraphicsSystem::DestroyAfterFirstFlush) {
+#ifdef QT_DEBUG
+ qDebug() << "QRuntimeWindowSurface::flush() - destroy pending window surface";
+#endif
+ delete m_pendingWindowSurface;
+ m_pendingWindowSurface = 0;
+ }
+}
+
+void QRuntimeWindowSurface::setGeometry(const QRect &rect)
+{
+ m_graphicsSystem->decreaseMemoryUsage(memoryUsage());
+ m_windowSurface->setGeometry(rect);
+ m_graphicsSystem->increaseMemoryUsage(memoryUsage());
+}
+
+bool QRuntimeWindowSurface::scroll(const QRegion &area, int dx, int dy)
+{
+ return m_windowSurface->scroll(area, dx, dy);
+}
+
+void QRuntimeWindowSurface::beginPaint(const QRegion &rgn)
+{
+ m_windowSurface->beginPaint(rgn);
+}
+
+void QRuntimeWindowSurface::endPaint(const QRegion &rgn)
+{
+ m_windowSurface->endPaint(rgn);
+}
+
+QImage* QRuntimeWindowSurface::buffer(const QWidget *widget)
+{
+ return m_windowSurface->buffer(widget);
+}
+
+QPixmap QRuntimeWindowSurface::grabWidget(const QWidget *widget, const QRect& rectangle) const
+{
+ return m_windowSurface->grabWidget(widget, rectangle);
+}
+
+QPoint QRuntimeWindowSurface::offset(const QWidget *widget) const
+{
+ return m_windowSurface->offset(widget);
+}
+
+uint QRuntimeWindowSurface::memoryUsage() const
+{
+ QPaintDevice *pdev = m_windowSurface->paintDevice();
+ if (pdev && pdev->depth() != 0)
+ return pdev->width() * pdev->height() * (pdev->depth()/8);
+
+ return 0;
+}
+
+QRuntimeGraphicsSystem::QRuntimeGraphicsSystem()
+ : m_memoryUsage(0), m_windowSurfaceDestroyPolicy(DestroyImmediately),
+ m_graphicsSystem(0), m_graphicsSystemChangeMemoryLimit(0)
+{
+ QApplicationPrivate::graphics_system_name = QLatin1String("runtime");
+ QApplicationPrivate::runtime_graphics_system = true;
+
+#ifdef Q_OS_SYMBIAN
+ m_graphicsSystemName = QLatin1String("openvg");
+ m_windowSurfaceDestroyPolicy = DestroyAfterFirstFlush;
+#else
+ m_graphicsSystemName = QLatin1String("raster");
+#endif
+
+ m_graphicsSystem = QGraphicsSystemFactory::create(m_graphicsSystemName);
+}
+
+
+QPixmapData *QRuntimeGraphicsSystem::createPixmapData(QPixmapData::PixelType type) const
+{
+ Q_ASSERT(m_graphicsSystem);
+ QPixmapData *data = m_graphicsSystem->createPixmapData(type);
+
+ QRuntimePixmapData *rtData = new QRuntimePixmapData(this, type);
+ rtData->m_data = data;
+ m_pixmapDatas << rtData;
+
+ return rtData;
+}
+
+QWindowSurface *QRuntimeGraphicsSystem::createWindowSurface(QWidget *widget) const
+{
+ Q_ASSERT(m_graphicsSystem);
+ QRuntimeWindowSurface *rtSurface = new QRuntimeWindowSurface(this, widget);
+ rtSurface->m_windowSurface = m_graphicsSystem->createWindowSurface(widget);
+ widget->setWindowSurface(rtSurface);
+ m_windowSurfaces << rtSurface;
+ increaseMemoryUsage(rtSurface->memoryUsage());
+ return rtSurface;
+}
+
+/*!
+ Sets graphics system when resource memory consumption is under /a memoryUsageLimit.
+*/
+void QRuntimeGraphicsSystem::setGraphicsSystem(const QString &name, uint memoryUsageLimit)
+{
+#ifdef QT_DEBUG
+ qDebug() << "QRuntimeGraphicsSystem::setGraphicsSystem( "<< name <<", " << memoryUsageLimit << ")";
+ qDebug() << " current approximated graphics system memory usage " << memoryUsage() << " bytes";
+#endif
+ if (memoryUsage() >= memoryUsageLimit) {
+ m_graphicsSystemChangeMemoryLimit = memoryUsageLimit;
+ m_pendingGraphicsSystemName = name;
+ } else {
+ setGraphicsSystem(name);
+ }
+}
+
+void QRuntimeGraphicsSystem::setGraphicsSystem(const QString &name)
+{
+ if (m_graphicsSystemName == name)
+ return;
+#ifdef QT_DEBUG
+ qDebug() << "QRuntimeGraphicsSystem::setGraphicsSystem( " << name << " )";
+ qDebug() << " current approximated graphics system memory usage "<< memoryUsage() << " bytes";
+#endif
+ delete m_graphicsSystem;
+ m_graphicsSystem = QGraphicsSystemFactory::create(name);
+ m_graphicsSystemName = name;
+
+ Q_ASSERT(m_graphicsSystem);
+
+ m_graphicsSystemChangeMemoryLimit = 0;
+ m_pendingGraphicsSystemName = QString();
+
+ for (int i = 0; i < m_pixmapDatas.size(); ++i) {
+ QRuntimePixmapData *proxy = m_pixmapDatas.at(i);
+ QPixmapData *newData = m_graphicsSystem->createPixmapData(proxy->m_data->pixelType());
+ // ### TODO Optimize. Openvg and s60raster graphics systems could switch internal ARGB32_PRE QImage buffers.
+ newData->fromImage(proxy->m_data->toImage(), Qt::AutoColor | Qt::OrderedAlphaDither);
+ delete proxy->m_data;
+ proxy->m_data = newData;
+ proxy->readBackInfo();
+ }
+
+ for (int i = 0; i < m_windowSurfaces.size(); ++i) {
+ QRuntimeWindowSurface *proxy = m_windowSurfaces.at(i);
+ QWidget *widget = proxy->m_windowSurface->window();
+
+ if(m_windowSurfaceDestroyPolicy == DestroyImmediately) {
+ delete proxy->m_windowSurface;
+ proxy->m_pendingWindowSurface = 0;
+ } else {
+ proxy->m_pendingWindowSurface = proxy->m_windowSurface;
+ }
+
+ proxy->m_windowSurface = m_graphicsSystem->createWindowSurface(widget);
+ qt_widget_private(widget)->invalidateBuffer(widget->rect());
+ }
+}
+
+void QRuntimeGraphicsSystem::removePixmapData(QRuntimePixmapData *pixmapData) const
+{
+ int index = m_pixmapDatas.lastIndexOf(pixmapData);
+ m_pixmapDatas.removeAt(index);
+ decreaseMemoryUsage(pixmapData->memoryUsage(), true);
+}
+
+void QRuntimeGraphicsSystem::removeWindowSurface(QRuntimeWindowSurface *windowSurface) const
+{
+ int index = m_windowSurfaces.lastIndexOf(windowSurface);
+ m_windowSurfaces.removeAt(index);
+ decreaseMemoryUsage(windowSurface->memoryUsage(), true);
+}
+
+void QRuntimeGraphicsSystem::increaseMemoryUsage(uint amount) const
+{
+ m_memoryUsage += amount;
+
+ if (m_graphicsSystemChangeMemoryLimit &&
+ m_memoryUsage < m_graphicsSystemChangeMemoryLimit) {
+
+ QRuntimeGraphicsSystem *gs = const_cast<QRuntimeGraphicsSystem*>(this);
+ QDeferredGraphicsSystemChange *deferredChange =
+ new QDeferredGraphicsSystemChange(gs, m_pendingGraphicsSystemName);
+ deferredChange->launch();
+ }
+}
+
+void QRuntimeGraphicsSystem::decreaseMemoryUsage(uint amount, bool persistent) const
+{
+ m_memoryUsage -= amount;
+
+ if (persistent && m_graphicsSystemChangeMemoryLimit &&
+ m_memoryUsage < m_graphicsSystemChangeMemoryLimit) {
+
+ QRuntimeGraphicsSystem *gs = const_cast<QRuntimeGraphicsSystem*>(this);
+ QDeferredGraphicsSystemChange *deferredChange =
+ new QDeferredGraphicsSystemChange(gs, m_pendingGraphicsSystemName);
+ deferredChange->launch();
+ }
+}
+
+#include "qgraphicssystem_runtime.moc"
+
+QT_END_NAMESPACE
diff --git a/src/gui/painting/qgraphicssystem_runtime_p.h b/src/gui/painting/qgraphicssystem_runtime_p.h
new file mode 100644
index 0000000..445f83d
--- /dev/null
+++ b/src/gui/painting/qgraphicssystem_runtime_p.h
@@ -0,0 +1,197 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QGRAPHICSSYSTEM_RUNTIME_P_H
+#define QGRAPHICSSYSTEM_RUNTIME_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qgraphicssystem_p.h"
+
+#include <private/qpixmapdata_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QRuntimeGraphicsSystem;
+
+class QRuntimePixmapData : public QPixmapData {
+public:
+ QRuntimePixmapData(const QRuntimeGraphicsSystem *gs, PixelType type);
+ ~QRuntimePixmapData();
+
+ virtual QPixmapData *createCompatiblePixmapData() const;
+ virtual void resize(int width, int height);
+ virtual void fromImage(const QImage &image,
+ Qt::ImageConversionFlags flags);
+
+ virtual bool fromFile(const QString &filename, const char *format,
+ Qt::ImageConversionFlags flags);
+ virtual bool fromData(const uchar *buffer, uint len, const char *format,
+ Qt::ImageConversionFlags flags);
+
+ virtual void copy(const QPixmapData *data, const QRect &rect);
+ virtual bool scroll(int dx, int dy, const QRect &rect);
+
+ virtual int metric(QPaintDevice::PaintDeviceMetric metric) const;
+ virtual void fill(const QColor &color);
+ virtual QBitmap mask() const;
+ virtual void setMask(const QBitmap &mask);
+ virtual bool hasAlphaChannel() const;
+ virtual QPixmap transformed(const QTransform &matrix,
+ Qt::TransformationMode mode) const;
+ virtual void setAlphaChannel(const QPixmap &alphaChannel);
+ virtual QPixmap alphaChannel() const;
+ virtual QImage toImage() const;
+ virtual QPaintEngine *paintEngine() const;
+
+ virtual QImage *buffer();
+
+ void readBackInfo();
+
+ QPixmapData *m_data;
+
+#if defined(Q_OS_SYMBIAN)
+ void* toNativeType(NativeType type);
+ void fromNativeType(void* pixmap, NativeType type);
+#endif
+
+ virtual QPixmapData *runtimeData() const;
+
+ virtual uint memoryUsage() const;
+
+private:
+ const QRuntimeGraphicsSystem *m_graphicsSystem;
+
+};
+
+class QRuntimeWindowSurface : public QWindowSurface {
+public:
+ QRuntimeWindowSurface(const QRuntimeGraphicsSystem *gs, QWidget *window);
+ ~QRuntimeWindowSurface();
+
+ virtual QPaintDevice *paintDevice();
+ virtual void flush(QWidget *widget, const QRegion &region,
+ const QPoint &offset);
+ virtual void setGeometry(const QRect &rect);
+
+ virtual bool scroll(const QRegion &area, int dx, int dy);
+
+ virtual void beginPaint(const QRegion &);
+ virtual void endPaint(const QRegion &);
+
+ virtual QImage* buffer(const QWidget *widget);
+ virtual QPixmap grabWidget(const QWidget *widget, const QRect& rectangle = QRect()) const;
+
+ virtual QPoint offset(const QWidget *widget) const;
+
+ virtual uint memoryUsage() const;
+
+ QWindowSurface *m_windowSurface;
+ QWindowSurface *m_pendingWindowSurface;
+
+private:
+ const QRuntimeGraphicsSystem *m_graphicsSystem;
+};
+
+class QRuntimeGraphicsSystem : public QGraphicsSystem
+{
+public:
+
+ enum WindowSurfaceDestroyPolicy
+ {
+ DestroyImmediately,
+ DestroyAfterFirstFlush
+ };
+
+public:
+ QRuntimeGraphicsSystem();
+
+ QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
+ QWindowSurface *createWindowSurface(QWidget *widget) const;
+
+ void removePixmapData(QRuntimePixmapData *pixmapData) const;
+ void removeWindowSurface(QRuntimeWindowSurface *windowSurface) const;
+
+ void setGraphicsSystem(const QString &name, uint memoryUsageLimit);
+ void setGraphicsSystem(const QString &name);
+ QString graphicsSystemName() const { return m_graphicsSystemName; }
+
+ void setWindowSurfaceDestroyPolicy(WindowSurfaceDestroyPolicy policy)
+ {
+ m_windowSurfaceDestroyPolicy = policy;
+ }
+
+ int windowSurfaceDestroyPolicy() const { return m_windowSurfaceDestroyPolicy; }
+
+ int memoryUsage() const { return m_memoryUsage; }
+
+private:
+
+ void increaseMemoryUsage(uint amount) const;
+ void decreaseMemoryUsage(uint amount, bool persistent = false) const;
+
+private:
+ mutable uint m_memoryUsage;
+ int m_windowSurfaceDestroyPolicy;
+ QGraphicsSystem *m_graphicsSystem;
+ mutable QList<QRuntimePixmapData *> m_pixmapDatas;
+ mutable QList<QRuntimeWindowSurface *> m_windowSurfaces;
+ QString m_graphicsSystemName;
+
+ uint m_graphicsSystemChangeMemoryLimit;
+ QString m_pendingGraphicsSystemName;
+
+ friend class QRuntimePixmapData;
+ friend class QRuntimeWindowSurface;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/gui/painting/qgraphicssystemfactory.cpp b/src/gui/painting/qgraphicssystemfactory.cpp
index 3c09894..ee6fbd8 100644
--- a/src/gui/painting/qgraphicssystemfactory.cpp
+++ b/src/gui/painting/qgraphicssystemfactory.cpp
@@ -46,6 +46,7 @@
#include "qapplication.h"
#include "qgraphicssystem_raster_p.h"
+#include "qgraphicssystem_runtime_p.h"
#include "qdebug.h"
QT_BEGIN_NAMESPACE
@@ -68,6 +69,10 @@ QGraphicsSystem *QGraphicsSystemFactory::create(const QString& key)
if (system.isEmpty()) {
system = QLatin1String("openvg");
}
+#elif defined (QT_GRAPHICSSYSTEM_RUNTIME)
+ if (system.isEmpty()) {
+ system = QLatin1String("runtime");
+ }
#elif defined (QT_GRAPHICSSYSTEM_RASTER) && !defined(Q_WS_WIN) && !defined(Q_OS_SYMBIAN)
if (system.isEmpty()) {
system = QLatin1String("raster");
@@ -76,6 +81,8 @@ QGraphicsSystem *QGraphicsSystemFactory::create(const QString& key)
if (system == QLatin1String("raster"))
return new QRasterGraphicsSystem;
+ else if (system == QLatin1String("runtime"))
+ return new QRuntimeGraphicsSystem;
else if (system.isEmpty() || system == QLatin1String("native"))
return 0;
diff --git a/src/gui/painting/qpaintdevice.qdoc b/src/gui/painting/qpaintdevice.qdoc
index 8c73cc0..340db39 100644
--- a/src/gui/painting/qpaintdevice.qdoc
+++ b/src/gui/painting/qpaintdevice.qdoc
@@ -87,8 +87,7 @@
function returns the number of different colors available for the
paint device.
- \sa QPaintEngine, QPainter, {The Coordinate System}, {The Paint
- System}
+ \sa QPaintEngine, QPainter, {Coordinate System}, {Paint System}
*/
/*!
diff --git a/src/gui/painting/qpaintengine.cpp b/src/gui/painting/qpaintengine.cpp
index 6aabde8..a2d0337 100644
--- a/src/gui/painting/qpaintengine.cpp
+++ b/src/gui/painting/qpaintengine.cpp
@@ -172,7 +172,7 @@ QFont QTextItem::font() const
possible to adapt to multiple technologies on each platform and take
advantage of each to the fullest.
- \sa QPainter, QPaintDevice::paintEngine(), {The Paint System}
+ \sa QPainter, QPaintDevice::paintEngine(), {Paint System}
*/
/*!
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 6f395f6..48974e8 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -441,8 +441,9 @@ bool QRasterPaintEngine::begin(QPaintDevice *device)
if (device->devType() == QInternal::Pixmap) {
QPixmap *pixmap = static_cast<QPixmap *>(device);
- if (pixmap->data->classId() == QPixmapData::RasterClass)
- d->device = pixmap->data->buffer();
+ QPixmapData *pd = pixmap->pixmapData();
+ if (pd->classId() == QPixmapData::RasterClass)
+ d->device = pd->buffer();
} else {
d->device = device;
}
@@ -2358,8 +2359,9 @@ void QRasterPaintEngine::drawPixmap(const QPointF &pos, const QPixmap &pixmap)
qDebug() << " - QRasterPaintEngine::drawPixmap(), pos=" << pos << " pixmap=" << pixmap.size() << "depth=" << pixmap.depth();
#endif
- if (pixmap.data->classId() == QPixmapData::RasterClass) {
- const QImage &image = static_cast<QRasterPixmapData *>(pixmap.data.data())->image;
+ QPixmapData *pd = pixmap.pixmapData();
+ if (pd->classId() == QPixmapData::RasterClass) {
+ const QImage &image = static_cast<QRasterPixmapData *>(pd)->image;
if (image.depth() == 1) {
Q_D(QRasterPaintEngine);
QRasterPaintEngineState *s = state();
@@ -2398,8 +2400,9 @@ void QRasterPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap, cons
qDebug() << " - QRasterPaintEngine::drawPixmap(), r=" << r << " sr=" << sr << " pixmap=" << pixmap.size() << "depth=" << pixmap.depth();
#endif
- if (pixmap.data->classId() == QPixmapData::RasterClass) {
- const QImage &image = static_cast<QRasterPixmapData *>(pixmap.data.data())->image;
+ QPixmapData* pd = pixmap.pixmapData();
+ if (pd->classId() == QPixmapData::RasterClass) {
+ const QImage &image = static_cast<QRasterPixmapData *>(pd)->image;
if (image.depth() == 1) {
Q_D(QRasterPaintEngine);
QRasterPaintEngineState *s = state();
@@ -2703,8 +2706,9 @@ void QRasterPaintEngine::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap,
QImage image;
- if (pixmap.data->classId() == QPixmapData::RasterClass) {
- image = static_cast<QRasterPixmapData *>(pixmap.data.data())->image;
+ QPixmapData *pd = pixmap.pixmapData();
+ if (pd->classId() == QPixmapData::RasterClass) {
+ image = static_cast<QRasterPixmapData *>(pd)->image;
} else {
image = pixmap.toImage();
}
diff --git a/src/gui/painting/qpen.cpp b/src/gui/painting/qpen.cpp
index e290cbe..2e43984 100644
--- a/src/gui/painting/qpen.cpp
+++ b/src/gui/painting/qpen.cpp
@@ -92,7 +92,7 @@ typedef QPenPrivate QPenData;
convenience functions to extract and set the color of the pen's
brush, respectively. Pens may also be compared and streamed.
- For more information about painting in general, see \l{The Paint
+ For more information about painting in general, see the \l{Paint
System} documentation.
\tableofcontents
@@ -872,7 +872,7 @@ bool QPen::isDetached()
Writes the given \a pen to the given \a stream and returns a reference to
the \a stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator<<(QDataStream &s, const QPen &p)
@@ -918,7 +918,7 @@ QDataStream &operator<<(QDataStream &s, const QPen &p)
Reads a pen from the given \a stream into the given \a pen and
returns a reference to the \a stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream &operator>>(QDataStream &s, QPen &p)
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index aaa241f..423cce9 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -148,8 +148,8 @@ QT_BEGIN_NAMESPACE
coordinate system. The standard coordinate system of a
QPaintDevice has its origin located at the top-left position. The
\e x values increase to the right; \e y values increase
- downward. For a complete description, see the \l {The Coordinate
- System}{coordinate system} documentation.
+ downward. For a complete description, see the \l {Coordinate
+ System} {coordinate system} documentation.
QPainter has functions to translate, scale, shear and rotate the
coordinate system without using a QTransform. For example:
@@ -223,7 +223,7 @@ QT_BEGIN_NAMESPACE
\snippet doc/src/snippets/transform/main.cpp 2
\endtable
- \sa QPainter, {The Coordinate System}, {demos/affine}{Affine
+ \sa QPainter, {Coordinate System}, {demos/affine}{Affine
Transformations Demo}, {Transformations Example}
*/
@@ -1028,7 +1028,7 @@ void QTransform::reset()
Writes the given \a matrix to the given \a stream and returns a
reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream & operator<<(QDataStream &s, const QTransform &m)
{
@@ -1052,7 +1052,7 @@ QDataStream & operator<<(QDataStream &s, const QTransform &m)
Reads the given \a matrix from the given \a stream and returns a
reference to the stream.
- \sa {Format of the QDataStream Operators}
+ \sa {Serializing Qt Data Types}
*/
QDataStream & operator>>(QDataStream &s, QTransform &t)
{
diff --git a/src/gui/painting/qwindowsurface.cpp b/src/gui/painting/qwindowsurface.cpp
index e18ea3f..02a8b80 100644
--- a/src/gui/painting/qwindowsurface.cpp
+++ b/src/gui/painting/qwindowsurface.cpp
@@ -43,6 +43,7 @@
#include <qwidget.h>
#include <private/qwidget_p.h>
#include <private/qbackingstore_p.h>
+#include <private/qapplication_p.h>
QT_BEGIN_NAMESPACE
@@ -116,8 +117,10 @@ public:
QWindowSurface::QWindowSurface(QWidget *window)
: d_ptr(new QWindowSurfacePrivate(window))
{
- if (window)
- window->setWindowSurface(this);
+ if (!QApplicationPrivate::runtime_graphics_system) {
+ if(window)
+ window->setWindowSurface(this);
+ }
}
/*!
diff --git a/src/gui/painting/qwindowsurface_s60.cpp b/src/gui/painting/qwindowsurface_s60.cpp
index b25dce5..477bd93 100644
--- a/src/gui/painting/qwindowsurface_s60.cpp
+++ b/src/gui/painting/qwindowsurface_s60.cpp
@@ -43,10 +43,15 @@
#include <QtGui/qpaintdevice.h>
#include <private/qwidget_p.h>
-#include "qwindowsurface_s60_p.h"
+#include <private/qwindowsurface_s60_p.h>
#include <private/qpixmap_s60_p.h>
#include <private/qt_s60_p.h>
-#include "private/qdrawhelper_p.h"
+#include <private/qapplication_p.h>
+#include <private/qdrawhelper_p.h>
+
+#ifdef QT_GRAPHICSSYSTEM_RUNTIME
+#include <private/qgraphicssystem_runtime_p.h>
+#endif
QT_BEGIN_NAMESPACE
@@ -79,13 +84,35 @@ QS60WindowSurface::QS60WindowSurface(QWidget* widget)
setStaticContentsSupport(true);
}
+
QS60WindowSurface::~QS60WindowSurface()
{
+#if defined(QT_GRAPHICSSYSTEM_RUNTIME) && defined(Q_SYMBIAN_SUPPORTS_SURFACES)
+ if(QApplicationPrivate::runtime_graphics_system) {
+ QRuntimeGraphicsSystem *runtimeGraphicsSystem =
+ static_cast<QRuntimeGraphicsSystem*>(QApplicationPrivate::graphics_system);
+ if(runtimeGraphicsSystem->graphicsSystemName() == QLatin1String("openvg")) {
+
+ // Graphics system has been switched from raster to openvg.
+ // Issue empty redraw to clear the UI surface
+
+ QWidget *w = window();
+ RWindow *const window = static_cast<RWindow *>(w->winId()->DrawableWindow());
+ window->BeginRedraw();
+ window->EndRedraw();
+ }
+ }
+#endif
+
delete d_ptr;
}
void QS60WindowSurface::beginPaint(const QRegion &rgn)
{
+#ifdef Q_SYMBIAN_SUPPORTS_SURFACES
+ S60->wsSession().Finish();
+#endif
+
if (!qt_widget_private(window())->isOpaque) {
QS60PixmapData *pixmapData = static_cast<QS60PixmapData *>(d_ptr->device.data_ptr().data());
pixmapData->beginDataAccess();
diff --git a/src/gui/s60framework/qs60mainappui.cpp b/src/gui/s60framework/qs60mainappui.cpp
index feffc9f..ce13de8 100644
--- a/src/gui/s60framework/qs60mainappui.cpp
+++ b/src/gui/s60framework/qs60mainappui.cpp
@@ -64,6 +64,9 @@
#include <private/qt_s60_p.h>
#include <qdebug.h>
+//Animated wallpapers in Qt applications are not supported.
+const TInt KAknDisableAnimationBackground = 0x02000000;
+
QT_BEGIN_NAMESPACE
/*!
@@ -115,6 +118,11 @@ void QS60MainAppUi::ConstructL()
TInt flags = CAknAppUi::EAknEnableSkin
| CAknAppUi::ENoScreenFurniture
| CAknAppUi::ENonStandardResourceFile;
+ // After 5th Edition S60, native side supports animated wallpapers.
+ // However, there is no support for that feature on Qt side, so indicate to
+ // native UI framework that this application will not support background animations.
+ if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0)
+ flags |= KAknDisableAnimationBackground;
BaseConstructL(flags);
}
diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp
index 6c8d561..9d6dc9a 100644
--- a/src/gui/styles/qgtkstyle.cpp
+++ b/src/gui/styles/qgtkstyle.cpp
@@ -325,6 +325,7 @@ void QGtkStyle::polish(QApplication *app)
qt_filedialog_save_filename_hook = &QGtkStylePrivate::saveFilename;
qt_filedialog_open_filenames_hook = &QGtkStylePrivate::openFilenames;
qt_filedialog_existing_directory_hook = &QGtkStylePrivate::openDirectory;
+ qApp->installEventFilter(&d->filter);
}
}
}
@@ -345,6 +346,7 @@ void QGtkStyle::unpolish(QApplication *app)
qt_filedialog_save_filename_hook = 0;
qt_filedialog_open_filenames_hook = 0;
qt_filedialog_existing_directory_hook = 0;
+ qApp->removeEventFilter(&d->filter);
}
}
diff --git a/src/gui/styles/qgtkstyle_p.cpp b/src/gui/styles/qgtkstyle_p.cpp
index 3c6a1ef..4ed0fab 100644
--- a/src/gui/styles/qgtkstyle_p.cpp
+++ b/src/gui/styles/qgtkstyle_p.cpp
@@ -285,8 +285,6 @@ void QGtkStylePrivate::init()
{
resolveGtk();
initGtkWidgets();
- if (isThemeAvailable())
- qApp->installEventFilter(&filter);
}
GtkWidget* QGtkStylePrivate::gtkWidget(const QHashableLatin1Literal &path)
diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm
index 7fcdaf2..8cd7417 100644
--- a/src/gui/styles/qmacstyle_mac.mm
+++ b/src/gui/styles/qmacstyle_mac.mm
@@ -100,23 +100,22 @@
#include <QtGui/qgraphicsproxywidget.h>
#include <QtGui/qgraphicsview.h>
#include <private/qt_cocoa_helpers_mac_p.h>
+#include "qmacstyle_mac_p.h"
#include <private/qstylehelper_p.h>
QT_BEGIN_NAMESPACE
-extern QRegion qt_mac_convert_mac_region(RgnHandle); //qregion_mac.cpp
-
// The following constants are used for adjusting the size
// of push buttons so that they are drawn inside their bounds.
-static const int PushButtonLeftOffset = 6;
-static const int PushButtonTopOffset = 4;
-static const int PushButtonRightOffset = 12;
-static const int PushButtonBottomOffset = 12;
-static const int MiniButtonH = 26;
-static const int SmallButtonH = 30;
-static const int BevelButtonW = 50;
-static const int BevelButtonH = 22;
-static const int PushButtonContentPadding = 6;
+const int QMacStylePrivate::PushButtonLeftOffset = 6;
+const int QMacStylePrivate::PushButtonTopOffset = 4;
+const int QMacStylePrivate::PushButtonRightOffset = 12;
+const int QMacStylePrivate::PushButtonBottomOffset = 12;
+const int QMacStylePrivate::MiniButtonH = 26;
+const int QMacStylePrivate::SmallButtonH = 30;
+const int QMacStylePrivate::BevelButtonW = 50;
+const int QMacStylePrivate::BevelButtonH = 22;
+const int QMacStylePrivate::PushButtonContentPadding = 6;
// These colors specify the titlebar gradient colors on
// Leopard. Ideally we should get them from the system.
@@ -132,25 +131,16 @@ static const QColor titlebarSeparatorLineInactive(131, 131, 131);
static const QColor mainWindowGradientBegin(240, 240, 240);
static const QColor mainWindowGradientEnd(200, 200, 200);
-#if (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5)
-enum {
- kThemePushButtonTextured = 31,
- kThemePushButtonTexturedSmall = 32,
- kThemePushButtonTexturedMini = 33
-};
-
-/* Search fields */
-enum {
- kHIThemeFrameTextFieldRound = 1000,
- kHIThemeFrameTextFieldRoundSmall = 1001,
- kHIThemeFrameTextFieldRoundMini = 1002
-};
-#endif
+static const int DisclosureOffset = 4;
// Resolve these at run-time, since the functions was moved in Leopard.
typedef HIRect * (*PtrHIShapeGetBounds)(HIShapeRef, HIRect *);
static PtrHIShapeGetBounds ptrHIShapeGetBounds = 0;
+static int closeButtonSize = 12;
+
+extern QRegion qt_mac_convert_mac_region(RgnHandle); //qregion_mac.cpp
+
static bool isVerticalTabs(const QTabBar::Shape shape) {
return (shape == QTabBar::RoundedEast
|| shape == QTabBar::TriangularEast
@@ -158,8 +148,6 @@ static bool isVerticalTabs(const QTabBar::Shape shape) {
|| shape == QTabBar::TriangularWest);
}
-static int closeButtonSize = 12;
-
void drawTabCloseButton(QPainter *p, bool hover, bool active, bool selected)
{
// draw background circle
@@ -378,32 +366,6 @@ void drawTabBase(QPainter *p, const QStyleOptionTabBarBaseV2 *tbb, const QWidget
p->drawLine(tabRect.x(), height - 1, width, height - 1);
}
-/*
- AHIG:
- Apple Human Interface Guidelines
- http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/
-
- Builder:
- Apple Interface Builder v. 3.1.1
-*/
-
-// this works as long as we have at most 16 different control types
-#define CT1(c) CT2(c, c)
-#define CT2(c1, c2) ((uint(c1) << 16) | uint(c2))
-
-enum QAquaWidgetSize { QAquaSizeLarge = 0, QAquaSizeSmall = 1, QAquaSizeMini = 2,
- QAquaSizeUnknown = -1 };
-
-#define SIZE(large, small, mini) \
- (controlSize == QAquaSizeLarge ? (large) : controlSize == QAquaSizeSmall ? (small) : (mini))
-
-// same as return SIZE(...) but optimized
-#define return_SIZE(large, small, mini) \
- do { \
- static const int sizes[] = { (large), (small), (mini) }; \
- return sizes[controlSize]; \
- } while (0)
-
static int getControlSize(const QStyleOption *option, const QWidget *widget)
{
if (option) {
@@ -481,80 +443,9 @@ static inline ThemeTabDirection getTabDirection(QTabBar::Shape shape)
return ttd;
}
-class QMacStylePrivate : public QObject
-{
- Q_OBJECT
-
-public:
- QMacStylePrivate(QMacStyle *style);
-
- // Stuff from QAquaAnimate:
- bool addWidget(QWidget *);
- void removeWidget(QWidget *);
-
- enum Animates { AquaPushButton, AquaProgressBar, AquaListViewItemOpen };
- bool animatable(Animates, const QWidget *) const;
- void stopAnimate(Animates, QWidget *);
- void startAnimate(Animates, QWidget *);
- static ThemeDrawState getDrawState(QStyle::State flags);
- QAquaWidgetSize aquaSizeConstrain(const QStyleOption *option, const QWidget *widg,
- QStyle::ContentsType ct = QStyle::CT_CustomBase,
- QSize szHint=QSize(-1, -1), QSize *insz = 0) const;
- void getSliderInfo(QStyle::ComplexControl cc, const QStyleOptionSlider *slider,
- HIThemeTrackDrawInfo *tdi, const QWidget *needToRemoveMe);
- bool doAnimate(Animates);
- inline int animateSpeed(Animates) const { return 33; }
-
- // Utility functions
- void drawColorlessButton(const HIRect &macRect, HIThemeButtonDrawInfo *bdi,
- QPainter *p, const QStyleOption *opt) const;
-
- QSize pushButtonSizeFromContents(const QStyleOptionButton *btn) const;
-
- HIRect pushButtonContentBounds(const QStyleOptionButton *btn,
- const HIThemeButtonDrawInfo *bdi) const;
-
- void initComboboxBdi(const QStyleOptionComboBox *combo, HIThemeButtonDrawInfo *bdi,
- const QWidget *widget, const ThemeDrawState &tds);
-
- static HIRect comboboxInnerBounds(const HIRect &outerBounds, int buttonKind);
-
- static QRect comboboxEditBounds(const QRect &outerBounds, const HIThemeButtonDrawInfo &bdi);
-
- static void drawCombobox(const HIRect &outerBounds, const HIThemeButtonDrawInfo &bdi, QPainter *p);
- static void drawTableHeader(const HIRect &outerBounds, bool drawTopBorder, bool drawLeftBorder,
- const HIThemeButtonDrawInfo &bdi, QPainter *p);
- bool contentFitsInPushButton(const QStyleOptionButton *btn, HIThemeButtonDrawInfo *bdi,
- ThemeButtonKind buttonKindToCheck) const;
- void initHIThemePushButton(const QStyleOptionButton *btn, const QWidget *widget,
- const ThemeDrawState tds,
- HIThemeButtonDrawInfo *bdi) const;
- QPixmap generateBackgroundPattern() const;
-protected:
- bool eventFilter(QObject *, QEvent *);
- void timerEvent(QTimerEvent *);
-
-private slots:
- void startAnimationTimer();
-
-public:
- QPointer<QPushButton> defaultButton; //default push buttons
- int timerID;
- QList<QPointer<QWidget> > progressBars; //existing progress bars that need animation
-
- struct ButtonState {
- int frame;
- enum { ButtonDark, ButtonLight } dir;
- } buttonState;
- UInt8 progressFrame;
- QPointer<QFocusFrame> focusWidget;
- CFAbsoluteTime defaultButtonStart;
- QMacStyle *q;
- bool mouseDown;
-};
-
QT_BEGIN_INCLUDE_NAMESPACE
-#include "qmacstyle_mac.moc"
+#include "moc_qmacstyle_mac.cpp"
+#include "moc_qmacstyle_mac_p.cpp"
QT_END_INCLUDE_NAMESPACE
/*****************************************************************************
@@ -1055,10 +946,10 @@ HIRect QMacStylePrivate::pushButtonContentBounds(const QStyleOptionButton *btn,
// Adjust the bounds to correct for
// carbon not calculating the content bounds fully correct
if (bdi->kind == kThemePushButton || bdi->kind == kThemePushButtonSmall){
- outerBounds.origin.y += PushButtonTopOffset;
- outerBounds.size.height -= PushButtonBottomOffset;
+ outerBounds.origin.y += QMacStylePrivate::PushButtonTopOffset;
+ outerBounds.size.height -= QMacStylePrivate::PushButtonBottomOffset;
} else if (bdi->kind == kThemePushButtonMini) {
- outerBounds.origin.y += PushButtonTopOffset;
+ outerBounds.origin.y += QMacStylePrivate::PushButtonTopOffset;
}
HIRect contentBounds;
@@ -1074,7 +965,7 @@ QSize QMacStylePrivate::pushButtonSizeFromContents(const QStyleOptionButton *btn
{
QSize csz(0, 0);
QSize iconSize = btn->icon.isNull() ? QSize(0, 0)
- : (btn->iconSize + QSize(PushButtonContentPadding, 0));
+ : (btn->iconSize + QSize(QMacStylePrivate::PushButtonContentPadding, 0));
QRect textRect = btn->text.isEmpty() ? QRect(0, 0, 1, 1)
: btn->fontMetrics.boundingRect(QRect(), Qt::AlignCenter, btn->text);
csz.setWidth(iconSize.width() + textRect.width()
@@ -1149,12 +1040,12 @@ void QMacStylePrivate::initHIThemePushButton(const QStyleOptionButton *btn,
// Choose the button kind that closest match the button rect, but at the
// same time displays the button contents without clipping.
bdi->kind = kThemeBevelButton;
- if (btn->rect.width() >= BevelButtonW && btn->rect.height() >= BevelButtonH){
+ if (btn->rect.width() >= QMacStylePrivate::BevelButtonW && btn->rect.height() >= QMacStylePrivate::BevelButtonH){
if (widget && widget->testAttribute(Qt::WA_MacVariableSize)) {
- if (btn->rect.height() <= MiniButtonH){
+ if (btn->rect.height() <= QMacStylePrivate::MiniButtonH){
if (contentFitsInPushButton(btn, bdi, kThemePushButtonMini))
bdi->kind = kThemePushButtonMini;
- } else if (btn->rect.height() <= SmallButtonH){
+ } else if (btn->rect.height() <= QMacStylePrivate::SmallButtonH){
if (contentFitsInPushButton(btn, bdi, kThemePushButtonSmall))
bdi->kind = kThemePushButtonSmall;
} else if (contentFitsInPushButton(btn, bdi, kThemePushButton)) {
@@ -3100,7 +2991,7 @@ void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPai
else
bi.value = opt->direction == Qt::LeftToRight ? kThemeDisclosureRight : kThemeDisclosureLeft;
bi.adornment = kThemeAdornmentNone;
- HIRect hirect = qt_hirectForQRect(opt->rect);
+ HIRect hirect = qt_hirectForQRect(opt->rect.adjusted(DisclosureOffset,0,-DisclosureOffset,0));
HIThemeDrawButton(&hirect, &bi, cg, kHIThemeOrientationNormal, 0);
break; }
@@ -3494,21 +3385,21 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
// the focus 'shadow' will be inside.
HIRect newRect = qt_hirectForQRect(btn->rect);
if (bdi.kind == kThemePushButton || bdi.kind == kThemePushButtonSmall) {
- newRect.origin.x += PushButtonLeftOffset;
- newRect.origin.y += PushButtonTopOffset;
- newRect.size.width -= PushButtonRightOffset;
- newRect.size.height -= PushButtonBottomOffset;
+ newRect.origin.x += QMacStylePrivate::PushButtonLeftOffset;
+ newRect.origin.y += QMacStylePrivate::PushButtonTopOffset;
+ newRect.size.width -= QMacStylePrivate::PushButtonRightOffset;
+ newRect.size.height -= QMacStylePrivate::PushButtonBottomOffset;
} else if (bdi.kind == kThemePushButtonMini) {
- newRect.origin.x += PushButtonLeftOffset - 2;
- newRect.origin.y += PushButtonTopOffset;
- newRect.size.width -= PushButtonRightOffset - 4;
+ newRect.origin.x += QMacStylePrivate::PushButtonLeftOffset - 2;
+ newRect.origin.y += QMacStylePrivate::PushButtonTopOffset;
+ newRect.size.width -= QMacStylePrivate::PushButtonRightOffset - 4;
}
HIThemeDrawButton(&newRect, &bdi, cg, kHIThemeOrientationNormal, 0);
if (btn->features & QStyleOptionButton::HasMenu) {
int mbi = proxy()->pixelMetric(QStyle::PM_MenuButtonIndicator, btn, w);
QRect ir = btn->rect;
- HIRect arrowRect = CGRectMake(ir.right() - mbi - PushButtonRightOffset,
+ HIRect arrowRect = CGRectMake(ir.right() - mbi - QMacStylePrivate::PushButtonRightOffset,
ir.height() / 2 - 4, mbi, ir.height() / 2);
bool drawColorless = btn->palette.currentColorGroup() == QPalette::Active;
if (drawColorless && tds == kThemeStateInactive)
@@ -3602,14 +3493,14 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
if (btn->state & State_On)
state = QIcon::On;
QPixmap pixmap = btn->icon.pixmap(btn->iconSize, mode, state);
- contentW += pixmap.width() + PushButtonContentPadding;
+ contentW += pixmap.width() + QMacStylePrivate::PushButtonContentPadding;
int iconLeftOffset = freeContentRect.x() + (freeContentRect.width() - contentW) / 2;
int iconTopOffset = freeContentRect.y() + (freeContentRect.height() - pixmap.height()) / 2;
QRect iconDestRect(iconLeftOffset, iconTopOffset, pixmap.width(), pixmap.height());
QRect visualIconDestRect = visualRect(btn->direction, freeContentRect, iconDestRect);
proxy()->drawItemPixmap(p, visualIconDestRect, Qt::AlignLeft | Qt::AlignVCenter, pixmap);
int newOffset = iconDestRect.x() + iconDestRect.width()
- + PushButtonContentPadding - textRect.x();
+ + QMacStylePrivate::PushButtonContentPadding - textRect.x();
textRect.adjust(newOffset, 0, newOffset, 0);
}
// Draw the text:
@@ -4352,6 +4243,15 @@ QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt,
int controlSize = getControlSize(opt, widget);
switch (sr) {
+ case SE_ItemViewItemText:
+ if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(opt)) {
+ int fw = proxy()->pixelMetric(PM_FocusFrameHMargin, opt, widget);
+ // We add the focusframeargin between icon and text in commonstyle
+ rect = QCommonStyle::subElementRect(sr, opt, widget);
+ if (vopt->features & QStyleOptionViewItemV2::HasDecoration)
+ rect.adjust(-fw, 0, 0, 0);
+ }
+ break;
case SE_ToolBoxTabContents:
rect = QCommonStyle::subElementRect(sr, opt, widget);
break;
@@ -4369,9 +4269,9 @@ QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt,
case SE_HeaderLabel:
if (qstyleoption_cast<const QStyleOptionHeader *>(opt)) {
rect = QWindowsStyle::subElementRect(sr, opt, widget);
- if (widget && widget->height() <= qt_mac_aqua_get_metric(kThemeMetricListHeaderHeight)){
- // We need to allow the text a bit more space when the header is as
- // small as kThemeMetricListHeaderHeight, otherwise it gets clipped:
+ if (widget && widget->height() <= 22){
+ // We need to allow the text a bit more space when the header is
+ // small, otherwise it gets clipped:
rect.setY(0);
rect.setHeight(widget->height());
}
@@ -4398,8 +4298,9 @@ QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt,
HIRect outRect;
HIThemeGetButtonShape(&inRect, &bdi, &shape);
ptrHIShapeGetBounds(shape, &outRect);
- rect = QRect(int(outRect.origin.x), int(outRect.origin.y),
- int(contentRect.origin.x - outRect.origin.x), int(outRect.size.height));
+ rect = QRect(int(outRect.origin.x + DisclosureOffset), int(outRect.origin.y),
+ int(contentRect.origin.x - outRect.origin.x + DisclosureOffset),
+ int(outRect.size.height));
break;
}
case SE_TabWidgetLeftCorner:
@@ -5746,8 +5647,8 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
// By default, we fit the contents inside a normal rounded push button.
// Do this by add enough space around the contents so that rounded
// borders (including highlighting when active) will show.
- sz.rwidth() += PushButtonLeftOffset + PushButtonRightOffset + 12;
- sz.rheight() += PushButtonTopOffset + PushButtonBottomOffset;
+ sz.rwidth() += QMacStylePrivate::PushButtonLeftOffset + QMacStylePrivate::PushButtonRightOffset + 12;
+ sz.rheight() += QMacStylePrivate::PushButtonTopOffset + QMacStylePrivate::PushButtonBottomOffset;
break;
case QStyle::CT_MenuItem:
if (const QStyleOptionMenuItem *mi = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) {
@@ -5839,6 +5740,13 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
sz = sz.expandedTo(QSize(sz.width(), minimumSize));
}
break;
+ case CT_ItemViewItem:
+ if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(opt)) {
+ sz = QCommonStyle::sizeFromContents(ct, vopt, csz, widget);
+ sz.setHeight(sz.height() + 2);
+ }
+ break;
+
default:
sz = QWindowsStyle::sizeFromContents(ct, opt, csz, widget);
}
diff --git a/src/gui/styles/qmacstyle_mac_p.h b/src/gui/styles/qmacstyle_mac_p.h
new file mode 100644
index 0000000..5a0ba4c
--- /dev/null
+++ b/src/gui/styles/qmacstyle_mac_p.h
@@ -0,0 +1,239 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMACSTYLE_MAC_P_H
+#define QMACSTYLE_MAC_P_H
+
+#include <qmacstyle_mac.h>
+#include <private/qapplication_p.h>
+#include <private/qcombobox_p.h>
+#include <private/qmacstylepixmaps_mac_p.h>
+#include <private/qpaintengine_mac_p.h>
+#include <private/qpainter_p.h>
+#include <private/qprintengine_mac_p.h>
+#include <private/qstylehelper_p.h>
+#include <qapplication.h>
+#include <qbitmap.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qdialogbuttonbox.h>
+#include <qdockwidget.h>
+#include <qevent.h>
+#include <qfocusframe.h>
+#include <qformlayout.h>
+#include <qgroupbox.h>
+#include <qhash.h>
+#include <qheaderview.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qlistview.h>
+#include <qmainwindow.h>
+#include <qmap.h>
+#include <qmenubar.h>
+#include <qpaintdevice.h>
+#include <qpainter.h>
+#include <qpixmapcache.h>
+#include <qpointer.h>
+#include <qprogressbar.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qrubberband.h>
+#include <qsizegrip.h>
+#include <qspinbox.h>
+#include <qsplitter.h>
+#include <qstyleoption.h>
+#include <qtextedit.h>
+#include <qtextstream.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtreeview.h>
+#include <qtableview.h>
+#include <qwizard.h>
+#include <qdebug.h>
+#include <qlibrary.h>
+#include <qdatetimeedit.h>
+#include <qmath.h>
+#include <QtGui/qgraphicsproxywidget.h>
+#include <QtGui/qgraphicsview.h>
+#include <private/qt_cocoa_helpers_mac_p.h>
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+QT_BEGIN_NAMESPACE
+
+#if (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5)
+enum {
+ kThemePushButtonTextured = 31,
+ kThemePushButtonTexturedSmall = 32,
+ kThemePushButtonTexturedMini = 33
+};
+
+/* Search fields */
+enum {
+ kHIThemeFrameTextFieldRound = 1000,
+ kHIThemeFrameTextFieldRoundSmall = 1001,
+ kHIThemeFrameTextFieldRoundMini = 1002
+};
+#endif
+
+/*
+ AHIG:
+ Apple Human Interface Guidelines
+ http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/
+
+ Builder:
+ Apple Interface Builder v. 3.1.1
+*/
+
+// this works as long as we have at most 16 different control types
+#define CT1(c) CT2(c, c)
+#define CT2(c1, c2) ((uint(c1) << 16) | uint(c2))
+
+enum QAquaWidgetSize { QAquaSizeLarge = 0, QAquaSizeSmall = 1, QAquaSizeMini = 2,
+ QAquaSizeUnknown = -1 };
+
+#define SIZE(large, small, mini) \
+ (controlSize == QAquaSizeLarge ? (large) : controlSize == QAquaSizeSmall ? (small) : (mini))
+
+// same as return SIZE(...) but optimized
+#define return_SIZE(large, small, mini) \
+ do { \
+ static const int sizes[] = { (large), (small), (mini) }; \
+ return sizes[controlSize]; \
+ } while (0)
+
+class QMacStylePrivate : public QObject
+{
+ Q_OBJECT
+
+public:
+ QMacStylePrivate(QMacStyle *style);
+
+ // Ideally these wouldn't exist, but since they already exist we need some accessors.
+ static const int PushButtonLeftOffset;
+ static const int PushButtonTopOffset;
+ static const int PushButtonRightOffset;
+ static const int PushButtonBottomOffset;
+ static const int MiniButtonH;
+ static const int SmallButtonH;
+ static const int BevelButtonW;
+ static const int BevelButtonH;
+ static const int PushButtonContentPadding;
+
+
+ // Stuff from QAquaAnimate:
+ bool addWidget(QWidget *);
+ void removeWidget(QWidget *);
+
+ enum Animates { AquaPushButton, AquaProgressBar, AquaListViewItemOpen };
+ bool animatable(Animates, const QWidget *) const;
+ void stopAnimate(Animates, QWidget *);
+ void startAnimate(Animates, QWidget *);
+ static ThemeDrawState getDrawState(QStyle::State flags);
+ QAquaWidgetSize aquaSizeConstrain(const QStyleOption *option, const QWidget *widg,
+ QStyle::ContentsType ct = QStyle::CT_CustomBase,
+ QSize szHint=QSize(-1, -1), QSize *insz = 0) const;
+ void getSliderInfo(QStyle::ComplexControl cc, const QStyleOptionSlider *slider,
+ HIThemeTrackDrawInfo *tdi, const QWidget *needToRemoveMe);
+ bool doAnimate(Animates);
+ inline int animateSpeed(Animates) const { return 33; }
+
+ // Utility functions
+ void drawColorlessButton(const HIRect &macRect, HIThemeButtonDrawInfo *bdi,
+ QPainter *p, const QStyleOption *opt) const;
+
+ QSize pushButtonSizeFromContents(const QStyleOptionButton *btn) const;
+
+ HIRect pushButtonContentBounds(const QStyleOptionButton *btn,
+ const HIThemeButtonDrawInfo *bdi) const;
+
+ void initComboboxBdi(const QStyleOptionComboBox *combo, HIThemeButtonDrawInfo *bdi,
+ const QWidget *widget, const ThemeDrawState &tds);
+
+ static HIRect comboboxInnerBounds(const HIRect &outerBounds, int buttonKind);
+
+ static QRect comboboxEditBounds(const QRect &outerBounds, const HIThemeButtonDrawInfo &bdi);
+
+ static void drawCombobox(const HIRect &outerBounds, const HIThemeButtonDrawInfo &bdi, QPainter *p);
+ static void drawTableHeader(const HIRect &outerBounds, bool drawTopBorder, bool drawLeftBorder,
+ const HIThemeButtonDrawInfo &bdi, QPainter *p);
+ bool contentFitsInPushButton(const QStyleOptionButton *btn, HIThemeButtonDrawInfo *bdi,
+ ThemeButtonKind buttonKindToCheck) const;
+ void initHIThemePushButton(const QStyleOptionButton *btn, const QWidget *widget,
+ const ThemeDrawState tds,
+ HIThemeButtonDrawInfo *bdi) const;
+ QPixmap generateBackgroundPattern() const;
+protected:
+ bool eventFilter(QObject *, QEvent *);
+ void timerEvent(QTimerEvent *);
+
+private slots:
+ void startAnimationTimer();
+
+public:
+ QPointer<QPushButton> defaultButton; //default push buttons
+ int timerID;
+ QList<QPointer<QWidget> > progressBars; //existing progress bars that need animation
+
+ struct ButtonState {
+ int frame;
+ enum { ButtonDark, ButtonLight } dir;
+ } buttonState;
+ UInt8 progressFrame;
+ QPointer<QFocusFrame> focusWidget;
+ CFAbsoluteTime defaultButtonStart;
+ QMacStyle *q;
+ bool mouseDown;
+};
+
+QT_END_NAMESPACE
+
+#endif // QMACSTYLE_MAC_P_H
diff --git a/src/gui/styles/qmacstylepixmaps_mac_p.h b/src/gui/styles/qmacstylepixmaps_mac_p.h
index 6a5e0e6..58038c3 100644
--- a/src/gui/styles/qmacstylepixmaps_mac_p.h
+++ b/src/gui/styles/qmacstylepixmaps_mac_p.h
@@ -39,6 +39,9 @@
**
****************************************************************************/
+#ifndef QMACSTYLEPIXMAPS_MAC_P_H
+#define QMACSTYLEPIXMAPS_MAC_P_H
+
//
// W A R N I N G
// -------------
@@ -65,3 +68,5 @@ static const char * const qt_mac_toolbar_ext[]={
"aab###bb###baa",
"ab###bb###baaa",
".###..###.aaaa"};
+
+#endif // QMACSTYLEPIXMAPS_MAC_P_H
diff --git a/src/gui/styles/qstyle.cpp b/src/gui/styles/qstyle.cpp
index 429dafe..4cfa93f 100644
--- a/src/gui/styles/qstyle.cpp
+++ b/src/gui/styles/qstyle.cpp
@@ -325,7 +325,7 @@ static int unpackControlTypes(QSizePolicy::ControlTypes controls, QSizePolicy::C
control over size of header items and row and column sizes.
\sa QStyleOption, QStylePainter, {Styles Example},
- {Implementing Styles and Style Aware Widgets}, QStyledItemDelegate
+ {Styles &amp Style Aware Widgets}, QStyledItemDelegate
*/
/*!
diff --git a/src/gui/styles/styles.pri b/src/gui/styles/styles.pri
index f920032..0a96272 100644
--- a/src/gui/styles/styles.pri
+++ b/src/gui/styles/styles.pri
@@ -46,7 +46,8 @@ x11{
contains( styles, mac ) {
HEADERS += \
styles/qmacstyle_mac.h \
- styles/qmacstylepixmaps_mac_p.h
+ styles/qmacstylepixmaps_mac_p.h \
+ styles/qmacstyle_mac_p.h
OBJECTIVE_SOURCES += styles/qmacstyle_mac.mm
!contains( styles, windows ) {
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index c7817c6..84c1d96 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -363,23 +363,24 @@ QSizeF QStaticText::size() const
}
QStaticTextPrivate::QStaticTextPrivate()
- : textWidth(-1.0), items(0), itemCount(0), glyphPool(0), positionPool(0),
+ : textWidth(-1.0), items(0), itemCount(0), glyphPool(0), positionPool(0), charPool(0),
needsRelayout(true), useBackendOptimizations(false), textFormat(Qt::AutoText)
{
}
QStaticTextPrivate::QStaticTextPrivate(const QStaticTextPrivate &other)
: text(other.text), font(other.font), textWidth(other.textWidth), matrix(other.matrix),
- items(0), itemCount(0), glyphPool(0), positionPool(0), needsRelayout(true),
+ items(0), itemCount(0), glyphPool(0), positionPool(0), charPool(0), needsRelayout(true),
useBackendOptimizations(other.useBackendOptimizations), textFormat(other.textFormat)
{
}
QStaticTextPrivate::~QStaticTextPrivate()
{
- delete[] items;
+ delete[] items;
delete[] glyphPool;
delete[] positionPool;
+ delete[] charPool;
}
QStaticTextPrivate *QStaticTextPrivate::get(const QStaticText *q)
@@ -395,15 +396,8 @@ namespace {
class DrawTextItemRecorder: public QPaintEngine
{
public:
- DrawTextItemRecorder(int expectedItemCount, QStaticTextItem *items,
- int expectedGlyphCount, QFixedPoint *positionPool, glyph_t *glyphPool)
- : m_items(items),
- m_itemCount(0), m_glyphCount(0),
- m_expectedItemCount(expectedItemCount),
- m_expectedGlyphCount(expectedGlyphCount),
- m_glyphPool(glyphPool),
- m_positionPool(positionPool),
- m_dirtyPen(false)
+ DrawTextItemRecorder(bool useBackendOptimizations, int numChars)
+ : m_dirtyPen(false), m_useBackendOptimizations(useBackendOptimizations)
{
}
@@ -415,26 +409,19 @@ namespace {
virtual void drawTextItem(const QPointF &position, const QTextItem &textItem)
{
- const QTextItemInt &ti = static_cast<const QTextItemInt &>(textItem);
-
- m_itemCount++;
- m_glyphCount += ti.glyphs.numGlyphs;
- if (m_items == 0)
- return;
-
- Q_ASSERT(m_itemCount <= m_expectedItemCount);
- Q_ASSERT(m_glyphCount <= m_expectedGlyphCount);
-
- QStaticTextItem *currentItem = (m_items + (m_itemCount - 1));
- currentItem->fontEngine = ti.fontEngine;
- currentItem->font = ti.font();
- currentItem->chars = ti.chars;
- currentItem->numChars = ti.num_chars;
- currentItem->numGlyphs = ti.glyphs.numGlyphs;
- currentItem->glyphs = m_glyphPool;
- currentItem->glyphPositions = m_positionPool;
+ const QTextItemInt &ti = static_cast<const QTextItemInt &>(textItem);
+
+ QStaticTextItem currentItem;
+ currentItem.fontEngine = ti.fontEngine;
+ currentItem.font = ti.font();
+ currentItem.charOffset = m_chars.size();
+ currentItem.numChars = ti.num_chars;
+ currentItem.numGlyphs = ti.glyphs.numGlyphs;
+ currentItem.glyphOffset = m_glyphs.size(); // Store offset into glyph pool
+ currentItem.positionOffset = m_glyphs.size(); // Offset into position pool
+ currentItem.useBackendOptimizations = m_useBackendOptimizations;
if (m_dirtyPen)
- currentItem->color = state->pen().color();
+ currentItem.color = state->pen().color();
QTransform matrix = state->transform();
matrix.translate(position.x(), position.y());
@@ -447,13 +434,21 @@ namespace {
Q_ASSERT(size == ti.glyphs.numGlyphs);
Q_ASSERT(size == positions.size());
- memmove(currentItem->glyphs, glyphs.constData(), sizeof(glyph_t) * size);
- memmove(currentItem->glyphPositions, positions.constData(), sizeof(QFixedPoint) * size);
+ m_glyphs.resize(m_glyphs.size() + size);
+ m_positions.resize(m_glyphs.size());
+ m_chars.resize(m_chars.size() + ti.num_chars);
- m_glyphPool += size;
- m_positionPool += size;
- }
+ glyph_t *glyphsDestination = m_glyphs.data() + currentItem.glyphOffset;
+ qMemCopy(glyphsDestination, glyphs.constData(), sizeof(glyph_t) * currentItem.numGlyphs);
+ QFixedPoint *positionsDestination = m_positions.data() + currentItem.positionOffset;
+ qMemCopy(positionsDestination, positions.constData(), sizeof(QFixedPoint) * currentItem.numGlyphs);
+
+ QChar *charsDestination = m_chars.data() + currentItem.charOffset;
+ qMemCopy(charsDestination, ti.chars, sizeof(QChar) * currentItem.numChars);
+
+ m_items.append(currentItem);
+ }
virtual bool begin(QPaintDevice *) { return true; }
virtual bool end() { return true; }
@@ -463,38 +458,42 @@ namespace {
return User;
}
- int itemCount() const
+ QVector<QStaticTextItem> items() const
{
- return m_itemCount;
+ return m_items;
}
- int glyphCount() const
+ QVector<QFixedPoint> positions() const
{
- return m_glyphCount;
+ return m_positions;
}
- private:
- QStaticTextItem *m_items;
- int m_itemCount;
- int m_glyphCount;
- int m_expectedItemCount;
- int m_expectedGlyphCount;
+ QVector<glyph_t> glyphs() const
+ {
+ return m_glyphs;
+ }
+
+ QVector<QChar> chars() const
+ {
+ return m_chars;
+ }
- glyph_t *m_glyphPool;
- QFixedPoint *m_positionPool;
+ private:
+ QVector<QStaticTextItem> m_items;
+ QVector<QFixedPoint> m_positions;
+ QVector<glyph_t> m_glyphs;
+ QVector<QChar> m_chars;
bool m_dirtyPen;
+ bool m_useBackendOptimizations;
};
class DrawTextItemDevice: public QPaintDevice
{
public:
- DrawTextItemDevice(int expectedItemCount = -1, QStaticTextItem *items = 0,
- int expectedGlyphCount = -1, QFixedPoint *positionPool = 0,
- glyph_t *glyphPool = 0)
+ DrawTextItemDevice(bool useBackendOptimizations, int numChars)
{
- m_paintEngine = new DrawTextItemRecorder(expectedItemCount, items,
- expectedGlyphCount, positionPool, glyphPool);
+ m_paintEngine = new DrawTextItemRecorder(useBackendOptimizations, numChars);
}
~DrawTextItemDevice()
@@ -538,14 +537,24 @@ namespace {
return m_paintEngine;
}
- int itemCount() const
+ QVector<glyph_t> glyphs() const
{
- return m_paintEngine->itemCount();
+ return m_paintEngine->glyphs();
}
- int glyphCount() const
+ QVector<QFixedPoint> positions() const
{
- return m_paintEngine->glyphCount();
+ return m_paintEngine->positions();
+ }
+
+ QVector<QStaticTextItem> items() const
+ {
+ return m_paintEngine->items();
+ }
+
+ QVector<QChar> chars() const
+ {
+ return m_paintEngine->chars();
}
private:
@@ -616,42 +625,42 @@ void QStaticTextPrivate::init()
delete[] items;
delete[] glyphPool;
delete[] positionPool;
+ delete[] charPool;
position = QPointF(0, 0);
- // Draw once to count number of items and glyphs, so that we can use as little memory
- // as possible to store the data
- DrawTextItemDevice counterDevice;
+ DrawTextItemDevice device(useBackendOptimizations, text.size());
{
- QPainter painter(&counterDevice);
+ QPainter painter(&device);
painter.setFont(font);
painter.setTransform(matrix);
paintText(QPointF(0, 0), &painter);
-
}
- itemCount = counterDevice.itemCount();
+ QVector<QStaticTextItem> deviceItems = device.items();
+ QVector<QFixedPoint> positions = device.positions();
+ QVector<glyph_t> glyphs = device.glyphs();
+ QVector<QChar> chars = device.chars();
+
+ itemCount = deviceItems.size();
items = new QStaticTextItem[itemCount];
- if (useBackendOptimizations) {
- for (int i=0; i<itemCount; ++i)
- items[i].useBackendOptimizations = true;
- }
+ glyphPool = new glyph_t[glyphs.size()];
+ qMemCopy(glyphPool, glyphs.constData(), glyphs.size() * sizeof(glyph_t));
+ positionPool = new QFixedPoint[positions.size()];
+ qMemCopy(positionPool, positions.constData(), positions.size() * sizeof(QFixedPoint));
- int glyphCount = counterDevice.glyphCount();
- glyphPool = new glyph_t[glyphCount];
- positionPool = new QFixedPoint[glyphCount];
+ charPool = new QChar[chars.size()];
+ qMemCopy(charPool, chars.constData(), chars.size() * sizeof(QChar));
- // Draw again to actually record the items and glyphs
- DrawTextItemDevice recorderDevice(itemCount, items, glyphCount, positionPool, glyphPool);
- {
- QPainter painter(&recorderDevice);
- painter.setFont(font);
- painter.setTransform(matrix);
+ for (int i=0; i<itemCount; ++i) {
+ items[i] = deviceItems.at(i);
- paintText(QPointF(0, 0), &painter);
+ items[i].glyphs = glyphPool + items[i].glyphOffset;
+ items[i].glyphPositions = positionPool + items[i].positionOffset;
+ items[i].chars = charPool + items[i].charOffset;
}
needsRelayout = false;
diff --git a/src/gui/text/qstatictext_p.h b/src/gui/text/qstatictext_p.h
index f017ed1..2ab5579 100644
--- a/src/gui/text/qstatictext_p.h
+++ b/src/gui/text/qstatictext_p.h
@@ -88,9 +88,18 @@ public:
userData = newUserData;
}
- QFixedPoint *glyphPositions; // 8 bytes per glyph
- glyph_t *glyphs; // 4 bytes per glyph
- const QChar *chars; // 2 bytes per glyph
+ union {
+ QFixedPoint *glyphPositions; // 8 bytes per glyph
+ int positionOffset;
+ };
+ union {
+ glyph_t *glyphs; // 4 bytes per glyph
+ int glyphOffset;
+ };
+ union {
+ QChar *chars; // 2 bytes per glyph
+ int charOffset;
+ };
// =================
// 14 bytes per glyph
@@ -134,14 +143,16 @@ public:
QTransform matrix; // 80 bytes per text
QStaticTextItem *items; // 4 bytes per text
int itemCount; // 4 bytes per text
+
glyph_t *glyphPool; // 4 bytes per text
QFixedPoint *positionPool; // 4 bytes per text
+ QChar *charPool; // 4 bytes per text
unsigned char needsRelayout : 1;
unsigned char useBackendOptimizations : 1; // 1 byte per text
unsigned char textFormat : 2;
// ================
- // 163 bytes per text
+ // 167 bytes per text
static QStaticTextPrivate *get(const QStaticText *q);
};
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 94d9d67..412c909 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -858,7 +858,8 @@ QRectF QTextLayout::boundingRect() const
const QScriptLine &si = d->lines[i];
xmin = qMin(xmin, si.x);
ymin = qMin(ymin, si.y);
- xmax = qMax(xmax, si.x+qMax(si.width, si.textWidth));
+ QFixed lineWidth = si.width < QFIXED_MAX ? qMax(si.width, si.textWidth) : si.textWidth;
+ xmax = qMax(xmax, si.x+lineWidth);
// ### shouldn't the ascent be used in ymin???
ymax = qMax(ymax, si.y+si.height());
}
diff --git a/src/gui/widgets/qpushbutton.cpp b/src/gui/widgets/qpushbutton.cpp
index 1a9adcc..8a18ed0 100644
--- a/src/gui/widgets/qpushbutton.cpp
+++ b/src/gui/widgets/qpushbutton.cpp
@@ -58,6 +58,10 @@
#include "qdebug.h"
#include "qlayoutitem.h"
#include "qdialogbuttonbox.h"
+#ifdef Q_WS_MAC
+#include "qmacstyle_mac.h"
+#include "private/qmacstyle_mac_p.h"
+#endif // Q_WS_MAC
#ifndef QT_NO_ACCESSIBILITY
#include "qaccessible.h"
@@ -679,6 +683,37 @@ bool QPushButton::event(QEvent *e)
return QAbstractButton::event(e);
}
+#ifdef Q_WS_MAC
+/*! \reimp */
+bool QPushButton::hitButton(const QPoint &pos) const
+{
+ // This is only required if we are using the native style, so check that first.
+ QMacStyle *macStyle = qobject_cast<QMacStyle *>(style());
+ // If this is a flat button we just bail out.
+ if(isFlat() || (0 == macStyle))
+ return QAbstractButton::hitButton(pos);
+ // Now that we know we are using the native style, let's proceed.
+ Q_D(const QPushButton);
+ QPushButtonPrivate *nonConst = const_cast<QPushButtonPrivate *>(d);
+ // In OSX buttons are round, which causes the hit method to be special.
+ // We cannot simply relay on detecting if something is inside the rect or not,
+ // we need to check if it is inside the "rounded area" or not. A point might
+ // be inside the rect but not inside the rounded area.
+ // Notice this method is only reimplemented for OSX.
+ return nonConst->hitButton(pos);
+}
+
+bool QPushButtonPrivate::hitButton(const QPoint &pos)
+{
+ Q_Q(QPushButton);
+ QRect roundedRect(q->rect().left() + QMacStylePrivate::PushButtonLeftOffset,
+ q->rect().top() + QMacStylePrivate::PushButtonContentPadding,
+ q->rect().width() - QMacStylePrivate::PushButtonRightOffset,
+ q->rect().height() - QMacStylePrivate::PushButtonBottomOffset);
+ return roundedRect.contains(pos);
+}
+#endif // Q_WS_MAC
+
#ifdef QT3_SUPPORT
/*!
Use one of the constructors that doesn't take the \a name
diff --git a/src/gui/widgets/qpushbutton.h b/src/gui/widgets/qpushbutton.h
index 2a4823d..cf28753 100644
--- a/src/gui/widgets/qpushbutton.h
+++ b/src/gui/widgets/qpushbutton.h
@@ -91,6 +91,9 @@ public Q_SLOTS:
protected:
bool event(QEvent *e);
+#ifdef Q_WS_MAC
+ bool hitButton(const QPoint &pos) const;
+#endif // Q_WS_MAC
void paintEvent(QPaintEvent *);
void keyPressEvent(QKeyEvent *);
void focusInEvent(QFocusEvent *);
diff --git a/src/gui/widgets/qpushbutton_p.h b/src/gui/widgets/qpushbutton_p.h
index f2ee09d..6feb726 100644
--- a/src/gui/widgets/qpushbutton_p.h
+++ b/src/gui/widgets/qpushbutton_p.h
@@ -69,6 +69,9 @@ public:
inline void init() { resetLayoutItemMargins(); }
static QPushButtonPrivate* get(QPushButton *b) { return b->d_func(); }
+#ifdef Q_WS_MAC
+ bool hitButton(const QPoint &pos);
+#endif
#ifndef QT_NO_MENU
QPoint adjustedMenuPosition();
#endif
diff --git a/src/imports/folderlistmodel/plugin.cpp b/src/imports/folderlistmodel/plugin.cpp
index 555df3c..1ec6106 100644
--- a/src/imports/folderlistmodel/plugin.cpp
+++ b/src/imports/folderlistmodel/plugin.cpp
@@ -53,7 +53,9 @@ public:
virtual void registerTypes(const char *uri)
{
Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.labs.folderlistmodel"));
+#ifndef QT_NO_DIRMODEL
qmlRegisterType<QDeclarativeFolderListModel>(uri,1,0,"FolderListModel");
+#endif
}
};
//![class decl]
diff --git a/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp b/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp
index fccb9d4..9cf81ca 100644
--- a/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp
+++ b/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp
@@ -45,6 +45,8 @@
#include <QDebug>
#include <qdeclarativecontext.h>
+#ifndef QT_NO_DIRMODEL
+
QT_BEGIN_NAMESPACE
class QDeclarativeFolderListModelPrivate
@@ -397,3 +399,5 @@ void QDeclarativeFolderListModel::setShowOnlyReadable(bool on)
//![code]
QT_END_NAMESPACE
+
+#endif // QT_NO_DIRMODEL
diff --git a/src/imports/folderlistmodel/qdeclarativefolderlistmodel.h b/src/imports/folderlistmodel/qdeclarativefolderlistmodel.h
index ea7d701..1bab5f84 100644
--- a/src/imports/folderlistmodel/qdeclarativefolderlistmodel.h
+++ b/src/imports/folderlistmodel/qdeclarativefolderlistmodel.h
@@ -47,6 +47,8 @@
#include <QUrl>
#include <QAbstractListModel>
+#ifndef QT_NO_DIRMODEL
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -152,4 +154,6 @@ QML_DECLARE_TYPE(QDeclarativeFolderListModel)
QT_END_HEADER
+#endif // QT_NO_DIRMODEL
+
#endif // QDECLARATIVEFOLDERLISTMODEL_H
diff --git a/src/imports/gestures/gestures.pro b/src/imports/gestures/gestures.pro
index f55c00e..4ef7931 100644
--- a/src/imports/gestures/gestures.pro
+++ b/src/imports/gestures/gestures.pro
@@ -1,4 +1,4 @@
-TARGET = gesturesqmlplugin
+TARGET = qmlgesturesplugin
TARGETPATH = Qt/labs/gestures
include(../qimportbase.pri)
@@ -17,7 +17,7 @@ symbian:{
load(data_caging_paths)
include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
- importFiles.sources = gesturesqmlplugin.dll qmldir
+ importFiles.sources = qmlgesturesplugin.dll qmldir
importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH
DEPLOYMENT = importFiles
diff --git a/src/imports/gestures/plugin.cpp b/src/imports/gestures/plugin.cpp
index b8a9751..11f2392 100644
--- a/src/imports/gestures/plugin.cpp
+++ b/src/imports/gestures/plugin.cpp
@@ -61,5 +61,5 @@ QT_END_NAMESPACE
#include "plugin.moc"
-Q_EXPORT_PLUGIN2(gesturesqmlplugin, QT_PREPEND_NAMESPACE(GestureAreaQmlPlugin));
+Q_EXPORT_PLUGIN2(qmlgesturesplugin, QT_PREPEND_NAMESPACE(GestureAreaQmlPlugin));
diff --git a/src/imports/gestures/qmldir b/src/imports/gestures/qmldir
index 9d9d587..2a31920 100644
--- a/src/imports/gestures/qmldir
+++ b/src/imports/gestures/qmldir
@@ -1 +1 @@
-plugin gesturesqmlplugin
+plugin qmlgesturesplugin
diff --git a/src/imports/particles/particles.cpp b/src/imports/particles/particles.cpp
index ae3f318..ca2b060 100644
--- a/src/imports/particles/particles.cpp
+++ b/src/imports/particles/particles.cpp
@@ -65,5 +65,5 @@ QT_END_NAMESPACE
#include "particles.moc"
-Q_EXPORT_PLUGIN2(particlesqmlmodule, QT_PREPEND_NAMESPACE(QParticlesQmlModule));
+Q_EXPORT_PLUGIN2(qmlparticlesplugin, QT_PREPEND_NAMESPACE(QParticlesQmlModule));
diff --git a/src/imports/particles/particles.pro b/src/imports/particles/particles.pro
index 79ac543..9fd4db5 100644
--- a/src/imports/particles/particles.pro
+++ b/src/imports/particles/particles.pro
@@ -1,4 +1,4 @@
-TARGET = particles
+TARGET = qmlparticlesplugin
TARGETPATH = Qt/labs/particles
include(../qimportbase.pri)
@@ -21,7 +21,7 @@ symbian:{
load(data_caging_paths)
include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
- importFiles.sources = particles.dll qmldir
+ importFiles.sources = qmlparticlesplugin.dll qmldir
importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH
DEPLOYMENT = importFiles
diff --git a/src/imports/particles/qmldir b/src/imports/particles/qmldir
index 15456bb..aeebd2c 100644
--- a/src/imports/particles/qmldir
+++ b/src/imports/particles/qmldir
@@ -1 +1 @@
-plugin particles
+plugin qmlparticlesplugin
diff --git a/src/imports/webkit/plugin.cpp b/src/imports/webkit/plugin.cpp
index e3d73ec..c8e56ba 100644
--- a/src/imports/webkit/plugin.cpp
+++ b/src/imports/webkit/plugin.cpp
@@ -63,5 +63,5 @@ QT_END_NAMESPACE
#include "plugin.moc"
-Q_EXPORT_PLUGIN2(webkitqmlplugin, QT_PREPEND_NAMESPACE(WebKitQmlPlugin));
+Q_EXPORT_PLUGIN2(qmlwebkitplugin, QT_PREPEND_NAMESPACE(WebKitQmlPlugin));
diff --git a/src/imports/webkit/qdeclarativewebview.cpp b/src/imports/webkit/qdeclarativewebview.cpp
index 36a25f6..050e2b7 100644
--- a/src/imports/webkit/qdeclarativewebview.cpp
+++ b/src/imports/webkit/qdeclarativewebview.cpp
@@ -150,6 +150,9 @@ public:
The item includes no scrolling, scaling,
toolbars, etc., those must be implemented around WebView. See the WebBrowser example
for a demonstration of this.
+
+ When this item has keyboard focus, all keyboard input will be sent directly to the
+ web page within.
*/
/*!
@@ -701,20 +704,12 @@ void QDeclarativeWebView::hoverMoveEvent (QGraphicsSceneHoverEvent * event)
QDeclarativeItem::hoverMoveEvent(event);
}
-bool QDeclarativeWebView::sceneEvent(QEvent *event)
-{
- if (event->type() == QEvent::KeyPress) {
- QKeyEvent *k = static_cast<QKeyEvent *>(event);
- if (k->key() == Qt::Key_Tab || k->key() == Qt::Key_Backtab) {
- if (!(k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) { //### Add MetaModifier?
- page()->event(event);
- if (event->isAccepted())
- return true;
- }
- }
- }
+bool QDeclarativeWebView::sceneEvent(QEvent *event)
+{
+ if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease)//Key events go to the page
+ return page()->event(event);
return QDeclarativeItem::sceneEvent(event);
-}
+}
/*!
diff --git a/src/imports/webkit/qmldir b/src/imports/webkit/qmldir
index 258aa2c..dcfdd06 100644
--- a/src/imports/webkit/qmldir
+++ b/src/imports/webkit/qmldir
@@ -1 +1 @@
-plugin webkitqmlplugin
+plugin qmlwebkitplugin
diff --git a/src/imports/webkit/webkit.pro b/src/imports/webkit/webkit.pro
index 77cbc4d..7b2ac66 100644
--- a/src/imports/webkit/webkit.pro
+++ b/src/imports/webkit/webkit.pro
@@ -1,4 +1,4 @@
-TARGET = webkitqmlplugin
+TARGET = qmlwebkitplugin
TARGETPATH = org/webkit
include(../qimportbase.pri)
@@ -18,7 +18,7 @@ symbian:{
load(data_caging_paths)
include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
- importFiles.sources = webkitqmlplugin.dll qmldir
+ importFiles.sources = qmlwebkitplugin.dll qmldir
importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH
DEPLOYMENT = importFiles
diff --git a/src/multimedia/audio/qaudiodeviceinfo.cpp b/src/multimedia/audio/qaudiodeviceinfo.cpp
index ff04b4e..201a03d 100644
--- a/src/multimedia/audio/qaudiodeviceinfo.cpp
+++ b/src/multimedia/audio/qaudiodeviceinfo.cpp
@@ -43,6 +43,7 @@
#include <QtMultimedia/qaudioengine.h>
#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtCore/qmap.h>
QT_BEGIN_NAMESPACE
@@ -238,7 +239,66 @@ QAudioFormat QAudioDeviceInfo::preferredFormat() const
QAudioFormat QAudioDeviceInfo::nearestFormat(const QAudioFormat &settings) const
{
- return isNull() ? QAudioFormat() : d->info->nearestFormat(settings);
+ if (isFormatSupported(settings))
+ return settings;
+
+ QAudioFormat nearest = settings;
+
+ nearest.setCodec(QLatin1String("audio/pcm"));
+
+ if (nearest.sampleType() == QAudioFormat::Unknown) {
+ QAudioFormat preferred = preferredFormat();
+ nearest.setSampleType(preferred.sampleType());
+ }
+
+ QMap<int,int> testFrequencies;
+ QList<int> frequenciesAvailable = supportedFrequencies();
+ QMap<int,int> testSampleSizes;
+ QList<int> sampleSizesAvailable = supportedSampleSizes();
+
+ // Get sorted sampleSizes (equal to and ascending values only)
+ if (sampleSizesAvailable.contains(settings.sampleSize()))
+ testSampleSizes.insert(0,settings.sampleSize());
+ sampleSizesAvailable.removeAll(settings.sampleSize());
+ foreach (int size, sampleSizesAvailable) {
+ int larger = (size > settings.sampleSize()) ? size : settings.sampleSize();
+ int smaller = (size > settings.sampleSize()) ? settings.sampleSize() : size;
+ if (size >= settings.sampleSize()) {
+ int diff = larger - smaller;
+ testSampleSizes.insert(diff, size);
+ }
+ }
+
+ // Get sorted frequencies (equal to and ascending values only)
+ if (frequenciesAvailable.contains(settings.frequency()))
+ testFrequencies.insert(0,settings.frequency());
+ frequenciesAvailable.removeAll(settings.frequency());
+ foreach (int frequency, frequenciesAvailable) {
+ int larger = (frequency > settings.frequency()) ? frequency : settings.frequency();
+ int smaller = (frequency > settings.frequency()) ? settings.frequency() : frequency;
+ if (frequency >= settings.frequency()) {
+ int diff = larger - smaller;
+ testFrequencies.insert(diff, frequency);
+ }
+ }
+
+ // Try to find nearest
+ // Check ascending frequencies, ascending sampleSizes
+ QMapIterator<int, int> sz(testSampleSizes);
+ while (sz.hasNext()) {
+ sz.next();
+ nearest.setSampleSize(sz.value());
+ QMapIterator<int, int> i(testFrequencies);
+ while (i.hasNext()) {
+ i.next();
+ nearest.setFrequency(i.value());
+ if (isFormatSupported(nearest))
+ return nearest;
+ }
+ }
+
+ //Fallback
+ return preferredFormat();
}
/*!
diff --git a/src/multimedia/audio/qaudiooutput.cpp b/src/multimedia/audio/qaudiooutput.cpp
index 371773c..cf3b79c 100644
--- a/src/multimedia/audio/qaudiooutput.cpp
+++ b/src/multimedia/audio/qaudiooutput.cpp
@@ -369,8 +369,17 @@ int QAudioOutput::notifyInterval() const
}
/*!
- Returns the amount of audio data processed since start()
+ Returns the amount of audio data processed by the class since start()
was called in microseconds.
+
+ Note: The amount of audio data played can be determined by subtracting
+ the microseconds of audio data still in the systems audio buffer.
+
+ \code
+ qint64 bytesInBuffer = bufferSize() - bytesFree();
+ qint64 usInBuffer = (qint64)(1000000) * bytesInBuffer / ( channels() * sampleSize() / 8 ) / frequency();
+ qint64 usPlayed = processedUSecs() - usInBuffer;
+ \endcode
*/
qint64 QAudioOutput::processedUSecs() const
diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro
index 93da612..852322d 100644
--- a/src/multimedia/multimedia.pro
+++ b/src/multimedia/multimedia.pro
@@ -13,7 +13,4 @@ include(video/video.pri)
symbian: {
TARGET.UID3 = 0x2001E627
- contains(CONFIG, def_files) {
- DEF_FILE=../../s60installs
- }
}
diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h
index 51cb5e8..41a896d 100644
--- a/src/network/access/qhttpnetworkconnectionchannel_p.h
+++ b/src/network/access/qhttpnetworkconnectionchannel_p.h
@@ -65,7 +65,7 @@
#include <private/qhttpnetworkrequest_p.h>
#include <private/qhttpnetworkreply_p.h>
-#include "qhttpnetworkconnection_p.h"
+#include <private/qhttpnetworkconnection_p.h>
#ifndef QT_NO_HTTP
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index fe36247..f7ada8c 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -141,6 +141,32 @@ static void ensureInitialized()
can be:
\snippet doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp 1
+ \section1 Network and Roaming support
+
+ With the addition of the \l {Bearer Management} API to Qt 4.7
+ QNetworkAccessManager gained the ability to manage network connections.
+ QNetworkAccessManager can start the network interface if the device is
+ offline and terminates the interface if the current process is the last
+ one to use the uplink. Note that some platform utilize grace periods from
+ when the last application stops using a uplink until the system actually
+ terminates the connectivity link. Roaming is equally transparent. Any
+ queued/pending network requests are automatically transferred to new
+ access point.
+
+ Clients wanting to utilize this feature should not require any changes. In fact
+ it is likely that existing platform specific connection code can simply be
+ removed from the application.
+
+ \note The network and roaming support in QNetworkAccessManager is conditional
+ upon the platform supporting connection management. The
+ \l QNetworkConfigurationManager::NetworkSessionRequired can be used to
+ detect whether QNetworkAccessManager utilizes this feature. Currently only
+ Meego/Harmattan and Symbian platforms provide connection management support.
+
+ \note This feature cannot be used in combination with the Bearer Management
+ API as provided by QtMobility. Applications have to migrate to the Qt version
+ of Bearer Management.
+
\section1 Symbian Platform Security Requirements
On Symbian, processes which use this class must have the
diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp
index 70bb0da..f91ce5f 100644
--- a/src/network/socket/qnativesocketengine_unix.cpp
+++ b/src/network/socket/qnativesocketengine_unix.cpp
@@ -851,11 +851,7 @@ qint64 QNativeSocketEnginePrivate::nativeWrite(const char *data, qint64 len)
// Symbian does not support signals natively and Open C returns EINTR when moving to offline
writtenBytes = ::write(socketDescriptor, data, len);
#else
- // loop while ::write() returns -1 and errno == EINTR, in case
- // of an interrupting signal.
- do {
- writtenBytes = qt_safe_write(socketDescriptor, data, len);
- } while (writtenBytes < 0 && errno == EINTR);
+ writtenBytes = qt_safe_write(socketDescriptor, data, len);
#endif
if (writtenBytes < 0) {
@@ -899,9 +895,7 @@ qint64 QNativeSocketEnginePrivate::nativeRead(char *data, qint64 maxSize)
#ifdef Q_OS_SYMBIAN
r = ::read(socketDescriptor, data, maxSize);
#else
- do {
- r = qt_safe_read(socketDescriptor, data, maxSize);
- } while (r == -1 && errno == EINTR);
+ r = qt_safe_read(socketDescriptor, data, maxSize);
#endif
if (r < 0) {
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index 4461358..5758b25 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -1401,7 +1401,7 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem
{
QStaticTextItem staticTextItem;
- staticTextItem.chars = ti.chars;
+ staticTextItem.chars = const_cast<QChar *>(ti.chars);
staticTextItem.fontEngine = ti.fontEngine;
staticTextItem.glyphs = glyphs.data();
staticTextItem.numChars = ti.num_chars;
diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro
index 15795d2..d6011cf 100644
--- a/src/opengl/opengl.pro
+++ b/src/opengl/opengl.pro
@@ -5,6 +5,7 @@ DEFINES += QT_BUILD_OPENGL_LIB
DEFINES += QT_NO_USING_NAMESPACE
win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x63000000
solaris-cc*:QMAKE_CXXFLAGS_RELEASE -= -O2
+irix-cc*:QMAKE_CXXFLAGS += -no_prelink -ptused
unix:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 922a96c..c8502c2 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -91,6 +91,7 @@
#include "qcolormap.h"
#include "qfile.h"
#include "qlibrary.h"
+#include <qmutex.h>
QT_BEGIN_NAMESPACE
@@ -1515,10 +1516,33 @@ bool operator!=(const QGLFormat& a, const QGLFormat& b)
return !(a == b);
}
+struct QGLContextGroupList {
+ void append(QGLContextGroup *group) {
+ QMutexLocker locker(&m_mutex);
+ m_list.append(group);
+ }
+
+ void remove(QGLContextGroup *group) {
+ QMutexLocker locker(&m_mutex);
+ m_list.removeOne(group);
+ }
+
+ QList<QGLContextGroup *> m_list;
+ QMutex m_mutex;
+};
+
+Q_GLOBAL_STATIC(QGLContextGroupList, qt_context_groups)
+
/*****************************************************************************
QGLContext implementation
*****************************************************************************/
+QGLContextGroup::QGLContextGroup(const QGLContext *context)
+ : m_context(context), m_guards(0), m_refs(1)
+{
+ qt_context_groups()->append(this);
+}
+
QGLContextGroup::~QGLContextGroup()
{
// Clear any remaining QGLSharedResourceGuard objects on the group.
@@ -1528,6 +1552,7 @@ QGLContextGroup::~QGLContextGroup()
guard->m_id = 0;
guard = guard->m_next;
}
+ qt_context_groups()->remove(this);
}
void QGLContextGroup::addGuard(QGLSharedResourceGuard *guard)
@@ -1736,7 +1761,7 @@ void QGLTextureCache::insert(QGLContext* ctx, qint64 key, QGLTexture* texture, i
QWriteLocker locker(&m_lock);
if (m_cache.totalCost() + cost > m_cache.maxCost()) {
// the cache is full - make an attempt to remove something
- const QList<qint64> keys = m_cache.keys();
+ const QList<QGLTextureCacheKey> keys = m_cache.keys();
int i = 0;
while (i < m_cache.count()
&& (m_cache.totalCost() + cost > m_cache.maxCost())) {
@@ -1746,13 +1771,26 @@ void QGLTextureCache::insert(QGLContext* ctx, qint64 key, QGLTexture* texture, i
++i;
}
}
- m_cache.insert(key, texture, cost);
+ const QGLTextureCacheKey cacheKey = {key, QGLContextPrivate::contextGroup(ctx)};
+ m_cache.insert(cacheKey, texture, cost);
+}
+
+void QGLTextureCache::remove(qint64 key)
+{
+ QWriteLocker locker(&m_lock);
+ QMutexLocker groupLocker(&qt_context_groups()->m_mutex);
+ QList<QGLContextGroup *>::const_iterator it = qt_context_groups()->m_list.constBegin();
+ while (it != qt_context_groups()->m_list.constEnd()) {
+ const QGLTextureCacheKey cacheKey = {key, *it};
+ m_cache.remove(cacheKey);
+ ++it;
+ }
}
bool QGLTextureCache::remove(QGLContext* ctx, GLuint textureId)
{
QWriteLocker locker(&m_lock);
- QList<qint64> keys = m_cache.keys();
+ QList<QGLTextureCacheKey> keys = m_cache.keys();
for (int i = 0; i < keys.size(); ++i) {
QGLTexture *tex = m_cache.object(keys.at(i));
if (tex->id == textureId && tex->context == ctx) {
@@ -1767,9 +1805,9 @@ bool QGLTextureCache::remove(QGLContext* ctx, GLuint textureId)
void QGLTextureCache::removeContextTextures(QGLContext* ctx)
{
QWriteLocker locker(&m_lock);
- QList<qint64> keys = m_cache.keys();
+ QList<QGLTextureCacheKey> keys = m_cache.keys();
for (int i = 0; i < keys.size(); ++i) {
- const qint64 &key = keys.at(i);
+ const QGLTextureCacheKey &key = keys.at(i);
if (m_cache.object(key)->context == ctx)
m_cache.remove(key);
}
@@ -1782,7 +1820,6 @@ void QGLTextureCache::removeContextTextures(QGLContext* ctx)
void QGLTextureCache::cleanupTexturesForCacheKey(qint64 cacheKey)
{
qt_gl_texture_cache()->remove(cacheKey);
- Q_ASSERT(qt_gl_texture_cache()->getTexture(cacheKey) == 0);
}
@@ -2425,7 +2462,7 @@ QGLTexture* QGLContextPrivate::bindTexture(const QImage &image, GLenum target, G
QGLTexture *QGLContextPrivate::textureCacheLookup(const qint64 key, GLenum target)
{
Q_Q(QGLContext);
- QGLTexture *texture = QGLTextureCache::instance()->getTexture(key);
+ QGLTexture *texture = QGLTextureCache::instance()->getTexture(q, key);
if (texture && texture->target == target
&& (texture->context == q || QGLContext::areSharing(q, texture->context)))
{
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index d92f963..16c225f 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -230,7 +230,7 @@ public:
static void addShare(const QGLContext *context, const QGLContext *share);
static void removeShare(const QGLContext *context);
private:
- QGLContextGroup(const QGLContext *context) : m_context(context), m_guards(0), m_refs(1) { }
+ QGLContextGroup(const QGLContext *context);
QGLExtensionFuncs m_extensionFuncs;
const QGLContext *m_context; // context group's representative
@@ -522,17 +522,33 @@ public:
QSize bindCompressedTexturePVR(const char *buf, int len);
};
+struct QGLTextureCacheKey {
+ qint64 key;
+ QGLContextGroup *group;
+};
+
+inline bool operator==(const QGLTextureCacheKey &a, const QGLTextureCacheKey &b)
+{
+ return a.key == b.key && a.group == b.group;
+}
+
+inline uint qHash(const QGLTextureCacheKey &key)
+{
+ return qHash(key.key) ^ qHash(key.group);
+}
+
+
class Q_AUTOTEST_EXPORT QGLTextureCache {
public:
QGLTextureCache();
~QGLTextureCache();
void insert(QGLContext *ctx, qint64 key, QGLTexture *texture, int cost);
- inline void remove(quint64 key);
+ void remove(qint64 key);
inline int size();
inline void setMaxCost(int newMax);
inline int maxCost();
- inline QGLTexture* getTexture(quint64 key);
+ inline QGLTexture* getTexture(QGLContext *ctx, qint64 key);
bool remove(QGLContext *ctx, GLuint textureId);
void removeContextTextures(QGLContext *ctx);
@@ -542,7 +558,7 @@ public:
static void cleanupBeforePixmapDestruction(QPixmapData* pixmap);
private:
- QCache<qint64, QGLTexture> m_cache;
+ QCache<QGLTextureCacheKey, QGLTexture> m_cache;
QReadWriteLock m_lock;
};
@@ -563,19 +579,13 @@ int QGLTextureCache::maxCost()
return m_cache.maxCost();
}
-QGLTexture* QGLTextureCache::getTexture(quint64 key)
+QGLTexture* QGLTextureCache::getTexture(QGLContext *ctx, qint64 key)
{
QReadLocker locker(&m_lock);
- return m_cache.object(key);
+ const QGLTextureCacheKey cacheKey = {key, QGLContextPrivate::contextGroup(ctx)};
+ return m_cache.object(cacheKey);
}
-void QGLTextureCache::remove(quint64 key)
-{
- QWriteLocker locker(&m_lock);
- m_cache.remove(key);
-}
-
-
extern Q_OPENGL_EXPORT QPaintEngine* qt_qgl_paint_engine();
bool qt_gl_preferGL2Engine();
diff --git a/src/opengl/qglbuffer.cpp b/src/opengl/qglbuffer.cpp
index 223243c..d6e0109 100644
--- a/src/opengl/qglbuffer.cpp
+++ b/src/opengl/qglbuffer.cpp
@@ -42,6 +42,7 @@
#include <QtOpenGL/qgl.h>
#include <QtOpenGL/private/qgl_p.h>
#include <QtOpenGL/private/qglextensions_p.h>
+#include <QtCore/qatomic.h>
#include "qglbuffer.h"
QT_BEGIN_NAMESPACE
@@ -55,6 +56,20 @@ QT_BEGIN_NAMESPACE
Buffer objects are created in the GL server so that the
client application can avoid uploading vertices, indices,
texture image data, etc every time they are needed.
+
+ QGLBuffer objects can be copied around as a reference to the
+ underlying GL buffer object:
+
+ \code
+ QGLBuffer buffer1(QGLBuffer::IndexBuffer);
+ buffer1.create();
+
+ QGLBuffer buffer2 = buffer1;
+ \endcode
+
+ QGLBuffer performs a shallow copy when objects are copied in this
+ manner, but does not implement copy-on-write semantics. The original
+ object will be affected whenever the copy is modified.
*/
/*!
@@ -116,13 +131,15 @@ class QGLBufferPrivate
{
public:
QGLBufferPrivate(QGLBuffer::Type t)
- : type(t),
+ : ref(1),
+ type(t),
guard(0),
usagePattern(QGLBuffer::StaticDraw),
actualUsagePattern(QGLBuffer::StaticDraw)
{
}
+ QAtomicInt ref;
QGLBuffer::Type type;
QGLSharedResourceGuard guard;
QGLBuffer::UsagePattern usagePattern;
@@ -130,6 +147,19 @@ public:
};
/*!
+ Constructs a new buffer object of type QGLBuffer::VertexBuffer.
+
+ Note: this constructor just creates the QGLBuffer instance. The actual
+ buffer object in the GL server is not created until create() is called.
+
+ \sa create()
+*/
+QGLBuffer::QGLBuffer()
+ : d_ptr(new QGLBufferPrivate(QGLBuffer::VertexBuffer))
+{
+}
+
+/*!
Constructs a new buffer object of \a type.
Note: this constructor just creates the QGLBuffer instance. The actual
@@ -142,6 +172,18 @@ QGLBuffer::QGLBuffer(QGLBuffer::Type type)
{
}
+/*!
+ Constructs a shallow copy of \a other.
+
+ Note: QGLBuffer does not implement copy-on-write semantics,
+ so \a other will be affected whenever the copy is modified.
+*/
+QGLBuffer::QGLBuffer(const QGLBuffer &other)
+ : d_ptr(other.d_ptr)
+{
+ d_ptr->ref.ref();
+}
+
#define ctx d->guard.context()
/*!
@@ -150,13 +192,27 @@ QGLBuffer::QGLBuffer(QGLBuffer::Type type)
*/
QGLBuffer::~QGLBuffer()
{
- Q_D(QGLBuffer);
- GLuint bufferId = d->guard.id();
- if (bufferId) {
- // Switch to the original creating context to destroy it.
- QGLShareContextScope scope(d->guard.context());
- glDeleteBuffers(1, &bufferId);
+ if (!d_ptr->ref.deref()) {
+ destroy();
+ delete d_ptr;
+ }
+}
+
+/*!
+ Assigns a shallow copy of \a other to this object.
+
+ Note: QGLBuffer does not implement copy-on-write semantics,
+ so \a other will be affected whenever the copy is modified.
+*/
+QGLBuffer &QGLBuffer::operator=(const QGLBuffer &other)
+{
+ if (d_ptr != other.d_ptr) {
+ other.d_ptr->ref.ref();
+ if (!d_ptr->ref.deref())
+ destroy();
+ d_ptr = other.d_ptr;
}
+ return *this;
}
/*!
@@ -215,7 +271,7 @@ void QGLBuffer::setUsagePattern(QGLBuffer::UsagePattern value)
This function will return false if the GL implementation
does not support buffers, or there is no current QGLContext.
- \sa isCreated(), allocate(), write()
+ \sa isCreated(), allocate(), write(), destroy()
*/
bool QGLBuffer::create()
{
@@ -242,7 +298,7 @@ bool QGLBuffer::create()
/*!
Returns true if this buffer has been created; false otherwise.
- \sa create()
+ \sa create(), destroy()
*/
bool QGLBuffer::isCreated() const
{
@@ -251,6 +307,24 @@ bool QGLBuffer::isCreated() const
}
/*!
+ Destroys this buffer object, including the storage being
+ used in the GL server. All references to the buffer will
+ become invalid.
+*/
+void QGLBuffer::destroy()
+{
+ Q_D(QGLBuffer);
+ GLuint bufferId = d->guard.id();
+ if (bufferId) {
+ // Switch to the original creating context to destroy it.
+ QGLShareContextScope scope(d->guard.context());
+ glDeleteBuffers(1, &bufferId);
+ }
+ d->guard.setId(0);
+ d->guard.setContext(0);
+}
+
+/*!
Reads the \a count bytes in this buffer starting at \a offset
into \a data. Returns true on success; false if reading from
the buffer is not supported. Buffer reading is not supported
diff --git a/src/opengl/qglbuffer.h b/src/opengl/qglbuffer.h
index 2fe1f1f..a1b45ff 100644
--- a/src/opengl/qglbuffer.h
+++ b/src/opengl/qglbuffer.h
@@ -64,9 +64,13 @@ public:
PixelUnpackBuffer = 0x88EC // GL_PIXEL_UNPACK_BUFFER
};
+ QGLBuffer();
explicit QGLBuffer(QGLBuffer::Type type);
+ QGLBuffer(const QGLBuffer &other);
~QGLBuffer();
+ QGLBuffer &operator=(const QGLBuffer &other);
+
enum UsagePattern
{
StreamDraw = 0x88E0, // GL_STREAM_DRAW
@@ -95,6 +99,8 @@ public:
bool create();
bool isCreated() const;
+ void destroy();
+
bool bind() const;
void release() const;
@@ -114,9 +120,8 @@ public:
bool unmap();
private:
- QScopedPointer<QGLBufferPrivate> d_ptr;
+ QGLBufferPrivate *d_ptr;
- Q_DISABLE_COPY(QGLBuffer)
Q_DECLARE_PRIVATE(QGLBuffer)
};
diff --git a/src/opengl/qpaintengine_opengl.cpp b/src/opengl/qpaintengine_opengl.cpp
index 28d37bc..12c487d 100644
--- a/src/opengl/qpaintengine_opengl.cpp
+++ b/src/opengl/qpaintengine_opengl.cpp
@@ -4999,7 +4999,7 @@ void QOpenGLPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textIte
{
QStaticTextItem staticTextItem;
- staticTextItem.chars = ti.chars;
+ staticTextItem.chars = const_cast<QChar *>(ti.chars);
staticTextItem.fontEngine = ti.fontEngine;
staticTextItem.glyphs = glyphs.data();
staticTextItem.numChars = ti.num_chars;
diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.h b/src/plugins/bearer/corewlan/qcorewlanengine.h
index 3c24c54..4d90648 100644
--- a/src/plugins/bearer/corewlan/qcorewlanengine.h
+++ b/src/plugins/bearer/corewlan/qcorewlanengine.h
@@ -78,6 +78,10 @@ public:
QNetworkSession::State sessionStateForId(const QString &id);
+ quint64 bytesWritten(const QString &id);
+ quint64 bytesReceived(const QString &id);
+ quint64 startTime(const QString &id);
+
QNetworkConfigurationManager::Capabilities capabilities() const;
QNetworkSessionPrivate *createSessionBackend();
@@ -100,6 +104,8 @@ private:
bool scanning;
QScanThread *scanThread;
+ quint64 getBytes(const QString &interfaceName,bool b);
+
protected:
void startNetworkChangeLoop();
diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm
index 3206833..a9cb65b 100644
--- a/src/plugins/bearer/corewlan/qcorewlanengine.mm
+++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm
@@ -67,6 +67,9 @@
#include <private/qt_cocoa_helpers_mac_p.h>
#include "private/qcore_mac_p.h"
+#include <net/if.h>
+#include <ifaddrs.h>
+
@interface QNSListener : NSObject
{
NSNotificationCenter *center;
@@ -157,7 +160,7 @@ void QScanThread::quit()
void QScanThread::run()
{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ QMacCocoaAutoReleasePool pool;
QStringList found;
mutex.lock();
CWInterface *currentInterface = [CWInterface interfaceWithName:qt_mac_QStringToNSString(interfaceName)];
@@ -167,6 +170,7 @@ void QScanThread::run()
NSError *err = nil;
NSDictionary *parametersDict = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], kCWScanKeyMerge,
+ [NSNumber numberWithInt:kCWScanTypeFast], kCWScanKeyScanType,
[NSNumber numberWithInteger:100], kCWScanKeyRestTime, nil];
NSArray* apArray = [currentInterface scanForNetworksWithParameters:parametersDict error:&err];
@@ -204,11 +208,9 @@ void QScanThread::run()
found.append(foundNetwork(id, networkSsid, state, interfaceName, purpose));
- } //end row
-// [parametersDict release];
-
- } //end error
- } // endwifi power
+ }
+ }
+ }
// add known configurations that are not around.
QMapIterator<QString, QMap<QString,QString> > i(userProfiles);
while (i.hasNext()) {
@@ -248,7 +250,6 @@ void QScanThread::run()
}
}
emit networksChanged();
- [pool release];
}
QStringList QScanThread::foundNetwork(const QString &id, const QString &name, const QNetworkConfiguration::StateFlags state, const QString &interfaceName, const QNetworkConfiguration::Purpose purpose)
@@ -426,6 +427,7 @@ QCoreWlanEngine::~QCoreWlanEngine()
void QCoreWlanEngine::initialize()
{
QMutexLocker locker(&mutex);
+ QMacCocoaAutoReleasePool pool;
if([[CWInterface supportedInterfaces] count] > 0 && !listener) {
listener = [[QNSListener alloc] init];
@@ -659,7 +661,6 @@ bool QCoreWlanEngine::isWifiReady(const QString &wifiDeviceName)
QNetworkSession::State QCoreWlanEngine::sessionStateForId(const QString &id)
{
QMutexLocker locker(&mutex);
-
QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id);
if (!ptr)
@@ -823,5 +824,90 @@ void QCoreWlanEngine::networksChanged()
}
+quint64 QCoreWlanEngine::bytesWritten(const QString &id)
+{
+ QMutexLocker locker(&mutex);
+ const QString interfaceStr = getInterfaceFromId(id);
+ return getBytes(interfaceStr,false);
+}
+
+quint64 QCoreWlanEngine::bytesReceived(const QString &id)
+{
+ QMutexLocker locker(&mutex);
+ const QString interfaceStr = getInterfaceFromId(id);
+ return getBytes(interfaceStr,true);
+}
+
+quint64 QCoreWlanEngine::startTime(const QString &id)
+{
+ QMutexLocker locker(&mutex);
+ QMacCocoaAutoReleasePool pool;
+ quint64 timestamp = 0;
+
+ NSString *filePath = @"/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist";
+ NSDictionary* plistDict = [[[NSDictionary alloc] initWithContentsOfFile:filePath] autorelease];
+ NSString *input = @"KnownNetworks";
+ NSString *timeStampStr = @"_timeStamp";
+
+ NSString *ssidStr = @"SSID_STR";
+
+ for (id key in plistDict) {
+ if ([input isEqualToString:key]) {
+
+ NSDictionary *knownNetworksDict = [plistDict objectForKey:key];
+ for (id networkKey in knownNetworksDict) {
+ bool isFound = false;
+ NSDictionary *itemDict = [knownNetworksDict objectForKey:networkKey];
+ NSInteger dictSize = [itemDict count];
+ id objects[dictSize];
+ id keys[dictSize];
+
+ [itemDict getObjects:objects andKeys:keys];
+ bool ok = false;
+ for(int i = 0; i < dictSize; i++) {
+ if([ssidStr isEqualToString:keys[i]]) {
+ const QString ident = QString::number(qHash(QLatin1String("corewlan:") + qt_mac_NSStringToQString(objects[i])));
+ if(ident == id) {
+ ok = true;
+ }
+ }
+ if(ok && [timeStampStr isEqualToString:keys[i]]) {
+ timestamp = (quint64)[objects[i] timeIntervalSince1970];
+ isFound = true;
+ break;
+ }
+ }
+ if(isFound)
+ break;
+ }
+ }
+ }
+ return timestamp;
+}
+
+quint64 QCoreWlanEngine::getBytes(const QString &interfaceName, bool b)
+{
+ struct ifaddrs *ifAddressList, *ifAddress;
+ struct if_data *if_data;
+
+ quint64 bytes = 0;
+ ifAddressList = nil;
+ if(getifaddrs(&ifAddressList) == 0) {
+ for(ifAddress = ifAddressList; ifAddress; ifAddress = ifAddress->ifa_next) {
+ if(interfaceName == ifAddress->ifa_name) {
+ if_data = (struct if_data*)ifAddress->ifa_data;
+ if(b) {
+ bytes = if_data->ifi_ibytes;
+ break;
+ } else {
+ bytes = if_data->ifi_obytes;
+ break;
+ }
+ }
+ }
+ freeifaddrs(ifAddressList);
+ }
+ return bytes;
+}
QT_END_NAMESPACE
diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp
index 9b6ffa0..1a55402 100644
--- a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp
+++ b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp
@@ -46,6 +46,7 @@
#include <QtNetwork/private/qnetworkconfiguration_p.h>
#include <QtCore/qstringlist.h>
+#include <QtCore/qcoreapplication.h>
#include <QtCore/qdebug.h>
@@ -79,38 +80,26 @@ void qNotificationCallback(WLAN_NOTIFICATION_DATA *data, QNativeWifiEngine *d)
}
QNativeWifiEngine::QNativeWifiEngine(QObject *parent)
-: QBearerEngineImpl(parent), handle(0)
+: QBearerEngineImpl(parent), handle(INVALID_HANDLE_VALUE)
{
- DWORD clientVersion;
-
- DWORD result = local_WlanOpenHandle(1, 0, &clientVersion, &handle);
- if (result != ERROR_SUCCESS) {
-#ifdef BEARER_MANAGEMENT_DEBUG
- if (result != ERROR_SERVICE_NOT_ACTIVE)
- qDebug("%s: WlanOpenHandle failed with error %ld\n", __FUNCTION__, result);
-#endif
-
- return;
- }
-
- result = local_WlanRegisterNotification(handle, WLAN_NOTIFICATION_SOURCE_ALL, true,
- WLAN_NOTIFICATION_CALLBACK(qNotificationCallback),
- this, 0, 0);
-#ifdef BEARER_MANAGEMENT_DEBUG
- if (result != ERROR_SUCCESS)
- qDebug("%s: WlanRegisterNotification failed with error %ld\n", __FUNCTION__, result);
-#endif
+ connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(closeHandle()));
}
QNativeWifiEngine::~QNativeWifiEngine()
{
- local_WlanCloseHandle(handle, 0);
+ closeHandle();
}
void QNativeWifiEngine::scanComplete()
{
QMutexLocker locker(&mutex);
+ if (!available()) {
+ locker.unlock();
+ emit updateCompleted();
+ return;
+ }
+
// enumerate interfaces
WLAN_INTERFACE_INFO_LIST *interfaceList;
DWORD result = local_WlanEnumInterfaces(handle, 0, &interfaceList);
@@ -249,6 +238,9 @@ QString QNativeWifiEngine::getInterfaceFromId(const QString &id)
{
QMutexLocker locker(&mutex);
+ if (!available())
+ return QString();
+
// enumerate interfaces
WLAN_INTERFACE_INFO_LIST *interfaceList;
DWORD result = local_WlanEnumInterfaces(handle, 0, &interfaceList);
@@ -304,6 +296,9 @@ bool QNativeWifiEngine::hasIdentifier(const QString &id)
{
QMutexLocker locker(&mutex);
+ if (!available())
+ return false;
+
// enumerate interfaces
WLAN_INTERFACE_INFO_LIST *interfaceList;
DWORD result = local_WlanEnumInterfaces(handle, 0, &interfaceList);
@@ -364,6 +359,12 @@ void QNativeWifiEngine::connectToId(const QString &id)
{
QMutexLocker locker(&mutex);
+ if (!available()) {
+ locker.unlock();
+ emit connectionError(id, InterfaceLookupError);
+ return;
+ }
+
WLAN_INTERFACE_INFO_LIST *interfaceList;
DWORD result = local_WlanEnumInterfaces(handle, 0, &interfaceList);
if (result != ERROR_SUCCESS) {
@@ -440,6 +441,12 @@ void QNativeWifiEngine::disconnectFromId(const QString &id)
{
QMutexLocker locker(&mutex);
+ if (!available()) {
+ locker.unlock();
+ emit connectionError(id, InterfaceLookupError);
+ return;
+ }
+
QString interface = getInterfaceFromId(id);
if (interface.isEmpty()) {
@@ -479,6 +486,12 @@ void QNativeWifiEngine::requestUpdate()
{
QMutexLocker locker(&mutex);
+ if (!available()) {
+ locker.unlock();
+ emit updateCompleted();
+ return;
+ }
+
// enumerate interfaces
WLAN_INTERFACE_INFO_LIST *interfaceList;
DWORD result = local_WlanEnumInterfaces(handle, 0, &interfaceList);
@@ -555,6 +568,42 @@ QNetworkConfigurationPrivatePointer QNativeWifiEngine::defaultConfiguration()
return QNetworkConfigurationPrivatePointer();
}
+bool QNativeWifiEngine::available()
+{
+ if (handle != INVALID_HANDLE_VALUE)
+ return true;
+
+ DWORD clientVersion;
+
+ DWORD result = local_WlanOpenHandle(1, 0, &clientVersion, &handle);
+ if (result != ERROR_SUCCESS) {
+#ifdef BEARER_MANAGEMENT_DEBUG
+ if (result != ERROR_SERVICE_NOT_ACTIVE)
+ qDebug("%s: WlanOpenHandle failed with error %ld\n", __FUNCTION__, result);
+#endif
+
+ return false;
+ }
+
+ result = local_WlanRegisterNotification(handle, WLAN_NOTIFICATION_SOURCE_ALL, true,
+ WLAN_NOTIFICATION_CALLBACK(qNotificationCallback),
+ this, 0, 0);
+#ifdef BEARER_MANAGEMENT_DEBUG
+ if (result != ERROR_SUCCESS)
+ qDebug("%s: WlanRegisterNotification failed with error %ld\n", __FUNCTION__, result);
+#endif
+
+ return handle != INVALID_HANDLE_VALUE;
+}
+
+void QNativeWifiEngine::closeHandle()
+{
+ if (handle != INVALID_HANDLE_VALUE) {
+ local_WlanCloseHandle(handle, 0);
+ handle = INVALID_HANDLE_VALUE;
+ }
+}
+
bool QNativeWifiEngine::requiresPolling() const
{
// On Windows XP SP2 and SP3 only connection and disconnection notifications are available.
diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.h b/src/plugins/bearer/nativewifi/qnativewifiengine.h
index 3b21985..0e9576b 100644
--- a/src/plugins/bearer/nativewifi/qnativewifiengine.h
+++ b/src/plugins/bearer/nativewifi/qnativewifiengine.h
@@ -91,12 +91,13 @@ public:
QNetworkConfigurationPrivatePointer defaultConfiguration();
- inline bool available() const { return handle != 0; }
+ bool available();
bool requiresPolling() const;
-public Q_SLOTS:
+private Q_SLOTS:
void scanComplete();
+ void closeHandle();
private:
Qt::HANDLE handle;
diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
index 3cd18fb..e08d135 100644
--- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
@@ -122,19 +122,10 @@ void QNetworkSessionPrivateImpl::configurationRemoved(QNetworkConfigurationPriva
if (!publicConfig.isValid())
return;
- SymbianNetworkConfigurationPrivate *symbianConfig = toSymbianConfig(config);
-
- symbianConfig->mutex.lock();
- TUint32 configNumericId = symbianConfig->numericId;
- symbianConfig->mutex.unlock();
-
- symbianConfig = toSymbianConfig(privateConfiguration(publicConfig));
-
- symbianConfig->mutex.lock();
- TUint32 publicNumericId = symbianConfig->numericId;
- symbianConfig->mutex.unlock();
+ TUint32 publicNumericId =
+ toSymbianConfig(privateConfiguration(publicConfig))->numericIdentifier();
- if (configNumericId == publicNumericId) {
+ if (toSymbianConfig(config)->numericIdentifier() == publicNumericId) {
#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
qDebug() << "QNS this : " << QString::number((uint)this) << " - "
<< "configurationRemoved IAP: " << QString::number(publicNumericId) << " : going to State: Invalid";
@@ -380,13 +371,11 @@ void QNetworkSessionPrivateImpl::open()
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(publicConfig));
- QMutexLocker configLocker(&symbianConfig->mutex);
-
- if (connInfo().iIapId == symbianConfig->numericId) {
+ if (connInfo().iIapId == symbianConfig->numericIdentifier()) {
if (iConnection.Attach(connInfo, RConnection::EAttachTypeNormal) == KErrNone) {
activeConfig = publicConfig;
#ifndef QT_NO_NETWORKINTERFACE
- activeInterface = interface(symbianConfig->numericId);
+ activeInterface = interface(symbianConfig->numericIdentifier());
#endif
connected = ETrue;
startTime = QDateTime::currentDateTime();
@@ -416,9 +405,7 @@ void QNetworkSessionPrivateImpl::open()
TConnPrefList pref;
TExtendedConnPref prefs;
- symbianConfig->mutex.lock();
- prefs.SetIapId(symbianConfig->numericId);
- symbianConfig->mutex.unlock();
+ prefs.SetIapId(symbianConfig->numericIdentifier());
if (iConnectInBackground) {
prefs.SetNoteBehaviour( TExtendedConnPref::ENoteBehaviourConnSilent );
}
@@ -427,9 +414,7 @@ void QNetworkSessionPrivateImpl::open()
TCommDbConnPref pref;
pref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
- symbianConfig->mutex.lock();
- pref.SetIapId(symbianConfig->numericId);
- symbianConfig->mutex.unlock();
+ pref.SetIapId(symbianConfig->numericIdentifier());
#endif
iConnection.Start(pref, iStatus);
if (!IsActive()) {
@@ -444,17 +429,13 @@ void QNetworkSessionPrivateImpl::open()
#ifdef OCC_FUNCTIONALITY_AVAILABLE
TConnPrefList snapPref;
TExtendedConnPref prefs;
- symbianConfig->mutex.lock();
- prefs.SetSnapId(symbianConfig->numericId);
- symbianConfig->mutex.unlock();
+ prefs.SetSnapId(symbianConfig->numericIdentifier());
if (iConnectInBackground) {
prefs.SetNoteBehaviour( TExtendedConnPref::ENoteBehaviourConnSilent );
}
snapPref.AppendL(&prefs);
#else
- symbianConfig->mutex.lock();
- TConnSnapPref snapPref(symbianConfig->numericId);
- symbianConfig->mutex.unlock();
+ TConnSnapPref snapPref(symbianConfig->numericIdentifier());
#endif
iConnection.Start(snapPref, iStatus);
if (!IsActive()) {
@@ -592,10 +573,8 @@ void QNetworkSessionPrivateImpl::stop()
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(publicConfig));
- QMutexLocker configLocker(&symbianConfig->mutex);
-
// See if connection Id matches with our Id. If so, stop() it.
- if (symbianConfig->connectionId == connectionId) {
+ if (symbianConfig->connectionIdentifier() == connectionId) {
ret = iConnectionMonitor.SetBoolAttribute(connectionId,
0, // subConnectionId don't care
KConnectionStop,
@@ -715,12 +694,8 @@ void QNetworkSessionPrivateImpl::PreferredCarrierAvailable(TAccessPointInfo aOld
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(configs[i]));
- QMutexLocker configLocker(&symbianConfig->mutex);
-
- if (symbianConfig->numericId == aNewAPInfo.AccessPoint()) {
- configLocker.unlock();
+ if (symbianConfig->numericIdentifier() == aNewAPInfo.AccessPoint())
emit preferredConfigurationChanged(configs[i], aIsSeamless);
- }
}
} else {
migrate();
@@ -854,9 +829,7 @@ quint64 QNetworkSessionPrivateImpl::transferredData(TUint dataType) const
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(configs[i]));
- QMutexLocker configLocker(&symbianConfig->mutex);
-
- if (symbianConfig->numericId == apId) {
+ if (symbianConfig->numericIdentifier() == apId) {
configFound = true;
break;
}
@@ -865,10 +838,8 @@ quint64 QNetworkSessionPrivateImpl::transferredData(TUint dataType) const
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(config));
- symbianConfig->mutex.lock();
- if (symbianConfig->numericId == apId)
+ if (symbianConfig->numericIdentifier() == apId)
configFound = true;
- symbianConfig->mutex.unlock();
}
if (configFound) {
TUint tData;
@@ -908,8 +879,7 @@ QNetworkConfiguration QNetworkSessionPrivateImpl::activeConfiguration(TUint32 ia
SymbianNetworkConfigurationPrivate *childConfig =
toSymbianConfig(privateConfiguration(children[i]));
- QMutexLocker childLocker(&childConfig->mutex);
- if (childConfig->numericId == iapId)
+ if (childConfig->numericIdentifier() == iapId)
return children[i];
}
@@ -928,15 +898,11 @@ QNetworkConfiguration QNetworkSessionPrivateImpl::activeConfiguration(TUint32 ia
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(pt));
if (symbianConfig) {
- QMutexLocker configLocker(&symbianConfig->mutex);
-
for (int i=0; i < children.count(); i++) {
SymbianNetworkConfigurationPrivate *childConfig =
toSymbianConfig(privateConfiguration(children[i]));
- QMutexLocker childLocker(&childConfig->mutex);
-
- if (childConfig->mappingName == symbianConfig->mappingName) {
+ if (childConfig->configMappingName() == symbianConfig->configMappingName()) {
return children[i];
}
}
@@ -1034,15 +1000,13 @@ void QNetworkSessionPrivateImpl::RunL()
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(activeConfig));
- symbianConfig->mutex.lock();
#ifndef QT_NO_NETWORKINTERFACE
- activeInterface = interface(symbianConfig->numericId);
+ activeInterface = interface(symbianConfig->numericIdentifier());
#endif
if (publicConfig.type() == QNetworkConfiguration::UserChoice) {
serviceConfig = QNetworkConfigurationManager()
- .configurationFromIdentifier(symbianConfig->id);
+ .configurationFromIdentifier(activeConfig.identifier());
}
- symbianConfig->mutex.unlock();
startTime = QDateTime::currentDateTime();
@@ -1105,13 +1069,11 @@ bool QNetworkSessionPrivateImpl::newState(QNetworkSession::State newState, TUint
newState == QNetworkSession::Connected) {
activeConfig = activeConfiguration(accessPointId);
+#ifndef QT_NO_NETWORKINTERFACE
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(activeConfig));
-#ifndef QT_NO_NETWORKINTERFACE
- symbianConfig->mutex.lock();
- activeInterface = interface(symbianConfig->numericId);
- symbianConfig->mutex.unlock();
+ activeInterface = interface(symbianConfig->numericIdentifier());
#endif
#ifdef SNAP_FUNCTIONALITY_AVAILABLE
@@ -1187,10 +1149,7 @@ bool QNetworkSessionPrivateImpl::newState(QNetworkSession::State newState, TUint
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(publicConfig));
- QMutexLocker configLocker(&symbianConfig->mutex);
- if (symbianConfig->numericId == accessPointId) {
- configLocker.unlock();
-
+ if (symbianConfig->numericIdentifier() == accessPointId) {
state = newState;
#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
qDebug() << "QNS this : " << QString::number((uint)this) << " - " << "===> EMIT State changed B to: " << state;
@@ -1202,10 +1161,7 @@ bool QNetworkSessionPrivateImpl::newState(QNetworkSession::State newState, TUint
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(activeConfig));
- QMutexLocker configLocker(&symbianConfig->mutex);
- if (symbianConfig->numericId == accessPointId) {
- configLocker.unlock();
-
+ if (symbianConfig->numericIdentifier() == accessPointId) {
state = newState;
#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
qDebug() << "QNS this : " << QString::number((uint)this) << " - " << "===> EMIT State changed C to: " << state;
@@ -1219,9 +1175,7 @@ bool QNetworkSessionPrivateImpl::newState(QNetworkSession::State newState, TUint
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(subConfigurations[i]));
- QMutexLocker configLocker(&symbianConfig->mutex);
-
- if (symbianConfig->numericId == accessPointId) {
+ if (symbianConfig->numericIdentifier() == accessPointId) {
if (newState != QNetworkSession::Disconnected) {
state = newState;
#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
@@ -1234,8 +1188,6 @@ bool QNetworkSessionPrivateImpl::newState(QNetworkSession::State newState, TUint
if ((config.state() == QNetworkConfiguration::Defined) ||
(config.state() == QNetworkConfiguration::Discovered)) {
- configLocker.unlock();
-
state = newState;
#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
qDebug() << "QNS this : " << QString::number((uint)this) << " - " << "===> EMIT State changed E to: " << state;
@@ -1271,9 +1223,7 @@ bool QNetworkSessionPrivateImpl::newState(QNetworkSession::State newState, TUint
SymbianNetworkConfigurationPrivate *symbianConfig =
toSymbianConfig(privateConfiguration(publicConfig));
- symbianConfig->mutex.lock();
- iDeprecatedConnectionId = symbianConfig->connectionId;
- symbianConfig->mutex.unlock();
+ iDeprecatedConnectionId = symbianConfig->connectionIdentifier();
}
return retVal;
@@ -1369,7 +1319,11 @@ void QNetworkSessionPrivateImpl::handleSymbianConnectionStatusChange(TInt aConne
qDebug() << "QNS this : " << QString::number((uint)this) << " - " << "reporting disconnection to manager.";
#endif
if (publicConfig.isValid()) {
- engine->configurationStateChangeReport(toSymbianConfig(privateConfiguration(publicConfig))->numericId, QNetworkSession::Disconnected);
+ SymbianNetworkConfigurationPrivate *symbianConfig =
+ toSymbianConfig(privateConfiguration(publicConfig));
+
+ engine->configurationStateChangeReport(symbianConfig->numericIdentifier(),
+ QNetworkSession::Disconnected);
}
break;
// Unhandled state
diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.h b/src/plugins/bearer/symbian/qnetworksession_impl.h
index 9767293..b045ff1 100644
--- a/src/plugins/bearer/symbian/qnetworksession_impl.h
+++ b/src/plugins/bearer/symbian/qnetworksession_impl.h
@@ -73,9 +73,9 @@ QT_BEGIN_NAMESPACE
class ConnectionProgressNotifier;
class SymbianEngine;
-class QNetworkSessionPrivateImpl : public QNetworkSessionPrivate, public CActive,
+class QNetworkSessionPrivateImpl : public QNetworkSessionPrivate, public CActive
#ifdef SNAP_FUNCTIONALITY_AVAILABLE
- public MMobilityProtocolResp
+ , public MMobilityProtocolResp
#endif
{
Q_OBJECT
diff --git a/src/plugins/bearer/symbian/symbianengine.cpp b/src/plugins/bearer/symbian/symbianengine.cpp
index cea8b67..8c26cf0 100644
--- a/src/plugins/bearer/symbian/symbianengine.cpp
+++ b/src/plugins/bearer/symbian/symbianengine.cpp
@@ -115,13 +115,18 @@ QString SymbianNetworkConfigurationPrivate::bearerName() const
SymbianEngine::SymbianEngine(QObject *parent)
: QBearerEngine(parent), CActive(CActive::EPriorityIdle), iFirstUpdate(true), iInitOk(true),
- iIgnoringUpdates(false), iTimeToWait(0), iIgnoreEventLoop(0)
+ iIgnoringUpdates(false)
{
+}
+
+void SymbianEngine::initialize()
+{
+ QMutexLocker locker(&mutex);
+
CActiveScheduler::Add(this);
// Seed the randomgenerator
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()) + QCoreApplication::applicationPid());
- iIgnoreEventLoop = new QEventLoop(this);
TRAPD(error, ipCommsDB = CCommsDatabase::NewL(EDatabaseTypeIAP));
if (error != KErrNone) {
@@ -132,18 +137,13 @@ SymbianEngine::SymbianEngine(QObject *parent)
TRAP_IGNORE(iConnectionMonitor.ConnectL());
TRAP_IGNORE(iConnectionMonitor.NotifyEventL(*this));
-#ifdef SNAP_FUNCTIONALITY_AVAILABLE
+#ifdef SNAP_FUNCTIONALITY_AVAILABLE
TRAP(error, iCmManager.OpenL());
if (error != KErrNone) {
iInitOk = false;
return;
}
#endif
-}
-
-void SymbianEngine::initialize()
-{
- QMutexLocker locker(&mutex);
SymbianNetworkConfigurationPrivate *cpPriv = new SymbianNetworkConfigurationPrivate;
cpPriv->name = "UserChoice";
@@ -238,19 +238,14 @@ void SymbianEngine::requestUpdate()
void SymbianEngine::updateConfigurations()
{
- QMutexLocker locker(&mutex);
-
- if (!iInitOk) {
+ if (!iInitOk)
return;
- }
TRAP_IGNORE(updateConfigurationsL());
}
void SymbianEngine::updateConfigurationsL()
{
- QMutexLocker locker(&mutex);
-
QList<QString> knownConfigs = accessPointConfigurations.keys();
QList<QString> knownSnapConfigs = snapConfigurations.keys();
@@ -276,9 +271,9 @@ void SymbianEngine::updateConfigurationsL()
QNetworkConfigurationPrivatePointer ptr(cpPriv);
accessPointConfigurations.insert(ptr->id, ptr);
- locker.unlock();
+ mutex.unlock();
emit configurationAdded(ptr);
- locker.relock();
+ mutex.lock();
}
}
CleanupStack::PopAndDestroy(&connectionMethod);
@@ -317,9 +312,9 @@ void SymbianEngine::updateConfigurationsL()
QNetworkConfigurationPrivatePointer ptr(cpPriv);
snapConfigurations.insert(ident, ptr);
- locker.unlock();
+ mutex.unlock();
emit configurationAdded(ptr);
- locker.relock();
+ mutex.lock();
CleanupStack::Pop(cpPriv);
}
@@ -338,34 +333,35 @@ void SymbianEngine::updateConfigurationsL()
TRAP(error, cpPriv = configFromConnectionMethodL(connectionMethod));
if (error == KErrNone) {
QNetworkConfigurationPrivatePointer ptr(cpPriv);
- toSymbianConfig(ptr)->serviceNetworkPtr = privSNAP;
accessPointConfigurations.insert(ptr->id, ptr);
- locker.unlock();
+ mutex.unlock();
emit configurationAdded(ptr);
- locker.relock();
+ mutex.lock();
+ QMutexLocker configLocker(&privSNAP->mutex);
privSNAP->serviceNetworkMembers.append(ptr);
}
} else {
knownConfigs.removeOne(iface);
// Check that IAP can be found from related SNAP's configuration list
bool iapFound = false;
+ QMutexLocker snapConfigLocker(&privSNAP->mutex);
for (int i = 0; i < privSNAP->serviceNetworkMembers.count(); i++) {
- if (toSymbianConfig(privSNAP->serviceNetworkMembers[i])->numericId == iapId) {
+ if (toSymbianConfig(privSNAP->serviceNetworkMembers[i])->numericIdentifier() ==
+ iapId) {
iapFound = true;
break;
}
}
- if (!iapFound) {
- toSymbianConfig(priv)->serviceNetworkPtr = privSNAP;
+ if (!iapFound)
privSNAP->serviceNetworkMembers.append(priv);
- }
}
CleanupStack::PopAndDestroy(&connectionMethod);
}
+ QMutexLocker snapConfigLocker(&privSNAP->mutex);
if (privSNAP->serviceNetworkMembers.count() > 1) {
// Roaming is supported only if SNAP contains more than one IAP
privSNAP->roamingSupported = true;
@@ -410,17 +406,18 @@ void SymbianEngine::updateConfigurationsL()
//remove non existing IAP
QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.take(oldIface);
- locker.unlock();
+ mutex.unlock();
emit configurationRemoved(ptr);
- locker.relock();
+ mutex.lock();
// Remove non existing IAP from SNAPs
foreach (const QString &iface, snapConfigurations.keys()) {
QNetworkConfigurationPrivatePointer ptr2 = snapConfigurations.value(iface);
// => Check if one of the IAPs of the SNAP is active
+ QMutexLocker snapConfigLocker(&ptr2->mutex);
for (int i = 0; i < ptr2->serviceNetworkMembers.count(); ++i) {
- if (toSymbianConfig(ptr2->serviceNetworkMembers[i])->numericId ==
- toSymbianConfig(ptr)->numericId) {
+ if (toSymbianConfig(ptr2->serviceNetworkMembers[i])->numericIdentifier() ==
+ toSymbianConfig(ptr)->numericIdentifier()) {
ptr2->serviceNetworkMembers.removeAt(i);
break;
}
@@ -432,18 +429,21 @@ void SymbianEngine::updateConfigurationsL()
//remove non existing SNAPs
QNetworkConfigurationPrivatePointer ptr = snapConfigurations.take(oldIface);
- locker.unlock();
+ mutex.unlock();
emit configurationRemoved(ptr);
- locker.relock();
+ mutex.lock();
}
+
+ // find default configuration.
+ stopCommsDatabaseNotifications();
+ TRAP_IGNORE(defaultConfig = defaultConfigurationL());
+ startCommsDatabaseNotifications();
}
#ifdef SNAP_FUNCTIONALITY_AVAILABLE
SymbianNetworkConfigurationPrivate *SymbianEngine::configFromConnectionMethodL(
RCmConnectionMethod& connectionMethod)
{
- QMutexLocker locker(&mutex);
-
SymbianNetworkConfigurationPrivate *cpPriv = new SymbianNetworkConfigurationPrivate;
CleanupStack::PushL(cpPriv);
@@ -526,8 +526,6 @@ SymbianNetworkConfigurationPrivate *SymbianEngine::configFromConnectionMethodL(
bool SymbianEngine::readNetworkConfigurationValuesFromCommsDb(
TUint32 aApId, SymbianNetworkConfigurationPrivate *apNetworkConfiguration)
{
- QMutexLocker locker(&mutex);
-
TRAPD(error, readNetworkConfigurationValuesFromCommsDbL(aApId,apNetworkConfiguration));
if (error != KErrNone) {
return false;
@@ -538,8 +536,6 @@ bool SymbianEngine::readNetworkConfigurationValuesFromCommsDb(
void SymbianEngine::readNetworkConfigurationValuesFromCommsDbL(
TUint32 aApId, SymbianNetworkConfigurationPrivate *apNetworkConfiguration)
{
- QMutexLocker locker(&mutex);
-
CApDataHandler* pDataHandler = CApDataHandler::NewLC(*ipCommsDB);
CApAccessPointItem* pAPItem = CApAccessPointItem::NewLC();
TBuf<KCommsDbSvrMaxColumnNameLength> name;
@@ -602,15 +598,7 @@ QNetworkConfigurationPrivatePointer SymbianEngine::defaultConfiguration()
{
QMutexLocker locker(&mutex);
- QNetworkConfigurationPrivatePointer ptr;
-
- if (iInitOk) {
- stopCommsDatabaseNotifications();
- TRAP_IGNORE(ptr = defaultConfigurationL());
- startCommsDatabaseNotifications();
- }
-
- return ptr;
+ return defaultConfig;
}
QStringList SymbianEngine::accessPointConfigurationIdentifiers()
@@ -622,8 +610,6 @@ QStringList SymbianEngine::accessPointConfigurationIdentifiers()
QNetworkConfigurationPrivatePointer SymbianEngine::defaultConfigurationL()
{
- QMutexLocker locker(&mutex);
-
QNetworkConfigurationPrivatePointer ptr;
#ifdef SNAP_FUNCTIONALITY_AVAILABLE
@@ -639,18 +625,18 @@ QNetworkConfigurationPrivatePointer SymbianEngine::defaultConfigurationL()
}
#endif
- if (!ptr || !ptr->isValid) {
- QString iface = QString::number(qHash(KUserChoiceIAPId));
- ptr = userChoiceConfigurations.value(iface);
+ if (ptr) {
+ QMutexLocker configLocker(&ptr->mutex);
+ if (ptr->isValid)
+ return ptr;
}
-
- return ptr;
+
+ QString iface = QString::number(qHash(KUserChoiceIAPId));
+ return userChoiceConfigurations.value(iface);
}
void SymbianEngine::updateActiveAccessPoints()
{
- QMutexLocker locker(&mutex);
-
bool online = false;
QList<QString> inactiveConfigs = accessPointConfigurations.keys();
@@ -681,8 +667,9 @@ void SymbianEngine::updateActiveAccessPoints()
online = true;
inactiveConfigs.removeOne(ident);
- QMutexLocker configLocker(&ptr->mutex);
+ ptr->mutex.lock();
toSymbianConfig(ptr)->connectionId = connectionId;
+ ptr->mutex.unlock();
// Configuration is Active
changeConfigurationStateTo(ptr, QNetworkConfiguration::Active);
@@ -702,16 +689,14 @@ void SymbianEngine::updateActiveAccessPoints()
if (iOnline != online) {
iOnline = online;
- locker.unlock();
+ mutex.unlock();
emit this->onlineStateChanged(iOnline);
- locker.relock();
+ mutex.lock();
}
}
void SymbianEngine::updateAvailableAccessPoints()
{
- QMutexLocker locker(&mutex);
-
if (!ipAccessPointsAvailabilityScanner) {
ipAccessPointsAvailabilityScanner = new AccessPointsAvailabilityScanner(*this, iConnectionMonitor);
}
@@ -723,8 +708,6 @@ void SymbianEngine::updateAvailableAccessPoints()
void SymbianEngine::accessPointScanningReady(TBool scanSuccessful, TConnMonIapInfo iapInfo)
{
- QMutexLocker locker(&mutex);
-
iUpdateGoingOn = false;
if (scanSuccessful) {
QList<QString> unavailableConfigs = accessPointConfigurations.keys();
@@ -736,6 +719,8 @@ void SymbianEngine::accessPointScanningReady(TBool scanSuccessful, TConnMonIapIn
QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(ident);
if (ptr) {
unavailableConfigs.removeOne(ident);
+
+ QMutexLocker configLocker(&ptr->mutex);
if (ptr->state < QNetworkConfiguration::Active) {
// Configuration is either Discovered or Active
changeConfigurationStateAtMinTo(ptr, QNetworkConfiguration::Discovered);
@@ -757,25 +742,28 @@ void SymbianEngine::accessPointScanningReady(TBool scanSuccessful, TConnMonIapIn
if (!iFirstUpdate) {
startCommsDatabaseNotifications();
- locker.unlock();
+ mutex.unlock();
emit updateCompleted();
- locker.relock();
+ mutex.lock();
}
}
void SymbianEngine::updateStatesToSnaps()
{
- QMutexLocker locker(&mutex);
-
// Go through SNAPs and set correct state to SNAPs
foreach (const QString &iface, snapConfigurations.keys()) {
bool discovered = false;
bool active = false;
QNetworkConfigurationPrivatePointer ptr = snapConfigurations.value(iface);
+
+ QMutexLocker snapConfigLocker(&ptr->mutex);
+
// => Check if one of the IAPs of the SNAP is discovered or active
// => If one of IAPs is active, also SNAP is active
// => If one of IAPs is discovered but none of the IAPs is active, SNAP is discovered
for (int i=0; i<ptr->serviceNetworkMembers.count(); i++) {
+ QMutexLocker configLocker(&ptr->serviceNetworkMembers[i]->mutex);
+
if ((ptr->serviceNetworkMembers[i]->state & QNetworkConfiguration::Active)
== QNetworkConfiguration::Active) {
active = true;
@@ -798,16 +786,14 @@ void SymbianEngine::updateStatesToSnaps()
bool SymbianEngine::changeConfigurationStateTo(QNetworkConfigurationPrivatePointer ptr,
QNetworkConfiguration::StateFlags newState)
{
- QMutexLocker locker(&mutex);
-
ptr->mutex.lock();
if (newState != ptr->state) {
ptr->state = newState;
ptr->mutex.unlock();
- locker.unlock();
+ mutex.unlock();
emit configurationChanged(ptr);
- locker.relock();
+ mutex.lock();
return true;
} else {
@@ -823,16 +809,14 @@ bool SymbianEngine::changeConfigurationStateTo(QNetworkConfigurationPrivatePoint
bool SymbianEngine::changeConfigurationStateAtMinTo(QNetworkConfigurationPrivatePointer ptr,
QNetworkConfiguration::StateFlags newState)
{
- QMutexLocker locker(&mutex);
-
ptr->mutex.lock();
if ((newState | ptr->state) != ptr->state) {
ptr->state = (ptr->state | newState);
ptr->mutex.unlock();
- locker.unlock();
+ mutex.unlock();
emit configurationChanged(ptr);
- locker.relock();
+ mutex.lock();
return true;
} else {
@@ -849,16 +833,14 @@ bool SymbianEngine::changeConfigurationStateAtMinTo(QNetworkConfigurationPrivate
bool SymbianEngine::changeConfigurationStateAtMaxTo(QNetworkConfigurationPrivatePointer ptr,
QNetworkConfiguration::StateFlags newState)
{
- QMutexLocker locker(&mutex);
-
ptr->mutex.lock();
if ((newState & ptr->state) != ptr->state) {
ptr->state = (newState & ptr->state);
ptr->mutex.unlock();
- locker.unlock();
+ mutex.unlock();
emit configurationChanged(ptr);
- locker.relock();
+ mutex.lock();
return true;
} else {
@@ -869,8 +851,6 @@ bool SymbianEngine::changeConfigurationStateAtMaxTo(QNetworkConfigurationPrivate
void SymbianEngine::startCommsDatabaseNotifications()
{
- QMutexLocker locker(&mutex);
-
if (!iWaitingCommsDatabaseNotifications) {
iWaitingCommsDatabaseNotifications = ETrue;
if (!IsActive()) {
@@ -883,19 +863,9 @@ void SymbianEngine::startCommsDatabaseNotifications()
void SymbianEngine::stopCommsDatabaseNotifications()
{
- QMutexLocker locker(&mutex);
-
if (iWaitingCommsDatabaseNotifications) {
iWaitingCommsDatabaseNotifications = EFalse;
- if (!IsActive()) {
- SetActive();
- // Make sure that notifier recorded events will not be returned
- // as soon as the client issues the next RequestNotification() request.
- ipCommsDB->RequestNotification(iStatus);
- ipCommsDB->CancelRequestNotification();
- } else {
- ipCommsDB->CancelRequestNotification();
- }
+ Cancel();
}
}
@@ -910,46 +880,48 @@ void SymbianEngine::RunL()
return;
}
- if (iStatus != KErrCancel) {
- RDbNotifier::TEvent event = STATIC_CAST(RDbNotifier::TEvent, iStatus.Int());
+ RDbNotifier::TEvent event = STATIC_CAST(RDbNotifier::TEvent, iStatus.Int());
- switch (event) {
- case RDbNotifier::EUnlock: /** All read locks have been removed. */
- case RDbNotifier::ECommit: /** A transaction has been committed. */
- case RDbNotifier::ERollback: /** A transaction has been rolled back */
- case RDbNotifier::ERecover: /** The database has been recovered */
+ switch (event) {
+ case RDbNotifier::EUnlock: /** All read locks have been removed. */
+ case RDbNotifier::ECommit: /** A transaction has been committed. */
+ case RDbNotifier::ERollback: /** A transaction has been rolled back */
+ case RDbNotifier::ERecover: /** The database has been recovered */
#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
- qDebug("QNCM CommsDB event (of type RDbNotifier::TEvent) received: %d", iStatus.Int());
+ qDebug("QNCM CommsDB event (of type RDbNotifier::TEvent) received: %d", iStatus.Int());
#endif
- iIgnoringUpdates = true;
- // Other events than ECommit get lower priority. In practice with those events,
- // we delay_before_updating methods, whereas
- // with ECommit we _update_before_delaying the reaction to next event.
- // Few important notes: 1) listening to only ECommit does not seem to be adequate,
- // but updates will be missed. Hence other events are reacted upon too.
- // 2) RDbNotifier records the most significant event, and that will be returned once
- // we issue new RequestNotification, and hence updates will not be missed even
- // when we are 'not reacting to them' for few seconds.
- if (event == RDbNotifier::ECommit) {
- TRAPD(error, updateConfigurationsL());
- if (error == KErrNone) {
- updateStatesToSnaps();
- }
- waitRandomTime();
- } else {
- waitRandomTime();
- TRAPD(error, updateConfigurationsL());
- if (error == KErrNone) {
- updateStatesToSnaps();
- }
+ iIgnoringUpdates = true;
+ // Other events than ECommit get lower priority. In practice with those events,
+ // we delay_before_updating methods, whereas
+ // with ECommit we _update_before_delaying the reaction to next event.
+ // Few important notes: 1) listening to only ECommit does not seem to be adequate,
+ // but updates will be missed. Hence other events are reacted upon too.
+ // 2) RDbNotifier records the most significant event, and that will be returned once
+ // we issue new RequestNotification, and hence updates will not be missed even
+ // when we are 'not reacting to them' for few seconds.
+ if (event == RDbNotifier::ECommit) {
+ TRAPD(error, updateConfigurationsL());
+ if (error == KErrNone) {
+ updateStatesToSnaps();
+ }
+ locker.unlock();
+ waitRandomTime();
+ locker.relock();
+ } else {
+ locker.unlock();
+ waitRandomTime();
+ locker.relock();
+ TRAPD(error, updateConfigurationsL());
+ if (error == KErrNone) {
+ updateStatesToSnaps();
}
- iIgnoringUpdates = false; // Wait time done, allow updating again
- iWaitingCommsDatabaseNotifications = true;
- break;
- default:
- // Do nothing
- break;
}
+ iIgnoringUpdates = false; // Wait time done, allow updating again
+ iWaitingCommsDatabaseNotifications = true;
+ break;
+ default:
+ // Do nothing
+ break;
}
if (iWaitingCommsDatabaseNotifications) {
@@ -991,9 +963,11 @@ void SymbianEngine::EventL(const CConnMonEventBase& aEvent)
QString ident = QString::number(qHash(apId));
QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(ident);
if (ptr) {
- QMutexLocker configLocker(&ptr->mutex);
+ ptr->mutex.lock();
toSymbianConfig(ptr)->connectionId = connectionId;
- emit this->configurationStateChanged(toSymbianConfig(ptr)->numericId, connectionId, QNetworkSession::Connecting);
+ ptr->mutex.unlock();
+ emit configurationStateChanged(toSymbianConfig(ptr)->numericIdentifier(),
+ connectionId, QNetworkSession::Connecting);
}
} else if (connectionStatus == KLinkLayerOpen) {
// Connection has been successfully opened
@@ -1006,13 +980,17 @@ void SymbianEngine::EventL(const CConnMonEventBase& aEvent)
QString ident = QString::number(qHash(apId));
QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(ident);
if (ptr) {
- QMutexLocker configLocker(&ptr->mutex);
+ ptr->mutex.lock();
toSymbianConfig(ptr)->connectionId = connectionId;
+ ptr->mutex.unlock();
+
// Configuration is Active
if (changeConfigurationStateTo(ptr, QNetworkConfiguration::Active)) {
updateStatesToSnaps();
}
- emit this->configurationStateChanged(toSymbianConfig(ptr)->numericId, connectionId, QNetworkSession::Connected);
+ emit configurationStateChanged(toSymbianConfig(ptr)->numericIdentifier(),
+ connectionId, QNetworkSession::Connected);
+
if (!iOnline) {
iOnline = true;
emit this->onlineStateChanged(iOnline);
@@ -1022,8 +1000,8 @@ void SymbianEngine::EventL(const CConnMonEventBase& aEvent)
TUint connectionId = realEvent->ConnectionId();
QNetworkConfigurationPrivatePointer ptr = dataByConnectionId(connectionId);
if (ptr) {
- QMutexLocker configLocker(&ptr->mutex);
- emit this->configurationStateChanged(toSymbianConfig(ptr)->numericId, connectionId, QNetworkSession::Closing);
+ emit configurationStateChanged(toSymbianConfig(ptr)->numericIdentifier(),
+ connectionId, QNetworkSession::Closing);
}
} else if (connectionStatus == KLinkLayerClosed ||
connectionStatus == KConnectionClosed) {
@@ -1037,8 +1015,8 @@ void SymbianEngine::EventL(const CConnMonEventBase& aEvent)
updateStatesToSnaps();
}
- QMutexLocker configLocker(&ptr->mutex);
- emit this->configurationStateChanged(toSymbianConfig(ptr)->numericId, connectionId, QNetworkSession::Disconnected);
+ emit configurationStateChanged(toSymbianConfig(ptr)->numericIdentifier(),
+ connectionId, QNetworkSession::Disconnected);
}
bool online = false;
@@ -1121,6 +1099,8 @@ void SymbianEngine::EventL(const CConnMonEventBase& aEvent)
// manager). Currently only 'Disconnected' state is of interest because it has proven to be troublesome.
void SymbianEngine::configurationStateChangeReport(TUint32 accessPointId, QNetworkSession::State newState)
{
+ QMutexLocker locker(&mutex);
+
#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
qDebug() << "QNCM A session reported state change for IAP ID: " << accessPointId << " whose new state is: " << newState;
#endif
@@ -1135,10 +1115,11 @@ void SymbianEngine::configurationStateChangeReport(TUint32 accessPointId, QNetwo
updateStatesToSnaps();
}
- QMutexLocker configLocker(&ptr->mutex);
- emit this->configurationStateChanged(toSymbianConfig(ptr)->numericId,
- toSymbianConfig(ptr)->connectionId,
- QNetworkSession::Disconnected);
+ locker.unlock();
+ emit configurationStateChanged(toSymbianConfig(ptr)->numericIdentifier(),
+ toSymbianConfig(ptr)->connectionIdentifier(),
+ QNetworkSession::Disconnected);
+ locker.relock();
}
}
break;
@@ -1150,28 +1131,23 @@ void SymbianEngine::configurationStateChangeReport(TUint32 accessPointId, QNetwo
// Waits for 2..6 seconds.
void SymbianEngine::waitRandomTime()
{
- iTimeToWait = (qAbs(qrand()) % 7) * 1000;
- if (iTimeToWait < 2000) {
- iTimeToWait = 2000;
- }
+ int iTimeToWait = qMax(2000, (qAbs(qrand()) % 7) * 1000);
#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
qDebug("QNCM waiting random time: %d ms", iTimeToWait);
#endif
- QTimer::singleShot(iTimeToWait, iIgnoreEventLoop, SLOT(quit()));
- iIgnoreEventLoop->exec();
+ QEventLoop loop;
+ QTimer::singleShot(iTimeToWait, &loop, SLOT(quit()));
+ loop.exec();
}
QNetworkConfigurationPrivatePointer SymbianEngine::dataByConnectionId(TUint aConnectionId)
{
- QMutexLocker locker(&mutex);
-
QNetworkConfiguration item;
QHash<QString, QNetworkConfigurationPrivatePointer>::const_iterator i =
accessPointConfigurations.constBegin();
while (i != accessPointConfigurations.constEnd()) {
QNetworkConfigurationPrivatePointer ptr = i.value();
- QMutexLocker configLocker(&ptr->mutex);
- if (toSymbianConfig(ptr)->connectionId == aConnectionId)
+ if (toSymbianConfig(ptr)->connectionIdentifier() == aConnectionId)
return ptr;
++i;
@@ -1218,6 +1194,8 @@ void AccessPointsAvailabilityScanner::StartScanning()
void AccessPointsAvailabilityScanner::RunL()
{
+ QMutexLocker locker(&iOwner.mutex);
+
if (iStatus.Int() != KErrNone) {
iIapBuf().iCount = 0;
iOwner.accessPointScanningReady(false,iIapBuf());
diff --git a/src/plugins/bearer/symbian/symbianengine.h b/src/plugins/bearer/symbian/symbianengine.h
index 7d565db..18fd249 100644
--- a/src/plugins/bearer/symbian/symbianengine.h
+++ b/src/plugins/bearer/symbian/symbianengine.h
@@ -87,7 +87,23 @@ public:
QString bearerName() const;
- QNetworkConfigurationPrivatePointer serviceNetworkPtr;
+ inline TUint32 numericIdentifier() const
+ {
+ QMutexLocker locker(&mutex);
+ return numericId;
+ }
+
+ inline TUint connectionIdentifier() const
+ {
+ QMutexLocker locker(&mutex);
+ return connectionId;
+ }
+
+ inline QString configMappingName() const
+ {
+ QMutexLocker locker(&mutex);
+ return mappingName;
+ }
QString mappingName;
@@ -196,11 +212,11 @@ private: // Data
TBool iInitOk;
TBool iUpdateGoingOn;
TBool iIgnoringUpdates;
- TUint iTimeToWait;
- QEventLoop* iIgnoreEventLoop;
AccessPointsAvailabilityScanner* ipAccessPointsAvailabilityScanner;
-
+
+ QNetworkConfigurationPrivatePointer defaultConfig;
+
friend class QNetworkSessionPrivate;
friend class AccessPointsAvailabilityScanner;
friend class QNetworkSessionPrivateImpl;
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
index 80366d1..f704432 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
@@ -91,6 +91,7 @@ void QDirectFBPixmapData::resize(int width, int height)
setSerialNumber(++global_ser_no);
}
+#ifdef QT_DIRECTFB_OPAQUE_DETECTION
// mostly duplicated from qimage.cpp (QImageData::checkForAlphaPixels)
static bool checkForAlphaPixels(const QImage &img)
{
@@ -160,12 +161,16 @@ static bool checkForAlphaPixels(const QImage &img)
return false;
}
+#endif // QT_DIRECTFB_OPAQUE_DETECTION
-bool QDirectFBPixmapData::hasAlphaChannel(const QImage &img)
+bool QDirectFBPixmapData::hasAlphaChannel(const QImage &img, Qt::ImageConversionFlags flags)
{
-#ifndef QT_NO_DIRECTFB_OPAQUE_DETECTION
- return checkForAlphaPixels(img);
+ if (img.depth() == 1)
+ return true;
+#ifdef QT_DIRECTFB_OPAQUE_DETECTION
+ return ((flags & Qt::NoOpaqueDetection) ? img.hasAlphaChannel() : checkForAlphaPixels(img));
#else
+ Q_UNUSED(flags);
return img.hasAlphaChannel();
#endif
}
@@ -287,19 +292,9 @@ bool QDirectFBPixmapData::fromDataBufferDescription(const DFBDataBufferDescripti
#endif
-void QDirectFBPixmapData::fromImage(const QImage &img,
- Qt::ImageConversionFlags flags)
+void QDirectFBPixmapData::fromImage(const QImage &img, Qt::ImageConversionFlags flags)
{
- if (img.depth() == 1) {
- alpha = true;
-#ifndef QT_NO_DIRECTFB_OPAQUE_DETECTION
- } else if (flags & Qt::NoOpaqueDetection || QDirectFBPixmapData::hasAlphaChannel(img)) {
- alpha = true;
-#else
- } else if (img.hasAlphaChannel()) {
- alpha = true;
-#endif
- }
+ alpha = QDirectFBPixmapData::hasAlphaChannel(img, flags);
imageFormat = alpha ? screen->alphaPixmapFormat() : screen->pixelFormat();
QImage image;
if ((flags & ~Qt::NoOpaqueDetection) != Qt::AutoColor) {
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h
index da6edc6..343b26e 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h
@@ -86,8 +86,8 @@ public:
virtual int metric(QPaintDevice::PaintDeviceMetric m) const { return QDirectFBPaintDevice::metric(m); }
inline QImage::Format pixelFormat() const { return imageFormat; }
- static bool hasAlphaChannel(const QImage &img);
inline bool hasAlphaChannel() const { return alpha; }
+ static bool hasAlphaChannel(const QImage &img, Qt::ImageConversionFlags flags = Qt::AutoColor);
private:
#ifdef QT_DIRECTFB_IMAGEPROVIDER
bool fromDataBufferDescription(const DFBDataBufferDescription &dataBuffer);
diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def
index c960614..3df0f47 100644
--- a/src/s60installs/bwins/QtDeclarativeu.def
+++ b/src/s60installs/bwins/QtDeclarativeu.def
@@ -86,7 +86,7 @@ EXPORTS
??0QDeclarativeError@@QAE@XZ @ 85 NONAME ; QDeclarativeError::QDeclarativeError(void)
??0QDeclarativeExpression@@IAE@PAVQDeclarativeContext@@ABVQString@@PAVQObject@@AAVQDeclarativeExpressionPrivate@@@Z @ 86 NONAME ABSENT ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QString const &, class QObject *, class QDeclarativeExpressionPrivate &)
??0QDeclarativeExpression@@IAE@PAVQDeclarativeContext@@PAXPAVQDeclarativeRefCount@@PAVQObject@@ABVQString@@HAAVQDeclarativeExpressionPrivate@@@Z @ 87 NONAME ABSENT ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, void *, class QDeclarativeRefCount *, class QObject *, class QString const &, int, class QDeclarativeExpressionPrivate &)
- ??0QDeclarativeExpression@@QAE@PAVQDeclarativeContext@@ABVQString@@PAVQObject@@@Z @ 88 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QString const &, class QObject *)
+ ??0QDeclarativeExpression@@QAE@PAVQDeclarativeContext@@ABVQString@@PAVQObject@@@Z @ 88 NONAME ABSENT ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QString const &, class QObject *)
??0QDeclarativeExpression@@QAE@XZ @ 89 NONAME ; QDeclarativeExpression::QDeclarativeExpression(void)
??0QDeclarativeExtensionPlugin@@QAE@PAVQObject@@@Z @ 90 NONAME ; QDeclarativeExtensionPlugin::QDeclarativeExtensionPlugin(class QObject *)
??0QDeclarativeFlickable@@IAE@AAVQDeclarativeFlickablePrivate@@PAVQDeclarativeItem@@@Z @ 91 NONAME ; QDeclarativeFlickable::QDeclarativeFlickable(class QDeclarativeFlickablePrivate &, class QDeclarativeItem *)
@@ -861,7 +861,7 @@ EXPORTS
?cursorPosition@QDeclarativeTextInput@@QBEHXZ @ 860 NONAME ; int QDeclarativeTextInput::cursorPosition(void) const
?cursorPositionChanged@QDeclarativeTextEdit@@IAEXXZ @ 861 NONAME ; void QDeclarativeTextEdit::cursorPositionChanged(void)
?cursorPositionChanged@QDeclarativeTextInput@@IAEXXZ @ 862 NONAME ; void QDeclarativeTextInput::cursorPositionChanged(void)
- ?cursorRect@QDeclarativeTextEdit@@QBE?AVQRect@@XZ @ 863 NONAME ; class QRect QDeclarativeTextEdit::cursorRect(void) const
+ ?cursorRect@QDeclarativeTextEdit@@QBE?AVQRect@@XZ @ 863 NONAME ABSENT ; class QRect QDeclarativeTextEdit::cursorRect(void) const
?cursorRect@QDeclarativeTextInput@@QBE?AVQRect@@XZ @ 864 NONAME ; class QRect QDeclarativeTextInput::cursorRect(void) const
?cursorVisibleChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 865 NONAME ; void QDeclarativeTextEdit::cursorVisibleChanged(bool)
?cursorVisibleChanged@QDeclarativeTextInput@@IAEX_N@Z @ 866 NONAME ; void QDeclarativeTextInput::cursorVisibleChanged(bool)
@@ -1086,7 +1086,7 @@ EXPORTS
?errors@QDeclarativeCustomParser@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 1085 NONAME ; class QList<class QDeclarativeError> QDeclarativeCustomParser::errors(void) const
?errors@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 1086 NONAME ; class QList<class QDeclarativeError> QDeclarativeDomDocument::errors(void) const
?errors@QDeclarativeView@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 1087 NONAME ; class QList<class QDeclarativeError> QDeclarativeView::errors(void) const
- ?errorsString@QDeclarativeComponent@@QBE?AVQString@@XZ @ 1088 NONAME ; class QString QDeclarativeComponent::errorsString(void) const
+ ?errorsString@QDeclarativeComponent@@QBE?AVQString@@XZ @ 1088 NONAME ABSENT ; class QString QDeclarativeComponent::errorsString(void) const
?eval@QDeclarativeBind@@AAEXXZ @ 1089 NONAME ; void QDeclarativeBind::eval(void)
?evaluate@QDeclarativeVisualDataModel@@UAE?AVQVariant@@HABVQString@@PAVQObject@@@Z @ 1090 NONAME ; class QVariant QDeclarativeVisualDataModel::evaluate(int, class QString const &, class QObject *)
?evaluate@QDeclarativeVisualItemModel@@UAE?AVQVariant@@HABVQString@@PAVQObject@@@Z @ 1091 NONAME ; class QVariant QDeclarativeVisualItemModel::evaluate(int, class QString const &, class QObject *)
@@ -1299,7 +1299,7 @@ EXPORTS
?hasStdCppSet@QMetaPropertyBuilder@@QBE_NXZ @ 1298 NONAME ; bool QMetaPropertyBuilder::hasStdCppSet(void) const
?header@QDeclarativeListView@@QBEPAVQDeclarativeComponent@@XZ @ 1299 NONAME ; class QDeclarativeComponent * QDeclarativeListView::header(void) const
?height@QDeclarativeItem@@QBEMXZ @ 1300 NONAME ; float QDeclarativeItem::height(void) const
- ?height@QDeclarativeParentChange@@QBEMXZ @ 1301 NONAME ; float QDeclarativeParentChange::height(void) const
+ ?height@QDeclarativeParentChange@@QBEMXZ @ 1301 NONAME ABSENT ; float QDeclarativeParentChange::height(void) const
?heightChange@QDeclarativeFlickable@@IAEXXZ @ 1302 NONAME ABSENT ; void QDeclarativeFlickable::heightChange(void)
?heightChanged@QDeclarativeItem@@IAEXXZ @ 1303 NONAME ABSENT ; void QDeclarativeItem::heightChanged(void)
?heightIsSet@QDeclarativeParentChange@@QBE_NXZ @ 1304 NONAME ; bool QDeclarativeParentChange::heightIsSet(void) const
@@ -1813,8 +1813,8 @@ EXPORTS
?orientation@QDeclarativeListView@@QBE?AW4Orientation@1@XZ @ 1812 NONAME ; enum QDeclarativeListView::Orientation QDeclarativeListView::orientation(void) const
?orientationChanged@QDeclarativeListView@@IAEXXZ @ 1813 NONAME ; void QDeclarativeListView::orientationChanged(void)
?originalParent@QDeclarativeParentChange@@QBEPAVQDeclarativeItem@@XZ @ 1814 NONAME ; class QDeclarativeItem * QDeclarativeParentChange::originalParent(void) const
- ?overShoot@QDeclarativeFlickable@@QBE_NXZ @ 1815 NONAME ; bool QDeclarativeFlickable::overShoot(void) const
- ?overShootChanged@QDeclarativeFlickable@@IAEXXZ @ 1816 NONAME ; void QDeclarativeFlickable::overShootChanged(void)
+ ?overShoot@QDeclarativeFlickable@@QBE_NXZ @ 1815 NONAME ABSENT ; bool QDeclarativeFlickable::overShoot(void) const
+ ?overShootChanged@QDeclarativeFlickable@@IAEXXZ @ 1816 NONAME ABSENT ; void QDeclarativeFlickable::overShootChanged(void)
?override@QDeclarativeAnchorChanges@@UAE_NPAVQDeclarativeActionEvent@@@Z @ 1817 NONAME ; bool QDeclarativeAnchorChanges::override(class QDeclarativeActionEvent *)
?override@QDeclarativeParentChange@@UAE_NPAVQDeclarativeActionEvent@@@Z @ 1818 NONAME ; bool QDeclarativeParentChange::override(class QDeclarativeActionEvent *)
?pace@QDeclarativeParticleMotionWander@@QBEMXZ @ 1819 NONAME ABSENT ; float QDeclarativeParticleMotionWander::pace(void) const
@@ -2247,7 +2247,7 @@ EXPORTS
?rootIndexChanged@QDeclarativeVisualDataModel@@IAEXXZ @ 2246 NONAME ; void QDeclarativeVisualDataModel::rootIndexChanged(void)
?rootObject@QDeclarativeDomDocument@@QBE?AVQDeclarativeDomObject@@XZ @ 2247 NONAME ; class QDeclarativeDomObject QDeclarativeDomDocument::rootObject(void) const
?rootObject@QDeclarativeView@@QBEPAVQGraphicsObject@@XZ @ 2248 NONAME ; class QGraphicsObject * QDeclarativeView::rootObject(void) const
- ?rotation@QDeclarativeParentChange@@QBEMXZ @ 2249 NONAME ; float QDeclarativeParentChange::rotation(void) const
+ ?rotation@QDeclarativeParentChange@@QBEMXZ @ 2249 NONAME ABSENT ; float QDeclarativeParentChange::rotation(void) const
?rotationIsSet@QDeclarativeParentChange@@QBE_NXZ @ 2250 NONAME ; bool QDeclarativeParentChange::rotationIsSet(void) const
?rows@QDeclarativeGrid@@QBEHXZ @ 2251 NONAME ; int QDeclarativeGrid::rows(void) const
?rowsChanged@QDeclarativeGrid@@IAEXXZ @ 2252 NONAME ; void QDeclarativeGrid::rowsChanged(void)
@@ -2257,7 +2257,7 @@ EXPORTS
?saveCurrentValues@QDeclarativeParentChange@@UAEXXZ @ 2256 NONAME ; void QDeclarativeParentChange::saveCurrentValues(void)
?saveOriginals@QDeclarativeAnchorChanges@@UAEXXZ @ 2257 NONAME ; void QDeclarativeAnchorChanges::saveOriginals(void)
?saveOriginals@QDeclarativeParentChange@@UAEXXZ @ 2258 NONAME ; void QDeclarativeParentChange::saveOriginals(void)
- ?scale@QDeclarativeParentChange@@QBEMXZ @ 2259 NONAME ; float QDeclarativeParentChange::scale(void) const
+ ?scale@QDeclarativeParentChange@@QBEMXZ @ 2259 NONAME ABSENT ; float QDeclarativeParentChange::scale(void) const
?scaleIsSet@QDeclarativeParentChange@@QBE_NXZ @ 2260 NONAME ; bool QDeclarativeParentChange::scaleIsSet(void) const
?sceneEvent@QDeclarativeFocusPanel@@MAE_NPAVQEvent@@@Z @ 2261 NONAME ; bool QDeclarativeFocusPanel::sceneEvent(class QEvent *)
?sceneEvent@QDeclarativeItem@@MAE_NPAVQEvent@@@Z @ 2262 NONAME ; bool QDeclarativeItem::sceneEvent(class QEvent *)
@@ -2346,7 +2346,7 @@ EXPORTS
?setColumn@QDeclarativeError@@QAEXH@Z @ 2345 NONAME ; void QDeclarativeError::setColumn(int)
?setColumnNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 2346 NONAME ; void QDeclarativeDebugFileReference::setColumnNumber(int)
?setColumns@QDeclarativeGrid@@QAEXH@Z @ 2347 NONAME ; void QDeclarativeGrid::setColumns(int)
- ?setConsistentTime@QDeclarativeItemPrivate@@SAXH@Z @ 2348 NONAME ; void QDeclarativeItemPrivate::setConsistentTime(int)
+ ?setConsistentTime@QDeclarativeItemPrivate@@SAXH@Z @ 2348 NONAME ABSENT ; void QDeclarativeItemPrivate::setConsistentTime(int)
?setContent@QDeclarativeWebView@@QAEXABVQByteArray@@ABVQString@@ABVQUrl@@@Z @ 2349 NONAME ABSENT ; void QDeclarativeWebView::setContent(class QByteArray const &, class QString const &, class QUrl const &)
?setContentHeight@QDeclarativeFlickable@@QAEXM@Z @ 2350 NONAME ; void QDeclarativeFlickable::setContentHeight(float)
?setContentWidth@QDeclarativeFlickable@@QAEXM@Z @ 2351 NONAME ; void QDeclarativeFlickable::setContentWidth(float)
@@ -2437,7 +2437,7 @@ EXPORTS
?setHAlign@QDeclarativeTextInput@@QAEXW4HAlignment@1@@Z @ 2436 NONAME ; void QDeclarativeTextInput::setHAlign(enum QDeclarativeTextInput::HAlignment)
?setHeader@QDeclarativeListView@@QAEXPAVQDeclarativeComponent@@@Z @ 2437 NONAME ; void QDeclarativeListView::setHeader(class QDeclarativeComponent *)
?setHeight@QDeclarativeItem@@QAEXM@Z @ 2438 NONAME ; void QDeclarativeItem::setHeight(float)
- ?setHeight@QDeclarativeParentChange@@QAEXM@Z @ 2439 NONAME ; void QDeclarativeParentChange::setHeight(float)
+ ?setHeight@QDeclarativeParentChange@@QAEXM@Z @ 2439 NONAME ABSENT ; void QDeclarativeParentChange::setHeight(float)
?setHighlight@QDeclarativeGridView@@QAEXPAVQDeclarativeComponent@@@Z @ 2440 NONAME ; void QDeclarativeGridView::setHighlight(class QDeclarativeComponent *)
?setHighlight@QDeclarativeListView@@QAEXPAVQDeclarativeComponent@@@Z @ 2441 NONAME ; void QDeclarativeListView::setHighlight(class QDeclarativeComponent *)
?setHighlightFollowsCurrentItem@QDeclarativeGridView@@QAEX_N@Z @ 2442 NONAME ; void QDeclarativeGridView::setHighlightFollowsCurrentItem(bool)
@@ -2506,7 +2506,7 @@ EXPORTS
?setOfflineStoragePath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 2505 NONAME ; void QDeclarativeEngine::setOfflineStoragePath(class QString const &)
?setOffset@QDeclarativePathView@@QAEXM@Z @ 2506 NONAME ; void QDeclarativePathView::setOffset(float)
?setOrientation@QDeclarativeListView@@QAEXW4Orientation@1@@Z @ 2507 NONAME ; void QDeclarativeListView::setOrientation(enum QDeclarativeListView::Orientation)
- ?setOverShoot@QDeclarativeFlickable@@QAEX_N@Z @ 2508 NONAME ; void QDeclarativeFlickable::setOverShoot(bool)
+ ?setOverShoot@QDeclarativeFlickable@@QAEX_N@Z @ 2508 NONAME ABSENT ; void QDeclarativeFlickable::setOverShoot(bool)
?setPace@QDeclarativeParticleMotionWander@@QAEXM@Z @ 2509 NONAME ABSENT ; void QDeclarativeParticleMotionWander::setPace(float)
?setPage@QDeclarativeWebView@@QAEXPAVQWebPage@@@Z @ 2510 NONAME ABSENT ; void QDeclarativeWebView::setPage(class QWebPage *)
?setParameterNames@QMetaMethodBuilder@@QAEXABV?$QList@VQByteArray@@@@@Z @ 2511 NONAME ; void QMetaMethodBuilder::setParameterNames(class QList<class QByteArray> const &)
@@ -2555,10 +2555,10 @@ EXPORTS
?setRightMargin@QDeclarativeAnchors@@QAEXM@Z @ 2554 NONAME ; void QDeclarativeAnchors::setRightMargin(float)
?setRootIndex@QDeclarativeVisualDataModel@@QAEXABVQModelIndex@@@Z @ 2555 NONAME ABSENT ; void QDeclarativeVisualDataModel::setRootIndex(class QModelIndex const &)
?setRootObject@QDeclarativeView@@MAEXPAVQObject@@@Z @ 2556 NONAME ; void QDeclarativeView::setRootObject(class QObject *)
- ?setRotation@QDeclarativeParentChange@@QAEXM@Z @ 2557 NONAME ; void QDeclarativeParentChange::setRotation(float)
+ ?setRotation@QDeclarativeParentChange@@QAEXM@Z @ 2557 NONAME ABSENT ; void QDeclarativeParentChange::setRotation(float)
?setRows@QDeclarativeGrid@@QAEXH@Z @ 2558 NONAME ; void QDeclarativeGrid::setRows(int)
?setRunning@QDeclarativeTimer@@QAEX_N@Z @ 2559 NONAME ; void QDeclarativeTimer::setRunning(bool)
- ?setScale@QDeclarativeParentChange@@QAEXM@Z @ 2560 NONAME ; void QDeclarativeParentChange::setScale(float)
+ ?setScale@QDeclarativeParentChange@@QAEXM@Z @ 2560 NONAME ABSENT ; void QDeclarativeParentChange::setScale(float)
?setScopeObject@QDeclarativeScriptString@@QAEXPAVQObject@@@Z @ 2561 NONAME ; void QDeclarativeScriptString::setScopeObject(class QObject *)
?setScript@QDeclarativeScriptString@@QAEXABVQString@@@Z @ 2562 NONAME ; void QDeclarativeScriptString::setScript(class QString const &)
?setScript@QDeclarativeStateChangeScript@@QAEXABVQDeclarativeScriptString@@@Z @ 2563 NONAME ; void QDeclarativeStateChangeScript::setScript(class QDeclarativeScriptString const &)
@@ -2651,7 +2651,7 @@ EXPORTS
?setWhen@QDeclarativeBind@@QAEX_N@Z @ 2650 NONAME ; void QDeclarativeBind::setWhen(bool)
?setWhen@QDeclarativeState@@QAEXPAVQDeclarativeBinding@@@Z @ 2651 NONAME ; void QDeclarativeState::setWhen(class QDeclarativeBinding *)
?setWidth@QDeclarativeItem@@QAEXM@Z @ 2652 NONAME ; void QDeclarativeItem::setWidth(float)
- ?setWidth@QDeclarativeParentChange@@QAEXM@Z @ 2653 NONAME ; void QDeclarativeParentChange::setWidth(float)
+ ?setWidth@QDeclarativeParentChange@@QAEXM@Z @ 2653 NONAME ABSENT ; void QDeclarativeParentChange::setWidth(float)
?setWidth@QDeclarativePen@@QAEXH@Z @ 2654 NONAME ; void QDeclarativePen::setWidth(int)
?setWrap@QDeclarativeText@@QAEX_N@Z @ 2655 NONAME ABSENT ; void QDeclarativeText::setWrap(bool)
?setWrap@QDeclarativeTextEdit@@QAEX_N@Z @ 2656 NONAME ABSENT ; void QDeclarativeTextEdit::setWrap(bool)
@@ -2659,14 +2659,14 @@ EXPORTS
?setWrapEnabled@QDeclarativeListView@@QAEX_N@Z @ 2658 NONAME ; void QDeclarativeListView::setWrapEnabled(bool)
?setWritable@QMetaPropertyBuilder@@QAEX_N@Z @ 2659 NONAME ; void QMetaPropertyBuilder::setWritable(bool)
?setX@QDeclarativeCurve@@QAEXM@Z @ 2660 NONAME ; void QDeclarativeCurve::setX(float)
- ?setX@QDeclarativeParentChange@@QAEXM@Z @ 2661 NONAME ; void QDeclarativeParentChange::setX(float)
+ ?setX@QDeclarativeParentChange@@QAEXM@Z @ 2661 NONAME ABSENT ; void QDeclarativeParentChange::setX(float)
?setXAttractor@QDeclarativeParticleMotionGravity@@QAEXM@Z @ 2662 NONAME ABSENT ; void QDeclarativeParticleMotionGravity::setXAttractor(float)
?setXVariance@QDeclarativeParticleMotionWander@@QAEXM@Z @ 2663 NONAME ABSENT ; void QDeclarativeParticleMotionWander::setXVariance(float)
?setXmax@QDeclarativeDrag@@QAEXM@Z @ 2664 NONAME ; void QDeclarativeDrag::setXmax(float)
?setXmin@QDeclarativeDrag@@QAEXM@Z @ 2665 NONAME ; void QDeclarativeDrag::setXmin(float)
?setXml@QDeclarativeXmlListModel@@QAEXABVQString@@@Z @ 2666 NONAME ; void QDeclarativeXmlListModel::setXml(class QString const &)
?setY@QDeclarativeCurve@@QAEXM@Z @ 2667 NONAME ; void QDeclarativeCurve::setY(float)
- ?setY@QDeclarativeParentChange@@QAEXM@Z @ 2668 NONAME ; void QDeclarativeParentChange::setY(float)
+ ?setY@QDeclarativeParentChange@@QAEXM@Z @ 2668 NONAME ABSENT ; void QDeclarativeParentChange::setY(float)
?setYAttractor@QDeclarativeParticleMotionGravity@@QAEXM@Z @ 2669 NONAME ABSENT ; void QDeclarativeParticleMotionGravity::setYAttractor(float)
?setYVariance@QDeclarativeParticleMotionWander@@QAEXM@Z @ 2670 NONAME ABSENT ; void QDeclarativeParticleMotionWander::setYVariance(float)
?setYmax@QDeclarativeDrag@@QAEXM@Z @ 2671 NONAME ; void QDeclarativeDrag::setYmax(float)
@@ -3298,7 +3298,7 @@ EXPORTS
?when@QDeclarativeBind@@QBE_NXZ @ 3297 NONAME ; bool QDeclarativeBind::when(void) const
?when@QDeclarativeState@@QBEPAVQDeclarativeBinding@@XZ @ 3298 NONAME ; class QDeclarativeBinding * QDeclarativeState::when(void) const
?width@QDeclarativeItem@@QBEMXZ @ 3299 NONAME ; float QDeclarativeItem::width(void) const
- ?width@QDeclarativeParentChange@@QBEMXZ @ 3300 NONAME ; float QDeclarativeParentChange::width(void) const
+ ?width@QDeclarativeParentChange@@QBEMXZ @ 3300 NONAME ABSENT ; float QDeclarativeParentChange::width(void) const
?width@QDeclarativePen@@QBEHXZ @ 3301 NONAME ; int QDeclarativePen::width(void) const
?widthChange@QDeclarativeFlickable@@IAEXXZ @ 3302 NONAME ABSENT ; void QDeclarativeFlickable::widthChange(void)
?widthChanged@QDeclarativeItem@@IAEXXZ @ 3303 NONAME ABSENT ; void QDeclarativeItem::widthChanged(void)
@@ -3317,7 +3317,7 @@ EXPORTS
?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@PAVQDeclarativeContext@@@Z @ 3316 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &, class QDeclarativeContext *)
?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@PAVQDeclarativeEngine@@@Z @ 3317 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &, class QDeclarativeEngine *)
?x@QDeclarativeCurve@@QBEMXZ @ 3318 NONAME ; float QDeclarativeCurve::x(void) const
- ?x@QDeclarativeParentChange@@QBEMXZ @ 3319 NONAME ; float QDeclarativeParentChange::x(void) const
+ ?x@QDeclarativeParentChange@@QBEMXZ @ 3319 NONAME ABSENT ; float QDeclarativeParentChange::x(void) const
?xAttractor@QDeclarativeParticleMotionGravity@@QBEMXZ @ 3320 NONAME ABSENT ; float QDeclarativeParticleMotionGravity::xAttractor(void) const
?xIsSet@QDeclarativeParentChange@@QBE_NXZ @ 3321 NONAME ; bool QDeclarativeParentChange::xIsSet(void) const
?xToPos@QDeclarativeTextInput@@QAEHH@Z @ 3322 NONAME ABSENT ; int QDeclarativeTextInput::xToPos(int)
@@ -3329,7 +3329,7 @@ EXPORTS
?xml@QDeclarativeXmlListModel@@QBE?AVQString@@XZ @ 3328 NONAME ; class QString QDeclarativeXmlListModel::xml(void) const
?xvarianceChanged@QDeclarativeParticleMotionWander@@IAEXXZ @ 3329 NONAME ABSENT ; void QDeclarativeParticleMotionWander::xvarianceChanged(void)
?y@QDeclarativeCurve@@QBEMXZ @ 3330 NONAME ; float QDeclarativeCurve::y(void) const
- ?y@QDeclarativeParentChange@@QBEMXZ @ 3331 NONAME ; float QDeclarativeParentChange::y(void) const
+ ?y@QDeclarativeParentChange@@QBEMXZ @ 3331 NONAME ABSENT ; float QDeclarativeParentChange::y(void) const
?yAttractor@QDeclarativeParticleMotionGravity@@QBEMXZ @ 3332 NONAME ABSENT ; float QDeclarativeParticleMotionGravity::yAttractor(void) const
?yIsSet@QDeclarativeParentChange@@QBE_NXZ @ 3333 NONAME ; bool QDeclarativeParentChange::yIsSet(void) const
?yVariance@QDeclarativeParticleMotionWander@@QBEMXZ @ 3334 NONAME ABSENT ; float QDeclarativeParticleMotionWander::yVariance(void) const
@@ -3500,8 +3500,8 @@ EXPORTS
??0QDeclarativeBinding@@QAE@PAXPAVQDeclarativeRefCount@@PAVQObject@@PAVQDeclarativeContextData@@ABVQString@@H2@Z @ 3499 NONAME ; QDeclarativeBinding::QDeclarativeBinding(void *, class QDeclarativeRefCount *, class QObject *, class QDeclarativeContextData *, class QString const &, int, class QObject *)
??0QDeclarativeContext@@AAE@PAVQDeclarativeContextData@@@Z @ 3500 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeContextData *)
??0QDeclarativeCustomParser@@QAE@XZ @ 3501 NONAME ; QDeclarativeCustomParser::QDeclarativeCustomParser(void)
- ??0QDeclarativeExpression@@AAE@PAVQDeclarativeContextData@@ABVQString@@PAVQObject@@@Z @ 3502 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QString const &, class QObject *)
- ??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@ABVQString@@PAVQObject@@AAVQDeclarativeExpressionPrivate@@@Z @ 3503 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QString const &, class QObject *, class QDeclarativeExpressionPrivate &)
+ ??0QDeclarativeExpression@@AAE@PAVQDeclarativeContextData@@ABVQString@@PAVQObject@@@Z @ 3502 NONAME ABSENT ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QString const &, class QObject *)
+ ??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@ABVQString@@PAVQObject@@AAVQDeclarativeExpressionPrivate@@@Z @ 3503 NONAME ABSENT ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QString const &, class QObject *, class QDeclarativeExpressionPrivate &)
??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@PAXPAVQDeclarativeRefCount@@PAVQObject@@ABVQString@@HAAVQDeclarativeExpressionPrivate@@@Z @ 3504 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, void *, class QDeclarativeRefCount *, class QObject *, class QString const &, int, class QDeclarativeExpressionPrivate &)
??0QDeclarativeItemPrivate@@QAE@XZ @ 3505 NONAME ; QDeclarativeItemPrivate::QDeclarativeItemPrivate(void)
??0QDeclarativeListModel@@AAE@_NPAVQObject@@@Z @ 3506 NONAME ; QDeclarativeListModel::QDeclarativeListModel(bool, class QObject *)
@@ -3567,7 +3567,7 @@ EXPORTS
?countChanged@QDeclarativeListModel@@IAEXXZ @ 3566 NONAME ; void QDeclarativeListModel::countChanged(void)
?countChanged@QDeclarativePathView@@IAEXXZ @ 3567 NONAME ; void QDeclarativePathView::countChanged(void)
?create@QDeclarativeType@@QBEXPAPAVQObject@@PAPAXI@Z @ 3568 NONAME ; void QDeclarativeType::create(class QObject * *, void * *, unsigned int) const
- ?currentTime@QDeclarativeItemPrivate@@SA?AVQTime@@XZ @ 3569 NONAME ; class QTime QDeclarativeItemPrivate::currentTime(void)
+ ?currentTime@QDeclarativeItemPrivate@@SA?AVQTime@@XZ @ 3569 NONAME ABSENT ; class QTime QDeclarativeItemPrivate::currentTime(void)
?d_func@QDeclarativeFocusPanel@@AAEPAVQDeclarativeItemPrivate@@XZ @ 3570 NONAME ; class QDeclarativeItemPrivate * QDeclarativeFocusPanel::d_func(void)
?d_func@QDeclarativeFocusPanel@@ABEPBVQDeclarativeItemPrivate@@XZ @ 3571 NONAME ; class QDeclarativeItemPrivate const * QDeclarativeFocusPanel::d_func(void) const
?d_func@QDeclarativeFocusScope@@AAEPAVQDeclarativeItemPrivate@@XZ @ 3572 NONAME ; class QDeclarativeItemPrivate * QDeclarativeFocusScope::d_func(void)
@@ -3588,7 +3588,7 @@ EXPORTS
?doPositioning@QDeclarativeRow@@MAEXPAVQSizeF@@@Z @ 3587 NONAME ; void QDeclarativeRow::doPositioning(class QSizeF *)
?dragMarginChanged@QDeclarativePathView@@IAEXXZ @ 3588 NONAME ; void QDeclarativePathView::dragMarginChanged(void)
?duration@QDeclarativeSmoothedAnimation@@UBEHXZ @ 3589 NONAME ; int QDeclarativeSmoothedAnimation::duration(void) const
- ?elapsed@QDeclarativeItemPrivate@@SAHAAVQTime@@@Z @ 3590 NONAME ; int QDeclarativeItemPrivate::elapsed(class QTime &)
+ ?elapsed@QDeclarativeItemPrivate@@SAHAAVQTime@@@Z @ 3590 NONAME ABSENT ; int QDeclarativeItemPrivate::elapsed(class QTime &)
?evaluateEnum@QDeclarativeCompiler@@QBEHABVQByteArray@@@Z @ 3591 NONAME ; int QDeclarativeCompiler::evaluateEnum(class QByteArray const &) const
?evaluateEnum@QDeclarativeCustomParser@@IBEHABVQByteArray@@@Z @ 3592 NONAME ; int QDeclarativeCustomParser::evaluateEnum(class QByteArray const &) const
?event@QDeclarativeGridView@@MAE_NPAVQEvent@@@Z @ 3593 NONAME ; bool QDeclarativeGridView::event(class QEvent *)
@@ -3711,7 +3711,7 @@ EXPORTS
?resources_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@PAVQObject@@@Z @ 3710 NONAME ; void QDeclarativeItemPrivate::resources_append(class QDeclarativeListProperty<class QObject> *, class QObject *)
?resources_at@QDeclarativeItemPrivate@@SAPAVQObject@@PAV?$QDeclarativeListProperty@VQObject@@@@H@Z @ 3711 NONAME ; class QObject * QDeclarativeItemPrivate::resources_at(class QDeclarativeListProperty<class QObject> *, int)
?resources_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 3712 NONAME ; int QDeclarativeItemPrivate::resources_count(class QDeclarativeListProperty<class QObject> *)
- ?restart@QDeclarativeItemPrivate@@SAHAAVQTime@@@Z @ 3713 NONAME ; int QDeclarativeItemPrivate::restart(class QTime &)
+ ?restart@QDeclarativeItemPrivate@@SAHAAVQTime@@@Z @ 3713 NONAME ABSENT ; int QDeclarativeItemPrivate::restart(class QTime &)
?restore@QDeclarativePropertyPrivate@@SA?AVQDeclarativeProperty@@ABVQByteArray@@PAVQObject@@PAVQDeclarativeContextData@@@Z @ 3714 NONAME ; class QDeclarativeProperty QDeclarativePropertyPrivate::restore(class QByteArray const &, class QObject *, class QDeclarativeContextData *)
?reversibleChanged@QDeclarativeTransition@@IAEXXZ @ 3715 NONAME ; void QDeclarativeTransition::reversibleChanged(void)
?reversingMode@QDeclarativeSmoothedAnimation@@QBE?AW4ReversingMode@1@XZ @ 3716 NONAME ; enum QDeclarativeSmoothedAnimation::ReversingMode QDeclarativeSmoothedAnimation::reversingMode(void) const
@@ -3768,7 +3768,7 @@ EXPORTS
?sourceChanged@QDeclarativeXmlListModel@@IAEXXZ @ 3767 NONAME ; void QDeclarativeXmlListModel::sourceChanged(void)
?sourceSize@QDeclarativeImageBase@@QBE?AVQSize@@XZ @ 3768 NONAME ; class QSize QDeclarativeImageBase::sourceSize(void) const
?sourceSizeChanged@QDeclarativeImageBase@@IAEXXZ @ 3769 NONAME ; void QDeclarativeImageBase::sourceSizeChanged(void)
- ?start@QDeclarativeItemPrivate@@SAXAAVQTime@@@Z @ 3770 NONAME ; void QDeclarativeItemPrivate::start(class QTime &)
+ ?start@QDeclarativeItemPrivate@@SAXAAVQTime@@@Z @ 3770 NONAME ABSENT ; void QDeclarativeItemPrivate::start(class QTime &)
?startXChanged@QDeclarativePath@@IAEXXZ @ 3771 NONAME ; void QDeclarativePath::startXChanged(void)
?startYChanged@QDeclarativePath@@IAEXXZ @ 3772 NONAME ; void QDeclarativePath::startYChanged(void)
?states@QDeclarativeItem@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeState@@@@XZ @ 3773 NONAME ABSENT ; class QDeclarativeListProperty<class QDeclarativeState> QDeclarativeItem::states(void)
@@ -3817,7 +3817,7 @@ EXPORTS
?staticMetaObject@QDeclarativeWorkerScript@@2UQMetaObject@@B @ 3816 NONAME ; struct QMetaObject const QDeclarativeWorkerScript::staticMetaObject
?staticMetaObject@QDeclarativeSmoothedAnimation@@2UQMetaObject@@B @ 3817 NONAME ; struct QMetaObject const QDeclarativeSmoothedAnimation::staticMetaObject
?staticMetaObject@QDeclarativeTranslate@@2UQMetaObject@@B @ 3818 NONAME ; struct QMetaObject const QDeclarativeTranslate::staticMetaObject
- ?consistentTime@QDeclarativeItemPrivate@@2HA @ 3819 NONAME ; int QDeclarativeItemPrivate::consistentTime
+ ?consistentTime@QDeclarativeItemPrivate@@2HA @ 3819 NONAME ABSENT ; int QDeclarativeItemPrivate::consistentTime
??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@ABVQVariant@@@Z @ 3820 NONAME ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QDeclarativeContext *, class QVariant const &)
??0QDeclarativeSmoothedFollow@@QAE@PAVQObject@@@Z @ 3821 NONAME ; QDeclarativeSmoothedFollow::QDeclarativeSmoothedFollow(class QObject *)
??1QDeclarativeSmoothedFollow@@UAE@XZ @ 3822 NONAME ; QDeclarativeSmoothedFollow::~QDeclarativeSmoothedFollow(void)
@@ -4020,4 +4020,58 @@ EXPORTS
?keyReleasePreHandler@QDeclarativeItem@@IAEXPAVQKeyEvent@@@Z @ 4019 NONAME ; void QDeclarativeItem::keyReleasePreHandler(class QKeyEvent *)
?loaded@QDeclarativeLoader@@IAEXXZ @ 4020 NONAME ; void QDeclarativeLoader::loaded(void)
?needsCopy@QDeclarativeAnchorChanges@@UAE_NXZ @ 4021 NONAME ; bool QDeclarativeAnchorChanges::needsCopy(void)
+ ?closeSoftwareInputPanel@QDeclarativeTextEdit@@QAEXXZ @ 4022 NONAME ; void QDeclarativeTextEdit::closeSoftwareInputPanel(void)
+ ?restart@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 4023 NONAME ; long long QDeclarativeItemPrivate::restart(class QElapsedTimer &)
+ ?get@QDeclarativeXmlListModel@@QBE?AVQScriptValue@@H@Z @ 4024 NONAME ; class QScriptValue QDeclarativeXmlListModel::get(int) const
+ ?setScale@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4025 NONAME ; void QDeclarativeParentChange::setScale(class QDeclarativeScriptString)
+ ?showInputPanelOnFocusChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 4026 NONAME ; void QDeclarativeTextEdit::showInputPanelOnFocusChanged(bool)
+ ?focusOutEvent@QDeclarativeTextInput@@MAEXPAVQFocusEvent@@@Z @ 4027 NONAME ; void QDeclarativeTextInput::focusOutEvent(class QFocusEvent *)
+ ?height@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4028 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::height(void) const
+ ?showInputPanelOnFocus@QDeclarativeTextEdit@@QBE_NXZ @ 4029 NONAME ; bool QDeclarativeTextEdit::showInputPanelOnFocus(void) const
+ ?errorString@QDeclarativeComponent@@QBE?AVQString@@XZ @ 4030 NONAME ; class QString QDeclarativeComponent::errorString(void) const
+ ?elapsed@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 4031 NONAME ; long long QDeclarativeItemPrivate::elapsed(class QElapsedTimer &)
+ ?focusInEvent@QDeclarativeTextInput@@MAEXPAVQFocusEvent@@@Z @ 4032 NONAME ; void QDeclarativeTextInput::focusInEvent(class QFocusEvent *)
+ ?setX@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4033 NONAME ; void QDeclarativeParentChange::setX(class QDeclarativeScriptString)
+ ?rotation@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4034 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::rotation(void) const
+ ?paintedHeight@QDeclarativeTextEdit@@QBEMXZ @ 4035 NONAME ; float QDeclarativeTextEdit::paintedHeight(void) const
+ ?paintedWidth@QDeclarativeTextEdit@@QBEMXZ @ 4036 NONAME ; float QDeclarativeTextEdit::paintedWidth(void) const
+ ?focusOutEvent@QDeclarativeTextEdit@@MAEXPAVQFocusEvent@@@Z @ 4037 NONAME ; void QDeclarativeTextEdit::focusOutEvent(class QFocusEvent *)
+ ??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@PAVQObject@@ABVQString@@AAVQDeclarativeExpressionPrivate@@@Z @ 4038 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QObject *, class QString const &, class QDeclarativeExpressionPrivate &)
+ ??0QDeclarativeExpression@@QAE@PAVQDeclarativeContext@@PAVQObject@@ABVQString@@1@Z @ 4039 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QObject *, class QString const &, class QObject *)
+ ?queryError@QDeclarativeXmlListModel@@AAEXPAXABVQString@@@Z @ 4040 NONAME ; void QDeclarativeXmlListModel::queryError(void *, class QString const &)
+ ?errorString@QDeclarativeXmlListModel@@QBE?AVQString@@XZ @ 4041 NONAME ; class QString QDeclarativeXmlListModel::errorString(void) const
+ ?consistentTime@QDeclarativeItemPrivate@@2_JA @ 4042 NONAME ; long long QDeclarativeItemPrivate::consistentTime
+ ?scale@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4043 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::scale(void) const
+ ?showInputPanelOnFocus@QDeclarativeTextInput@@QBE_NXZ @ 4044 NONAME ; bool QDeclarativeTextInput::showInputPanelOnFocus(void) const
+ ?focusInEvent@QDeclarativeTextEdit@@MAEXPAVQFocusEvent@@@Z @ 4045 NONAME ; void QDeclarativeTextEdit::focusInEvent(class QFocusEvent *)
+ ?y@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4046 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::y(void) const
+ ?setY@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4047 NONAME ; void QDeclarativeParentChange::setY(class QDeclarativeScriptString)
+ ?setShowInputPanelOnFocus@QDeclarativeTextEdit@@QAEX_N@Z @ 4048 NONAME ; void QDeclarativeTextEdit::setShowInputPanelOnFocus(bool)
+ ?paintedSizeChanged@QDeclarativeText@@IAEXXZ @ 4049 NONAME ; void QDeclarativeText::paintedSizeChanged(void)
+ ?selectByMouseChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 4050 NONAME ; void QDeclarativeTextEdit::selectByMouseChanged(bool)
+ ?openSoftwareInputPanel@QDeclarativeTextInput@@QAEXXZ @ 4051 NONAME ; void QDeclarativeTextInput::openSoftwareInputPanel(void)
+ ?setShowInputPanelOnFocus@QDeclarativeTextInput@@QAEX_N@Z @ 4052 NONAME ; void QDeclarativeTextInput::setShowInputPanelOnFocus(bool)
+ ?boundingRect@QDeclarativePaintedItem@@MBE?AVQRectF@@XZ @ 4053 NONAME ; class QRectF QDeclarativePaintedItem::boundingRect(void) const
+ ?closeSoftwareInputPanel@QDeclarativeTextInput@@QAEXXZ @ 4054 NONAME ; void QDeclarativeTextInput::closeSoftwareInputPanel(void)
+ ?setWidth@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4055 NONAME ; void QDeclarativeParentChange::setWidth(class QDeclarativeScriptString)
+ ?selectByMouse@QDeclarativeTextInput@@QBE_NXZ @ 4056 NONAME ; bool QDeclarativeTextInput::selectByMouse(void) const
+ ?setRotation@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4057 NONAME ; void QDeclarativeParentChange::setRotation(class QDeclarativeScriptString)
+ ?paintedWidth@QDeclarativeText@@QBEMXZ @ 4058 NONAME ; float QDeclarativeText::paintedWidth(void) const
+ ?paintedSizeChanged@QDeclarativeTextEdit@@IAEXXZ @ 4059 NONAME ; void QDeclarativeTextEdit::paintedSizeChanged(void)
+ ?setConsistentTime@QDeclarativeItemPrivate@@SAX_J@Z @ 4060 NONAME ; void QDeclarativeItemPrivate::setConsistentTime(long long)
+ ??0QDeclarativeExpression@@AAE@PAVQDeclarativeContextData@@PAVQObject@@ABVQString@@@Z @ 4061 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QObject *, class QString const &)
+ ?event@QDeclarativePathView@@MAE_NPAVQEvent@@@Z @ 4062 NONAME ; bool QDeclarativePathView::event(class QEvent *)
+ ?paintedHeight@QDeclarativeText@@QBEMXZ @ 4063 NONAME ; float QDeclarativeText::paintedHeight(void) const
+ ?setSelectByMouse@QDeclarativeTextInput@@QAEX_N@Z @ 4064 NONAME ; void QDeclarativeTextInput::setSelectByMouse(bool)
+ ?setSelectByMouse@QDeclarativeTextEdit@@QAEX_N@Z @ 4065 NONAME ; void QDeclarativeTextEdit::setSelectByMouse(bool)
+ ?selectByMouse@QDeclarativeTextEdit@@QBE_NXZ @ 4066 NONAME ; bool QDeclarativeTextEdit::selectByMouse(void) const
+ ?setHeight@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4067 NONAME ; void QDeclarativeParentChange::setHeight(class QDeclarativeScriptString)
+ ?start@QDeclarativeItemPrivate@@SAXAAVQElapsedTimer@@@Z @ 4068 NONAME ; void QDeclarativeItemPrivate::start(class QElapsedTimer &)
+ ?showInputPanelOnFocusChanged@QDeclarativeTextInput@@IAEX_N@Z @ 4069 NONAME ; void QDeclarativeTextInput::showInputPanelOnFocusChanged(bool)
+ ?x@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4070 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::x(void) const
+ ?selectByMouseChanged@QDeclarativeTextInput@@IAEX_N@Z @ 4071 NONAME ; void QDeclarativeTextInput::selectByMouseChanged(bool)
+ ?width@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4072 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::width(void) const
+ ?openSoftwareInputPanel@QDeclarativeTextEdit@@QAEXXZ @ 4073 NONAME ; void QDeclarativeTextEdit::openSoftwareInputPanel(void)
+ ?cursorRectangleChanged@QDeclarativeTextEdit@@IAEXXZ @ 4074 NONAME ; void QDeclarativeTextEdit::cursorRectangleChanged(void)
+ ?cursorRectangle@QDeclarativeTextEdit@@QBE?AVQRect@@XZ @ 4075 NONAME ; class QRect QDeclarativeTextEdit::cursorRectangle(void) const
diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def
index 15addf6..a1e05e2 100644
--- a/src/s60installs/bwins/QtGuiu.def
+++ b/src/s60installs/bwins/QtGuiu.def
@@ -12548,274 +12548,261 @@ EXPORTS
?timerEvent@QS60Style@@MAEXPAVQTimerEvent@@@Z @ 12547 NONAME ; void QS60Style::timerEvent(class QTimerEvent *)
?updateAncestorFlags@QGraphicsItemPrivate@@QAEXXZ @ 12548 NONAME ; void QGraphicsItemPrivate::updateAncestorFlags(void)
?updateChildWithGraphicsEffectFlagRecursively@QGraphicsItemPrivate@@QAEXXZ @ 12549 NONAME ; void QGraphicsItemPrivate::updateChildWithGraphicsEffectFlagRecursively(void)
- ?isOpacityNull@QGraphicsItemPrivate@@SA_NM@Z @ 12550 NONAME ; bool QGraphicsItemPrivate::isOpacityNull(float)
- ?isOpacityNull@QGraphicsItemPrivate@@QBE_NXZ @ 12551 NONAME ; bool QGraphicsItemPrivate::isOpacityNull(void) const
- ?api@QEglContext@@QBE?AW4API@QEgl@@XZ @ 12552 NONAME ABSENT ; enum QEgl::API QEglContext::api(void) const
+ ?api@QEglContext@@QBE?AW4API@QEgl@@XZ @ 12550 NONAME ; enum QEgl::API QEglContext::api(void) const
+ ?display@QEglContext@@SAHXZ @ 12551 NONAME ABSENT ; int QEglContext::display(void)
+ ?isOpacityNull@QGraphicsItemPrivate@@SA_NM@Z @ 12552 NONAME ; bool QGraphicsItemPrivate::isOpacityNull(float)
?chooseConfig@QEglContext@@QAE_NABVQEglProperties@@W4PixelFormatMatch@QEgl@@@Z @ 12553 NONAME ; bool QEglContext::chooseConfig(class QEglProperties const &, enum QEgl::PixelFormatMatch)
?destroySurface@QEglContext@@QAEXH@Z @ 12554 NONAME ; void QEglContext::destroySurface(int)
?lazyDoneCurrent@QEglContext@@QAE_NXZ @ 12555 NONAME ; bool QEglContext::lazyDoneCurrent(void)
?waitNative@QEglContext@@QAEXXZ @ 12556 NONAME ABSENT ; void QEglContext::waitNative(void)
- ?context@QEglContext@@QBEHXZ @ 12557 NONAME ABSENT ; int QEglContext::context(void) const
+ ?context@QEglContext@@QBEHXZ @ 12557 NONAME ; int QEglContext::context(void) const
?configAttrib@QEglContext@@QBE_NHPAH@Z @ 12558 NONAME ABSENT ; bool QEglContext::configAttrib(int, int *) const
??0QEglProperties@@QAE@ABV0@@Z @ 12559 NONAME ; QEglProperties::QEglProperties(class QEglProperties const &)
- ?config@QEglContext@@QBEHXZ @ 12560 NONAME ABSENT ; int QEglContext::config(void) const
- ?openDisplay@QEglContext@@QAE_NPAVQPaintDevice@@@Z @ 12561 NONAME ABSENT ; bool QEglContext::openDisplay(class QPaintDevice *)
+ ?config@QEglContext@@QBEHXZ @ 12560 NONAME ; int QEglContext::config(void) const
+ ?clearFocusHelper@QGraphicsItemPrivate@@QAEX_N@Z @ 12561 NONAME ; void QGraphicsItemPrivate::clearFocusHelper(bool)
?error@QEglContext@@SAHXZ @ 12562 NONAME ABSENT ; int QEglContext::error(void)
?swapBuffers@QEglContext@@QAE_NH@Z @ 12563 NONAME ; bool QEglContext::swapBuffers(int)
- ?setApi@QEglContext@@QAEXW4API@QEgl@@@Z @ 12564 NONAME ; void QEglContext::setApi(enum QEgl::API)
- ?makeCurrent@QEglContext@@QAE_NH@Z @ 12565 NONAME ; bool QEglContext::makeCurrent(int)
- ?createSurface@QEglContext@@QAEHPAVQPaintDevice@@PBVQEglProperties@@@Z @ 12566 NONAME ; int QEglContext::createSurface(class QPaintDevice *, class QEglProperties const *)
- ?dumpAllConfigs@QEglContext@@QAEXXZ @ 12567 NONAME ABSENT ; void QEglContext::dumpAllConfigs(void)
- ?reduceConfiguration@QEglProperties@@QAE_NXZ @ 12568 NONAME ; bool QEglProperties::reduceConfiguration(void)
- ?removeValue@QEglProperties@@QAE_NH@Z @ 12569 NONAME ; bool QEglProperties::removeValue(int)
- ?toString@QEglProperties@@QBE?AVQString@@XZ @ 12570 NONAME ; class QString QEglProperties::toString(void) const
- ?dumpAllConfigs@QEglProperties@@SAXXZ @ 12571 NONAME ABSENT ; void QEglProperties::dumpAllConfigs(void)
- ?defaultDisplay@QEglContext@@SAHPAVQPaintDevice@@@Z @ 12572 NONAME ABSENT ; int QEglContext::defaultDisplay(class QPaintDevice *)
- ?configProperties@QEglContext@@QBE?AVQEglProperties@@H@Z @ 12573 NONAME ABSENT ; class QEglProperties QEglContext::configProperties(int) const
- ?properties@QEglProperties@@QBEPBHXZ @ 12574 NONAME ; int const * QEglProperties::properties(void) const
- ??0QEglContext@@QAE@XZ @ 12575 NONAME ; QEglContext::QEglContext(void)
- ??1QEglContext@@QAE@XZ @ 12576 NONAME ; QEglContext::~QEglContext(void)
- ?isValid@QEglContext@@QBE_NXZ @ 12577 NONAME ; bool QEglContext::isValid(void) const
- ?value@QEglProperties@@QBEHH@Z @ 12578 NONAME ; int QEglProperties::value(int) const
- ?clearError@QEglContext@@SAXXZ @ 12579 NONAME ABSENT ; void QEglContext::clearError(void)
- ??0QEglProperties@@QAE@H@Z @ 12580 NONAME ; QEglProperties::QEglProperties(int)
- ?setValue@QEglProperties@@QAEXHH@Z @ 12581 NONAME ; void QEglProperties::setValue(int, int)
- ?setPaintDeviceFormat@QEglProperties@@QAEXPAVQPaintDevice@@@Z @ 12582 NONAME ; void QEglProperties::setPaintDeviceFormat(class QPaintDevice *)
- ?destroy@QEglContext@@QAEXXZ @ 12583 NONAME ABSENT ; void QEglContext::destroy(void)
- ?setRenderableType@QEglProperties@@QAEXW4API@QEgl@@@Z @ 12584 NONAME ; void QEglProperties::setRenderableType(enum QEgl::API)
- ?setContext@QEglContext@@QAEXH@Z @ 12585 NONAME ; void QEglContext::setContext(int)
- ?waitClient@QEglContext@@QAEXXZ @ 12586 NONAME ABSENT ; void QEglContext::waitClient(void)
- ?isEmpty@QEglProperties@@QBE_NXZ @ 12587 NONAME ; bool QEglProperties::isEmpty(void) const
- ?getDisplay@QEglContext@@CAHPAVQPaintDevice@@@Z @ 12588 NONAME ABSENT ; int QEglContext::getDisplay(class QPaintDevice *)
- ?isSharing@QEglContext@@QBE_NXZ @ 12589 NONAME ; bool QEglContext::isSharing(void) const
- ?isCurrent@QEglContext@@QBE_NXZ @ 12590 NONAME ; bool QEglContext::isCurrent(void) const
- ??0QEglProperties@@QAE@XZ @ 12591 NONAME ; QEglProperties::QEglProperties(void)
- ?extensions@QEglContext@@SA?AVQString@@XZ @ 12592 NONAME ABSENT ; class QString QEglContext::extensions(void)
- ?setCurrentContext@QEglContext@@CAXW4API@QEgl@@PAV1@@Z @ 12593 NONAME ; void QEglContext::setCurrentContext(enum QEgl::API, class QEglContext *)
- ??1QEglProperties@@QAE@XZ @ 12594 NONAME ; QEglProperties::~QEglProperties(void)
- ?createContext@QEglContext@@QAE_NPAV1@PBVQEglProperties@@@Z @ 12595 NONAME ; bool QEglContext::createContext(class QEglContext *, class QEglProperties const *)
- ?setConfig@QEglContext@@QAEXH@Z @ 12596 NONAME ; void QEglContext::setConfig(int)
- ?hasExtension@QEglContext@@SA_NPBD@Z @ 12597 NONAME ABSENT ; bool QEglContext::hasExtension(char const *)
- ?doneCurrent@QEglContext@@QAE_NXZ @ 12598 NONAME ; bool QEglContext::doneCurrent(void)
- ?display@QEglContext@@QBEHXZ @ 12599 NONAME ABSENT ; int QEglContext::display(void) const
- ?setPixelFormat@QEglProperties@@QAEXW4Format@QImage@@@Z @ 12600 NONAME ; void QEglProperties::setPixelFormat(enum QImage::Format)
- ?currentContext@QEglContext@@CAPAV1@W4API@QEgl@@@Z @ 12601 NONAME ; class QEglContext * QEglContext::currentContext(enum QEgl::API)
- ?errorString@QEglContext@@SA?AVQString@@H@Z @ 12602 NONAME ABSENT ; class QString QEglContext::errorString(int)
- ?removeAllApplicationFonts@QFontDatabase@@SA_NXZ @ 12603 NONAME ; bool QFontDatabase::removeAllApplicationFonts()
- ??0FileInfo@QZipReader@@QAE@XZ @ 12604 NONAME ; QZipReader::FileInfo::FileInfo(void)
- ??0QAbstractScrollAreaPrivate@@QAE@XZ @ 12605 NONAME ; QAbstractScrollAreaPrivate::QAbstractScrollAreaPrivate(void)
- ??0QGraphicsViewPrivate@@QAE@XZ @ 12606 NONAME ; QGraphicsViewPrivate::QGraphicsViewPrivate(void)
- ??0QKeySequence@@QAE@ABVQString@@W4SequenceFormat@0@@Z @ 12607 NONAME ; QKeySequence::QKeySequence(class QString const &, enum QKeySequence::SequenceFormat)
- ??0QStaticText@@QAE@ABV0@@Z @ 12608 NONAME ; QStaticText::QStaticText(class QStaticText const &)
- ??0QStaticText@@QAE@ABVQString@@ABVQSizeF@@@Z @ 12609 NONAME ABSENT ; QStaticText::QStaticText(class QString const &, class QSizeF const &)
- ??0QStaticText@@QAE@XZ @ 12610 NONAME ; QStaticText::QStaticText(void)
- ??0QStaticTextItem@@QAE@XZ @ 12611 NONAME ; QStaticTextItem::QStaticTextItem(void)
- ??0QZipReader@@QAE@ABVQString@@V?$QFlags@W4OpenModeFlag@QIODevice@@@@@Z @ 12612 NONAME ; QZipReader::QZipReader(class QString const &, class QFlags<enum QIODevice::OpenModeFlag>)
- ??0QZipReader@@QAE@PAVQIODevice@@@Z @ 12613 NONAME ; QZipReader::QZipReader(class QIODevice *)
- ??1FileInfo@QZipReader@@QAE@XZ @ 12614 NONAME ; QZipReader::FileInfo::~FileInfo(void)
- ??1QAbstractScrollAreaPrivate@@UAE@XZ @ 12615 NONAME ; QAbstractScrollAreaPrivate::~QAbstractScrollAreaPrivate(void)
- ??1QGraphicsViewPrivate@@UAE@XZ @ 12616 NONAME ; QGraphicsViewPrivate::~QGraphicsViewPrivate(void)
- ??1QStaticText@@QAE@XZ @ 12617 NONAME ; QStaticText::~QStaticText(void)
- ??1QStaticTextItem@@QAE@XZ @ 12618 NONAME ; QStaticTextItem::~QStaticTextItem(void)
- ??1QZipReader@@QAE@XZ @ 12619 NONAME ; QZipReader::~QZipReader(void)
- ??4FileInfo@QZipReader@@QAEAAU01@ABU01@@Z @ 12620 NONAME ; struct QZipReader::FileInfo & QZipReader::FileInfo::operator=(struct QZipReader::FileInfo const &)
- ??4QStaticText@@QAEAAV0@ABV0@@Z @ 12621 NONAME ; class QStaticText & QStaticText::operator=(class QStaticText const &)
- ??8QStaticText@@QBE_NABV0@@Z @ 12622 NONAME ; bool QStaticText::operator==(class QStaticText const &) const
- ??9QStaticText@@QBE_NABV0@@Z @ 12623 NONAME ; bool QStaticText::operator!=(class QStaticText const &) const
- ??_EQAbstractScrollAreaPrivate@@UAE@I@Z @ 12624 NONAME ; QAbstractScrollAreaPrivate::~QAbstractScrollAreaPrivate(unsigned int)
- ??_EQGraphicsViewPrivate@@UAE@I@Z @ 12625 NONAME ; QGraphicsViewPrivate::~QGraphicsViewPrivate(unsigned int)
- ?_q_hslide@QAbstractScrollAreaPrivate@@QAEXH@Z @ 12626 NONAME ; void QAbstractScrollAreaPrivate::_q_hslide(int)
+ ?canKeypadNavigate@QWidgetPrivate@@SA_NW4Orientation@Qt@@@Z @ 12564 NONAME ; bool QWidgetPrivate::canKeypadNavigate(enum Qt::Orientation)
+ ?removeAllApplicationFonts@QFontDatabase@@SA_NXZ @ 12565 NONAME ; bool QFontDatabase::removeAllApplicationFonts(void)
+ ?setApi@QEglContext@@QAEXW4API@QEgl@@@Z @ 12566 NONAME ; void QEglContext::setApi(enum QEgl::API)
+ ?updateDisplayText@QLineControl@@AAEX_N@Z @ 12567 NONAME ; void QLineControl::updateDisplayText(bool)
+ ?makeCurrent@QEglContext@@QAE_NH@Z @ 12568 NONAME ; bool QEglContext::makeCurrent(int)
+ ?isPixmapCached@QImagePixmapCleanupHooks@@SA_NABVQPixmap@@@Z @ 12569 NONAME ; bool QImagePixmapCleanupHooks::isPixmapCached(class QPixmap const &)
+ ?createSurface@QEglContext@@QAEHPAVQPaintDevice@@PBVQEglProperties@@@Z @ 12570 NONAME ; int QEglContext::createSurface(class QPaintDevice *, class QEglProperties const *)
+ ?dumpAllConfigs@QEglContext@@QAEXXZ @ 12571 NONAME ABSENT ; void QEglContext::dumpAllConfigs(void)
+ ?reduceConfiguration@QEglProperties@@QAE_NXZ @ 12572 NONAME ; bool QEglProperties::reduceConfiguration(void)
+ ?nativeDisplay@QEglContext@@CAHXZ @ 12573 NONAME ABSENT ; int QEglContext::nativeDisplay(void)
+ ?getGlyphBearings@QFontEngine@@UAEXIPAM0@Z @ 12574 NONAME ; void QFontEngine::getGlyphBearings(unsigned int, float *, float *)
+ ?removeValue@QEglProperties@@QAE_NH@Z @ 12575 NONAME ; bool QEglProperties::removeValue(int)
+ ?toString@QEglProperties@@QBE?AVQString@@XZ @ 12576 NONAME ; class QString QEglProperties::toString(void) const
+ ?isOpacityNull@QGraphicsItemPrivate@@QBE_NXZ @ 12577 NONAME ; bool QGraphicsItemPrivate::isOpacityNull(void) const
+ ?dumpAllConfigs@QEglProperties@@SAXXZ @ 12578 NONAME ABSENT ; void QEglProperties::dumpAllConfigs(void)
+ ?inTabWidget@QWidgetPrivate@@SA_NPAVQWidget@@@Z @ 12579 NONAME ; bool QWidgetPrivate::inTabWidget(class QWidget *)
+ ?configProperties@QEglContext@@QBE?AVQEglProperties@@H@Z @ 12580 NONAME ABSENT ; class QEglProperties QEglContext::configProperties(int) const
+ ?properties@QEglProperties@@QBEPBHXZ @ 12581 NONAME ; int const * QEglProperties::properties(void) const
+ ?destroyContext@QEglContext@@QAEXXZ @ 12582 NONAME ; void QEglContext::destroyContext(void)
+ ??0QEglContext@@QAE@XZ @ 12583 NONAME ; QEglContext::QEglContext(void)
+ ??1QEglContext@@QAE@XZ @ 12584 NONAME ; QEglContext::~QEglContext(void)
+ ?isValid@QEglContext@@QBE_NXZ @ 12585 NONAME ; bool QEglContext::isValid(void) const
+ ?value@QEglProperties@@QBEHH@Z @ 12586 NONAME ; int QEglProperties::value(int) const
+ ?clearError@QEglContext@@SAXXZ @ 12587 NONAME ABSENT ; void QEglContext::clearError(void)
+ ??0QEglProperties@@QAE@H@Z @ 12588 NONAME ; QEglProperties::QEglProperties(int)
+ ?setValue@QEglProperties@@QAEXHH@Z @ 12589 NONAME ; void QEglProperties::setValue(int, int)
+ ?setPaintDeviceFormat@QEglProperties@@QAEXPAVQPaintDevice@@@Z @ 12590 NONAME ; void QEglProperties::setPaintDeviceFormat(class QPaintDevice *)
+ ?isImageCached@QImagePixmapCleanupHooks@@SA_NABVQImage@@@Z @ 12591 NONAME ; bool QImagePixmapCleanupHooks::isImageCached(class QImage const &)
+ ?setRenderableType@QEglProperties@@QAEXW4API@QEgl@@@Z @ 12592 NONAME ; void QEglProperties::setRenderableType(enum QEgl::API)
+ ?setContext@QEglContext@@QAEXH@Z @ 12593 NONAME ; void QEglContext::setContext(int)
+ ?waitClient@QEglContext@@QAEXXZ @ 12594 NONAME ABSENT ; void QEglContext::waitClient(void)
+ ?isEmpty@QEglProperties@@QBE_NXZ @ 12595 NONAME ; bool QEglProperties::isEmpty(void) const
+ ?dpy@QEglContext@@0HA @ 12596 NONAME ABSENT ; int QEglContext::dpy
+ ?isSharing@QEglContext@@QBE_NXZ @ 12597 NONAME ; bool QEglContext::isSharing(void) const
+ ?isCurrent@QEglContext@@QBE_NXZ @ 12598 NONAME ; bool QEglContext::isCurrent(void) const
+ ??0QEglProperties@@QAE@XZ @ 12599 NONAME ; QEglProperties::QEglProperties(void)
+ ?extensions@QEglContext@@SA?AVQString@@XZ @ 12600 NONAME ABSENT ; class QString QEglContext::extensions(void)
+ ?setCurrentContext@QEglContext@@CAXW4API@QEgl@@PAV1@@Z @ 12601 NONAME ; void QEglContext::setCurrentContext(enum QEgl::API, class QEglContext *)
+ ??1QEglProperties@@QAE@XZ @ 12602 NONAME ; QEglProperties::~QEglProperties(void)
+ ?createContext@QEglContext@@QAE_NPAV1@PBVQEglProperties@@@Z @ 12603 NONAME ; bool QEglContext::createContext(class QEglContext *, class QEglProperties const *)
+ ?setConfig@QEglContext@@QAEXH@Z @ 12604 NONAME ; void QEglContext::setConfig(int)
+ ?hasExtension@QEglContext@@SA_NPBD@Z @ 12605 NONAME ABSENT ; bool QEglContext::hasExtension(char const *)
+ ?doneCurrent@QEglContext@@QAE_NXZ @ 12606 NONAME ; bool QEglContext::doneCurrent(void)
+ ?setPixelFormat@QEglProperties@@QAEXW4Format@QImage@@@Z @ 12607 NONAME ; void QEglProperties::setPixelFormat(enum QImage::Format)
+ ?currentContext@QEglContext@@CAPAV1@W4API@QEgl@@@Z @ 12608 NONAME ; class QEglContext * QEglContext::currentContext(enum QEgl::API)
+ ?setFocusHelper@QGraphicsItemPrivate@@QAEXW4FocusReason@Qt@@_N1@Z @ 12609 NONAME ; void QGraphicsItemPrivate::setFocusHelper(enum Qt::FocusReason, bool, bool)
+ ?errorString@QEglContext@@SA?AVQString@@H@Z @ 12610 NONAME ABSENT ; class QString QEglContext::errorString(int)
+ ?positionInBlock@QTextCursor@@QBEHXZ @ 12611 NONAME ; int QTextCursor::positionInBlock(void) const
+ ?height@QGraphicsItemPrivate@@UBEMXZ @ 12612 NONAME ; float QGraphicsItemPrivate::height(void) const
+ ?clearUndoRedoStacks@QTextDocument@@QAEXW4Stacks@1@@Z @ 12613 NONAME ; void QTextDocument::clearUndoRedoStacks(enum QTextDocument::Stacks)
+ ?mapToViewRect@QGraphicsViewPrivate@@QBE?AVQRect@@PBVQGraphicsItem@@ABVQRectF@@@Z @ 12614 NONAME ; class QRect QGraphicsViewPrivate::mapToViewRect(class QGraphicsItem const *, class QRectF const &) const
+ ?findItems@QGraphicsViewPrivate@@QBE?AV?$QList@PAVQGraphicsItem@@@@ABVQRegion@@PA_NABVQTransform@@@Z @ 12615 NONAME ; class QList<class QGraphicsItem *> QGraphicsViewPrivate::findItems(class QRegion const &, bool *, class QTransform const &) const
+ ?constScanLine@QImage@@QBEPBEH@Z @ 12616 NONAME ; unsigned char const * QImage::constScanLine(int) const
+ ?text@QStaticText@@QBE?AVQString@@XZ @ 12617 NONAME ; class QString QStaticText::text(void) const
+ ?updateLastCenterPoint@QGraphicsViewPrivate@@QAEXXZ @ 12618 NONAME ; void QGraphicsViewPrivate::updateLastCenterPoint(void)
+ ?sideWidget@QWizard@@QBEPAVQWidget@@XZ @ 12619 NONAME ; class QWidget * QWizard::sideWidget(void) const
+ ?verticalScroll@QGraphicsViewPrivate@@QBE_JXZ @ 12620 NONAME ; long long QGraphicsViewPrivate::verticalScroll(void) const
+ ?fileInfoList@QZipReader@@QBE?AV?$QList@UFileInfo@QZipReader@@@@XZ @ 12621 NONAME ; class QList<struct QZipReader::FileInfo> QZipReader::fileInfoList(void) const
+ ?setSideWidget@QWizard@@QAEXPAVQWidget@@@Z @ 12622 NONAME ; void QWizard::setSideWidget(class QWidget *)
+ ?paste@QLineControl@@QAEXW4Mode@QClipboard@@@Z @ 12623 NONAME ; void QLineControl::paste(enum QClipboard::Mode)
+ ?performanceHint@QStaticText@@QBE?AW4PerformanceHint@1@XZ @ 12624 NONAME ; enum QStaticText::PerformanceHint QStaticText::performanceHint(void) const
+ ?frameStartIndex@QPaintBuffer@@QBEHH@Z @ 12625 NONAME ; int QPaintBuffer::frameStartIndex(int) const
+ ??0QAbstractScrollAreaPrivate@@QAE@XZ @ 12626 NONAME ; QAbstractScrollAreaPrivate::QAbstractScrollAreaPrivate(void)
?_q_setViewportCursor@QGraphicsViewPrivate@@QAEXABVQCursor@@@Z @ 12627 NONAME ; void QGraphicsViewPrivate::_q_setViewportCursor(class QCursor const &)
- ?_q_showOrHideScrollBars@QAbstractScrollAreaPrivate@@QAEXXZ @ 12628 NONAME ; void QAbstractScrollAreaPrivate::_q_showOrHideScrollBars(void)
- ?_q_unsetViewportCursor@QGraphicsViewPrivate@@QAEXXZ @ 12629 NONAME ; void QGraphicsViewPrivate::_q_unsetViewportCursor(void)
- ?_q_vslide@QAbstractScrollAreaPrivate@@QAEXH@Z @ 12630 NONAME ; void QAbstractScrollAreaPrivate::_q_vslide(int)
- ?allocStyleOptionsArray@QGraphicsViewPrivate@@QAEPAVQStyleOptionGraphicsItem@@H@Z @ 12631 NONAME ; class QStyleOptionGraphicsItem * QGraphicsViewPrivate::allocStyleOptionsArray(int)
- ?anchorAt@QPlainTextEdit@@QBE?AVQString@@ABVQPoint@@@Z @ 12632 NONAME ; class QString QPlainTextEdit::anchorAt(class QPoint const &) const
- ?assign@QKeySequence@@AAEHABVQString@@W4SequenceFormat@1@@Z @ 12633 NONAME ; int QKeySequence::assign(class QString const &, enum QKeySequence::SequenceFormat)
- ?autoFillBackground@QGraphicsWidget@@QBE_NXZ @ 12634 NONAME ; bool QGraphicsWidget::autoFillBackground(void) const
- ?canKeypadNavigate@QWidgetPrivate@@SA_NW4Orientation@Qt@@@Z @ 12635 NONAME ; bool QWidgetPrivate::canKeypadNavigate(enum Qt::Orientation)
- ?centerView@QGraphicsViewPrivate@@QAEXW4ViewportAnchor@QGraphicsView@@@Z @ 12636 NONAME ; void QGraphicsViewPrivate::centerView(enum QGraphicsView::ViewportAnchor)
- ?clearUndoRedoStacks@QTextDocument@@QAEXW4Stacks@1@@Z @ 12637 NONAME ; void QTextDocument::clearUndoRedoStacks(enum QTextDocument::Stacks)
- ?close@QZipReader@@QAEXXZ @ 12638 NONAME ; void QZipReader::close(void)
- ?constBits@QImage@@QBEPBEXZ @ 12639 NONAME ; unsigned char const * QImage::constBits(void) const
- ?constScanLine@QImage@@QBEPBEH@Z @ 12640 NONAME ; unsigned char const * QImage::constScanLine(int) const
- ?contentsOffset@QAbstractScrollAreaPrivate@@UBE?AVQPoint@@XZ @ 12641 NONAME ; class QPoint QAbstractScrollAreaPrivate::contentsOffset(void) const
- ?convertFromImage@QPixmap@@QAE_NABVQImage@@V?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 12642 NONAME ; bool QPixmap::convertFromImage(class QImage const &, class QFlags<enum Qt::ImageConversionFlag>)
- ?count@QZipReader@@QBEHXZ @ 12643 NONAME ; int QZipReader::count(void) const
- ?create@Fragment@QPainter@@SA?AV12@ABVQPointF@@ABVQRectF@@MMMM@Z @ 12644 NONAME ABSENT ; class QPainter::Fragment QPainter::Fragment::create(class QPointF const &, class QRectF const &, float, float, float, float)
- ?detach@QStaticText@@AAEXXZ @ 12645 NONAME ; void QStaticText::detach(void)
- ?directoryLoaded@QFileSystemModel@@IAEXABVQString@@@Z @ 12646 NONAME ; void QFileSystemModel::directoryLoaded(class QString const &)
- ?dispatchPendingUpdateRequests@QGraphicsViewPrivate@@QAEXXZ @ 12647 NONAME ; void QGraphicsViewPrivate::dispatchPendingUpdateRequests(void)
- ?drawPixmapFragments@QPaintEngineEx@@UAEXPBVFragment@QPainter@@HABVQPixmap@@V?$QFlags@W4FragmentHint@QPainter@@@@@Z @ 12648 NONAME ABSENT ; void QPaintEngineEx::drawPixmapFragments(class QPainter::Fragment const *, int, class QPixmap const &, class QFlags<enum QPainter::FragmentHint>)
- ?drawPixmapFragments@QPainter@@QAEXPBVFragment@1@HABVQPixmap@@V?$QFlags@W4FragmentHint@QPainter@@@@@Z @ 12649 NONAME ABSENT ; void QPainter::drawPixmapFragments(class QPainter::Fragment const *, int, class QPixmap const &, class QFlags<enum QPainter::FragmentHint>)
- ?drawStaticText@QPainter@@QAEXABVQPoint@@ABVQStaticText@@@Z @ 12650 NONAME ; void QPainter::drawStaticText(class QPoint const &, class QStaticText const &)
- ?drawStaticText@QPainter@@QAEXABVQPointF@@ABVQStaticText@@@Z @ 12651 NONAME ; void QPainter::drawStaticText(class QPointF const &, class QStaticText const &)
- ?drawStaticText@QPainter@@QAEXHHABVQStaticText@@@Z @ 12652 NONAME ; void QPainter::drawStaticText(int, int, class QStaticText const &)
- ?entryInfoAt@QZipReader@@QBE?AUFileInfo@1@H@Z @ 12653 NONAME ; struct QZipReader::FileInfo QZipReader::entryInfoAt(int) const
- ?exists@QZipReader@@QBE_NXZ @ 12654 NONAME ; bool QZipReader::exists(void) const
- ?extractAll@QZipReader@@QBE_NABVQString@@@Z @ 12655 NONAME ; bool QZipReader::extractAll(class QString const &) const
- ?fileData@QZipReader@@QBE?AVQByteArray@@ABVQString@@@Z @ 12656 NONAME ; class QByteArray QZipReader::fileData(class QString const &) const
- ?fileInfoList@QZipReader@@QBE?AV?$QList@UFileInfo@QZipReader@@@@XZ @ 12657 NONAME ; class QList<struct QZipReader::FileInfo> QZipReader::fileInfoList(void) const
- ?findItems@QGraphicsViewPrivate@@QBE?AV?$QList@PAVQGraphicsItem@@@@ABVQRegion@@PA_NABVQTransform@@@Z @ 12658 NONAME ; class QList<class QGraphicsItem *> QGraphicsViewPrivate::findItems(class QRegion const &, bool *, class QTransform const &) const
- ?fixup@QIntValidator@@UBEXAAVQString@@@Z @ 12659 NONAME ; void QIntValidator::fixup(class QString &) const
- ?freeStyleOptionsArray@QGraphicsViewPrivate@@QAEXPAVQStyleOptionGraphicsItem@@@Z @ 12660 NONAME ; void QGraphicsViewPrivate::freeStyleOptionsArray(class QStyleOptionGraphicsItem *)
- ?getPixmapCursor@QApplicationPrivate@@QAE?AVQPixmap@@W4CursorShape@Qt@@@Z @ 12661 NONAME ; class QPixmap QApplicationPrivate::getPixmapCursor(enum Qt::CursorShape)
- ?getSubRange@QBezier@@QBE?AV1@MM@Z @ 12662 NONAME ; class QBezier QBezier::getSubRange(float, float) const
- ?hasSelectedText@QLabel@@QBE_NXZ @ 12663 NONAME ; bool QLabel::hasSelectedText(void) const
- ?horizontalScroll@QGraphicsViewPrivate@@QBE_JXZ @ 12664 NONAME ; long long QGraphicsViewPrivate::horizontalScroll(void) const
- ?inTabWidget@QWidgetPrivate@@SA_NPAVQWidget@@@Z @ 12665 NONAME ; bool QWidgetPrivate::inTabWidget(class QWidget *)
- ?init@QAbstractScrollAreaPrivate@@QAEXXZ @ 12666 NONAME ; void QAbstractScrollAreaPrivate::init(void)
- ?isImageCached@QImagePixmapCleanupHooks@@SA_NABVQImage@@@Z @ 12667 NONAME ; bool QImagePixmapCleanupHooks::isImageCached(class QImage const &)
- ?isPixmapCached@QImagePixmapCleanupHooks@@SA_NABVQPixmap@@@Z @ 12668 NONAME ; bool QImagePixmapCleanupHooks::isPixmapCached(class QPixmap const &)
- ?isReadable@QZipReader@@QBE_NXZ @ 12669 NONAME ; bool QZipReader::isReadable(void) const
- ?isValidColor@QColor@@SA_NABVQString@@@Z @ 12670 NONAME ; bool QColor::isValidColor(class QString const &)
- ?layoutChildren@QAbstractScrollAreaPrivate@@QAEXXZ @ 12671 NONAME ; void QAbstractScrollAreaPrivate::layoutChildren(void)
- ?mapBy@QBezier@@QBE?AV1@ABVQTransform@@@Z @ 12672 NONAME ; class QBezier QBezier::mapBy(class QTransform const &) const
- ?mapRectFromScene@QGraphicsViewPrivate@@QBE?AVQRectF@@ABV2@@Z @ 12673 NONAME ; class QRectF QGraphicsViewPrivate::mapRectFromScene(class QRectF const &) const
- ?mapRectToScene@QGraphicsViewPrivate@@QBE?AVQRectF@@ABVQRect@@@Z @ 12674 NONAME ; class QRectF QGraphicsViewPrivate::mapRectToScene(class QRect const &) const
- ?mapToScene@QGraphicsViewPrivate@@QBE?AVQPointF@@ABV2@@Z @ 12675 NONAME ; class QPointF QGraphicsViewPrivate::mapToScene(class QPointF const &) const
- ?mapToScene@QGraphicsViewPrivate@@QBE?AVQRectF@@ABV2@@Z @ 12676 NONAME ; class QRectF QGraphicsViewPrivate::mapToScene(class QRectF const &) const
- ?mapToViewRect@QGraphicsViewPrivate@@QBE?AVQRect@@PBVQGraphicsItem@@ABVQRectF@@@Z @ 12677 NONAME ; class QRect QGraphicsViewPrivate::mapToViewRect(class QGraphicsItem const *, class QRectF const &) const
- ?mapToViewRegion@QGraphicsViewPrivate@@QBE?AVQRegion@@PBVQGraphicsItem@@ABVQRectF@@@Z @ 12678 NONAME ; class QRegion QGraphicsViewPrivate::mapToViewRegion(class QGraphicsItem const *, class QRectF const &) const
- ?maximumSize@QStaticText@@QBE?AVQSizeF@@XZ @ 12679 NONAME ABSENT ; class QSizeF QStaticText::maximumSize(void) const
- ?mouseMoveEventHandler@QGraphicsViewPrivate@@QAEXPAVQMouseEvent@@@Z @ 12680 NONAME ; void QGraphicsViewPrivate::mouseMoveEventHandler(class QMouseEvent *)
- ?performanceHint@QStaticText@@QBE?AW4PerformanceHint@1@XZ @ 12681 NONAME ; enum QStaticText::PerformanceHint QStaticText::performanceHint(void) const
- ?populate@QTextureGlyphCache@@QAEXPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12682 NONAME ; void QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *)
- ?populateSceneDragDropEvent@QGraphicsViewPrivate@@QAEXPAVQGraphicsSceneDragDropEvent@@PAVQDropEvent@@@Z @ 12683 NONAME ; void QGraphicsViewPrivate::populateSceneDragDropEvent(class QGraphicsSceneDragDropEvent *, class QDropEvent *)
- ?positionInBlock@QTextCursor@@QBEHXZ @ 12684 NONAME ; int QTextCursor::positionInBlock(void) const
- ?prepare@QStaticText@@QAEXABVQTransform@@ABVQFont@@@Z @ 12685 NONAME ; void QStaticText::prepare(class QTransform const &, class QFont const &)
- ?processPendingUpdates@QGraphicsViewPrivate@@QAEXXZ @ 12686 NONAME ; void QGraphicsViewPrivate::processPendingUpdates(void)
- ?q_func@QAbstractScrollAreaPrivate@@AAEPAVQAbstractScrollArea@@XZ @ 12687 NONAME ; class QAbstractScrollArea * QAbstractScrollAreaPrivate::q_func(void)
- ?q_func@QAbstractScrollAreaPrivate@@ABEPBVQAbstractScrollArea@@XZ @ 12688 NONAME ; class QAbstractScrollArea const * QAbstractScrollAreaPrivate::q_func(void) const
- ?q_func@QGraphicsViewPrivate@@AAEPAVQGraphicsView@@XZ @ 12689 NONAME ; class QGraphicsView * QGraphicsViewPrivate::q_func(void)
- ?q_func@QGraphicsViewPrivate@@ABEPBVQGraphicsView@@XZ @ 12690 NONAME ; class QGraphicsView const * QGraphicsViewPrivate::q_func(void) const
- ?qt_draw_glyphs@@YAXPAVQPainter@@PBIPBVQPointF@@H@Z @ 12691 NONAME ; void qt_draw_glyphs(class QPainter *, unsigned int const *, class QPointF const *, int)
- ?recalculateContentSize@QGraphicsViewPrivate@@QAEXXZ @ 12692 NONAME ; void QGraphicsViewPrivate::recalculateContentSize(void)
- ?render@QWidgetPrivate@@QAEXPAVQPaintDevice@@ABVQPoint@@ABVQRegion@@V?$QFlags@W4RenderFlag@QWidget@@@@_N@Z @ 12693 NONAME ; void QWidgetPrivate::render(class QPaintDevice *, class QPoint const &, class QRegion const &, class QFlags<enum QWidget::RenderFlag>, bool)
- ?replaceScrollBar@QAbstractScrollAreaPrivate@@QAEXPAVQScrollBar@@W4Orientation@Qt@@@Z @ 12694 NONAME ; void QAbstractScrollAreaPrivate::replaceScrollBar(class QScrollBar *, enum Qt::Orientation)
- ?replayLastMouseEvent@QGraphicsViewPrivate@@QAEXXZ @ 12695 NONAME ; void QGraphicsViewPrivate::replayLastMouseEvent(void)
- ?rubberBandRegion@QGraphicsViewPrivate@@QBE?AVQRegion@@PBVQWidget@@ABVQRect@@@Z @ 12696 NONAME ; class QRegion QGraphicsViewPrivate::rubberBandRegion(class QWidget const *, class QRect const &) const
- ?scrollBarPolicyChanged@QAbstractScrollAreaPrivate@@UAEXW4Orientation@Qt@@W4ScrollBarPolicy@3@@Z @ 12697 NONAME ; void QAbstractScrollAreaPrivate::scrollBarPolicyChanged(enum Qt::Orientation, enum Qt::ScrollBarPolicy)
- ?selectedText@QLabel@@QBE?AVQString@@XZ @ 12698 NONAME ; class QString QLabel::selectedText(void) const
- ?selectionStart@QLabel@@QBEHXZ @ 12699 NONAME ; int QLabel::selectionStart(void) const
- ?setAutoFillBackground@QGraphicsWidget@@QAEX_N@Z @ 12700 NONAME ; void QGraphicsWidget::setAutoFillBackground(bool)
- ?setColorFromString@QColor@@AAE_NABVQString@@@Z @ 12701 NONAME ; bool QColor::setColorFromString(class QString const &)
- ?setMaximumSize@QStaticText@@QAEXABVQSizeF@@@Z @ 12702 NONAME ABSENT ; void QStaticText::setMaximumSize(class QSizeF const &)
- ?setPerformanceHint@QStaticText@@QAEXW4PerformanceHint@1@@Z @ 12703 NONAME ; void QStaticText::setPerformanceHint(enum QStaticText::PerformanceHint)
- ?setSelection@QLabel@@QAEXHH@Z @ 12704 NONAME ; void QLabel::setSelection(int, int)
- ?setText@QStaticText@@QAEXABVQString@@@Z @ 12705 NONAME ; void QStaticText::setText(class QString const &)
- ?setTextFormat@QStaticText@@QAEXW4TextFormat@Qt@@@Z @ 12706 NONAME ; void QStaticText::setTextFormat(enum Qt::TextFormat)
- ?setUserData@QStaticTextItem@@QAEXPAVQStaticTextUserData@@@Z @ 12707 NONAME ; void QStaticTextItem::setUserData(class QStaticTextUserData *)
- ?size@QStaticText@@QBE?AVQSizeF@@XZ @ 12708 NONAME ; class QSizeF QStaticText::size(void) const
- ?status@QZipReader@@QBE?AW4Status@1@XZ @ 12709 NONAME ; enum QZipReader::Status QZipReader::status(void) const
- ?storeDragDropEvent@QGraphicsViewPrivate@@QAEXPBVQGraphicsSceneDragDropEvent@@@Z @ 12710 NONAME ; void QGraphicsViewPrivate::storeDragDropEvent(class QGraphicsSceneDragDropEvent const *)
- ?storeMouseEvent@QGraphicsViewPrivate@@QAEXPAVQMouseEvent@@@Z @ 12711 NONAME ; void QGraphicsViewPrivate::storeMouseEvent(class QMouseEvent *)
- ?text@QStaticText@@QBE?AVQString@@XZ @ 12712 NONAME ; class QString QStaticText::text(void) const
- ?textFormat@QStaticText@@QBE?AW4TextFormat@Qt@@XZ @ 12713 NONAME ; enum Qt::TextFormat QStaticText::textFormat(void) const
- ?translateTouchEvent@QGraphicsViewPrivate@@SAXPAV1@PAVQTouchEvent@@@Z @ 12714 NONAME ; void QGraphicsViewPrivate::translateTouchEvent(class QGraphicsViewPrivate *, class QTouchEvent *)
- ?updateAll@QGraphicsViewPrivate@@QAEXXZ @ 12715 NONAME ; void QGraphicsViewPrivate::updateAll(void)
- ?updateInputMethodSensitivity@QGraphicsViewPrivate@@QAEXXZ @ 12716 NONAME ; void QGraphicsViewPrivate::updateInputMethodSensitivity(void)
- ?updateLastCenterPoint@QGraphicsViewPrivate@@QAEXXZ @ 12717 NONAME ; void QGraphicsViewPrivate::updateLastCenterPoint(void)
- ?updateRect@QGraphicsViewPrivate@@QAE_NABVQRect@@@Z @ 12718 NONAME ; bool QGraphicsViewPrivate::updateRect(class QRect const &)
- ?updateRegion@QGraphicsViewPrivate@@QAE_NABVQRegion@@@Z @ 12719 NONAME ABSENT ; bool QGraphicsViewPrivate::updateRegion(class QRegion const &)
- ?updateScroll@QGraphicsViewPrivate@@QAEXXZ @ 12720 NONAME ; void QGraphicsViewPrivate::updateScroll(void)
- ?verticalScroll@QGraphicsViewPrivate@@QBE_JXZ @ 12721 NONAME ; long long QGraphicsViewPrivate::verticalScroll(void) const
- ?viewportEvent@QAbstractScrollAreaPrivate@@QAE_NPAVQEvent@@@Z @ 12722 NONAME ; bool QAbstractScrollAreaPrivate::viewportEvent(class QEvent *)
- ?visibilityChanged@QToolBar@@IAEX_N@Z @ 12723 NONAME ; void QToolBar::visibilityChanged(bool)
- ??0FileInfo@QZipReader@@QAE@ABU01@@Z @ 12724 NONAME ; QZipReader::FileInfo::FileInfo(struct QZipReader::FileInfo const &)
- ??0QStaticText@@QAE@ABVQString@@@Z @ 12725 NONAME ; QStaticText::QStaticText(class QString const &)
- ?append@QGraphicsItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQGraphicsObject@@@@PAVQGraphicsObject@@@Z @ 12726 NONAME ABSENT ; void QGraphicsItemPrivate::append(class QDeclarativeListProperty<class QGraphicsObject> *, class QGraphicsObject *)
- ?bitPlaneCount@QImage@@QBEHXZ @ 12727 NONAME ; int QImage::bitPlaneCount(void) const
- ?childrenChanged@QGraphicsObject@@IAEXXZ @ 12728 NONAME ; void QGraphicsObject::childrenChanged(void)
- ?childrenList@QGraphicsItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQGraphicsObject@@@@XZ @ 12729 NONAME ; class QDeclarativeListProperty<class QGraphicsObject> QGraphicsItemPrivate::childrenList(void)
- ?clearFocusHelper@QGraphicsItemPrivate@@QAEX_N@Z @ 12730 NONAME ; void QGraphicsItemPrivate::clearFocusHelper(bool)
- ?commandDescription@QPaintBuffer@@QBE?AVQString@@H@Z @ 12731 NONAME ; class QString QPaintBuffer::commandDescription(int) const
- ?create@PixmapFragment@QPainter@@SA?AV12@ABVQPointF@@ABVQRectF@@MMMM@Z @ 12732 NONAME ; class QPainter::PixmapFragment QPainter::PixmapFragment::create(class QPointF const &, class QRectF const &, float, float, float, float)
- ?device@QZipReader@@QBEPAVQIODevice@@XZ @ 12733 NONAME ; class QIODevice * QZipReader::device(void) const
- ?drawPixmapFragments@QPaintEngineEx@@UAEXPBVPixmapFragment@QPainter@@HABVQPixmap@@V?$QFlags@W4PixmapFragmentHint@QPainter@@@@@Z @ 12734 NONAME ; void QPaintEngineEx::drawPixmapFragments(class QPainter::PixmapFragment const *, int, class QPixmap const &, class QFlags<enum QPainter::PixmapFragmentHint>)
- ?drawPixmapFragments@QPainter@@QAEXPBVPixmapFragment@1@HABVQPixmap@@V?$QFlags@W4PixmapFragmentHint@QPainter@@@@@Z @ 12735 NONAME ; void QPainter::drawPixmapFragments(class QPainter::PixmapFragment const *, int, class QPixmap const &, class QFlags<enum QPainter::PixmapFragmentHint>)
- ?frameEndIndex@QPaintBuffer@@QBEHH@Z @ 12736 NONAME ; int QPaintBuffer::frameEndIndex(int) const
- ?frameStartIndex@QPaintBuffer@@QBEHH@Z @ 12737 NONAME ; int QPaintBuffer::frameStartIndex(int) const
- ?geometryChanged@QGraphicsWidget@@IAEXXZ @ 12738 NONAME ; void QGraphicsWidget::geometryChanged(void)
- ?getGlyphBearings@QFontEngine@@UAEXIPAM0@Z @ 12739 NONAME ; void QFontEngine::getGlyphBearings(unsigned int, float *, float *)
- ?height@QGraphicsItemPrivate@@UBEMXZ @ 12740 NONAME ; float QGraphicsItemPrivate::height(void) const
- ?heightChanged@QGraphicsObject@@IAEXXZ @ 12741 NONAME ; void QGraphicsObject::heightChanged(void)
- ?horizontalAdvance@QTextLine@@QBEMXZ @ 12742 NONAME ; float QTextLine::horizontalAdvance(void) const
- ?isValid@FileInfo@QZipReader@@QBE_NXZ @ 12743 NONAME ; bool QZipReader::FileInfo::isValid(void) const
- ?layoutChanged@QGraphicsWidget@@IAEXXZ @ 12744 NONAME ; void QGraphicsWidget::layoutChanged(void)
- ?pageAdded@QWizard@@IAEXH@Z @ 12745 NONAME ; void QWizard::pageAdded(int)
- ?pageRemoved@QWizard@@IAEXH@Z @ 12746 NONAME ; void QWizard::pageRemoved(int)
- ?paste@QLineControl@@QAEXW4Mode@QClipboard@@@Z @ 12747 NONAME ; void QLineControl::paste(enum QClipboard::Mode)
- ?paste@QTextControl@@QAEXW4Mode@QClipboard@@@Z @ 12748 NONAME ; void QTextControl::paste(enum QClipboard::Mode)
- ?placeholderText@QLineEdit@@QBE?AVQString@@XZ @ 12749 NONAME ; class QString QLineEdit::placeholderText(void) const
- ?prependGraphicsTransform@QGraphicsItemPrivate@@QAEXPAVQGraphicsTransform@@@Z @ 12750 NONAME ; void QGraphicsItemPrivate::prependGraphicsTransform(class QGraphicsTransform *)
- ?processCommands@QPaintBuffer@@QBEHPAVQPainter@@HH@Z @ 12751 NONAME ; int QPaintBuffer::processCommands(class QPainter *, int, int) const
- ?processCommands@QPainterReplayer@@QAEXABVQPaintBuffer@@PAVQPainter@@HH@Z @ 12752 NONAME ; void QPainterReplayer::processCommands(class QPaintBuffer const &, class QPainter *, int, int)
- ?resetHeight@QGraphicsItemPrivate@@UAEXXZ @ 12753 NONAME ; void QGraphicsItemPrivate::resetHeight(void)
- ?resetWidth@QGraphicsItemPrivate@@UAEXXZ @ 12754 NONAME ; void QGraphicsItemPrivate::resetWidth(void)
- ?resizeEvent@QSplitterHandle@@MAEXPAVQResizeEvent@@@Z @ 12755 NONAME ; void QSplitterHandle::resizeEvent(class QResizeEvent *)
- ?setFocusHelper@QGraphicsItemPrivate@@QAEXW4FocusReason@Qt@@_N1@Z @ 12756 NONAME ; void QGraphicsItemPrivate::setFocusHelper(enum Qt::FocusReason, bool, bool)
- ?setHeight@QGraphicsItemPrivate@@UAEXM@Z @ 12757 NONAME ; void QGraphicsItemPrivate::setHeight(float)
- ?setPlaceholderText@QLineEdit@@QAEXABVQString@@@Z @ 12758 NONAME ; void QLineEdit::setPlaceholderText(class QString const &)
- ?setSideWidget@QWizard@@QAEXPAVQWidget@@@Z @ 12759 NONAME ; void QWizard::setSideWidget(class QWidget *)
- ?setTextWidth@QStaticText@@QAEXM@Z @ 12760 NONAME ; void QStaticText::setTextWidth(float)
- ?setWidth@QGraphicsItemPrivate@@UAEXM@Z @ 12761 NONAME ; void QGraphicsItemPrivate::setWidth(float)
- ?sideWidget@QWizard@@QBEPAVQWidget@@XZ @ 12762 NONAME ; class QWidget * QWizard::sideWidget(void) const
- ?textWidth@QStaticText@@QBEMXZ @ 12763 NONAME ; float QStaticText::textWidth(void) const
- ?updateDisplayText@QLineControl@@AAEX_N@Z @ 12764 NONAME ; void QLineControl::updateDisplayText(bool)
- ?updateMicroFocus@QGraphicsItem@@IAEXXZ @ 12765 NONAME ; void QGraphicsItem::updateMicroFocus(void)
- ?updateMicroFocus@QGraphicsObject@@IAEXXZ @ 12766 NONAME ; void QGraphicsObject::updateMicroFocus(void)
- ?width@QGraphicsItemPrivate@@UBEMXZ @ 12767 NONAME ; float QGraphicsItemPrivate::width(void) const
- ?widthChanged@QGraphicsObject@@IAEXXZ @ 12768 NONAME ; void QGraphicsObject::widthChanged(void)
- ?children_append@QGraphicsItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQGraphicsObject@@@@PAVQGraphicsObject@@@Z @ 12769 NONAME ; void QGraphicsItemPrivate::children_append(class QDeclarativeListProperty<class QGraphicsObject> *, class QGraphicsObject *)
- ?children_at@QGraphicsItemPrivate@@SAPAVQGraphicsObject@@PAV?$QDeclarativeListProperty@VQGraphicsObject@@@@H@Z @ 12770 NONAME ; class QGraphicsObject * QGraphicsItemPrivate::children_at(class QDeclarativeListProperty<class QGraphicsObject> *, int)
- ?children_count@QGraphicsItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQGraphicsObject@@@@@Z @ 12771 NONAME ; int QGraphicsItemPrivate::children_count(class QDeclarativeListProperty<class QGraphicsObject> *)
- ?display@QEglContext@@QAEHXZ @ 12772 NONAME ; int QEglContext::display(void)
- ?defaultConfig@QEgl@@YAHHW4API@1@V?$QFlags@W4ConfigOption@QEgl@@@@@Z @ 12773 NONAME ; int QEgl::defaultConfig(int, enum QEgl::API, class QFlags<enum QEgl::ConfigOption>)
- ?configAttrib@QEglContext@@QBEHH@Z @ 12774 NONAME ; int QEglContext::configAttrib(int) const
- ?error@QEgl@@YAHXZ @ 12775 NONAME ABSENT ; int QEgl::error(void)
- ?errorString@QEgl@@YA?AVQString@@XZ @ 12776 NONAME ABSENT ; class QString QEgl::errorString(void)
- ?configProperties@QEglContext@@QBE?AVQEglProperties@@XZ @ 12777 NONAME ABSENT ; class QEglProperties QEglContext::configProperties(void) const
- ?extensions@QEgl@@YA?AVQString@@XZ @ 12778 NONAME ; class QString QEgl::extensions(void)
- ?nativePixmap@QEgl@@YAPAXPAVQPixmap@@@Z @ 12779 NONAME ; void * QEgl::nativePixmap(class QPixmap *)
- ?display@QEgl@@YAHXZ @ 12780 NONAME ; int QEgl::display(void)
- ?eglCreateImageKHR@QEgl@@YAHHHHHPBH@Z @ 12781 NONAME ; int QEgl::eglCreateImageKHR(int, int, int, int, int const *)
- ?hasExtension@QEgl@@YA_NPBD@Z @ 12782 NONAME ; bool QEgl::hasExtension(char const *)
- ?destroyContext@QEglContext@@QAEXXZ @ 12783 NONAME ; void QEglContext::destroyContext(void)
- ?nativeWindow@QEgl@@YAPAXPAVQWidget@@@Z @ 12784 NONAME ; void * QEgl::nativeWindow(class QWidget *)
- ?errorString@QEgl@@YA?AVQString@@H@Z @ 12785 NONAME ; class QString QEgl::errorString(int)
- ?chooseConfig@QEgl@@YAHPBVQEglProperties@@W4PixelFormatMatch@1@@Z @ 12786 NONAME ; int QEgl::chooseConfig(class QEglProperties const *, enum QEgl::PixelFormatMatch)
- ?eglDestroyImageKHR@QEgl@@YAHHH@Z @ 12787 NONAME ; int QEgl::eglDestroyImageKHR(int, int)
- ?isEmpty@QItemSelectionRange@@QBE_NXZ @ 12788 NONAME ; bool QItemSelectionRange::isEmpty(void) const
- ?clearError@QEgl@@YAXXZ @ 12789 NONAME ABSENT ; void QEgl::clearError(void)
- ?nativeDisplay@QEgl@@YAHXZ @ 12790 NONAME ; int QEgl::nativeDisplay(void)
- ?dumpAllConfigs@QEgl@@YAXXZ @ 12791 NONAME ; void QEgl::dumpAllConfigs(void)
- ?setDeviceType@QEglProperties@@QAEXH@Z @ 12792 NONAME ; void QEglProperties::setDeviceType(int)
- ?glyphPadding@QTextureGlyphCache@@UBEHXZ @ 12793 NONAME ; int QTextureGlyphCache::glyphPadding(void) const
- ?createSurface@QEgl@@YAHPAVQPaintDevice@@HPBVQEglProperties@@@Z @ 12794 NONAME ; int QEgl::createSurface(class QPaintDevice *, int, class QEglProperties const *)
- ?setPartialUpdateSupport@QWindowSurface@@IAEX_N@Z @ 12795 NONAME ; void QWindowSurface::setPartialUpdateSupport(bool)
- ?transformChanged@QGraphicsItemPrivate@@UAEXXZ @ 12796 NONAME ; void QGraphicsItemPrivate::transformChanged(void)
- ?hasPartialUpdateSupport@QWindowSurface@@QBE_NXZ @ 12797 NONAME ; bool QWindowSurface::hasPartialUpdateSupport(void) const
- ?name@QIcon@@QBE?AVQString@@XZ @ 12798 NONAME ; class QString QIcon::name(void) const
- ?iconName@QIconEngineV2@@QAE?AVQString@@XZ @ 12799 NONAME ; class QString QIconEngineV2::iconName(void)
- ?updateRectF@QGraphicsViewPrivate@@QAE_NABVQRectF@@@Z @ 12800 NONAME ; bool QGraphicsViewPrivate::updateRectF(class QRectF const &)
- ?updateRegion@QGraphicsViewPrivate@@QAE_NABVQRectF@@ABVQTransform@@@Z @ 12801 NONAME ; bool QGraphicsViewPrivate::updateRegion(class QRectF const &, class QTransform const &)
- ?totalUsed@QPixmapCache@@SAHXZ @ 12802 NONAME ; int QPixmapCache::totalUsed(void)
- ?allPixmaps@QPixmapCache@@SA?AV?$QList@U?$QPair@VQString@@VQPixmap@@@@@@XZ @ 12803 NONAME ; class QList<struct QPair<class QString, class QPixmap> > QPixmapCache::allPixmaps(void)
- ?flushDetachedPixmaps@QPixmapCache@@SAXXZ @ 12804 NONAME ; void QPixmapCache::flushDetachedPixmaps(void)
- ??0QImageTextureGlyphCache@@QAE@W4Type@QFontEngineGlyphCache@@ABVQTransform@@@Z @ 12805 NONAME ; QImageTextureGlyphCache::QImageTextureGlyphCache(enum QFontEngineGlyphCache::Type, class QTransform const &)
- ??1QImageTextureGlyphCache@@UAE@XZ @ 12806 NONAME ; QImageTextureGlyphCache::~QImageTextureGlyphCache(void)
- ??_EQImageTextureGlyphCache@@UAE@I@Z @ 12807 NONAME ; QImageTextureGlyphCache::~QImageTextureGlyphCache(unsigned int)
- ?addToPolygon@QBezier@@QBEXPAVQPolygonF@@M@Z @ 12808 NONAME ; void QBezier::addToPolygon(class QPolygonF *, float) const
- ?createTextureData@QImageTextureGlyphCache@@UAEXHH@Z @ 12809 NONAME ; void QImageTextureGlyphCache::createTextureData(int, int)
- ?curveThreshold@QStrokerOps@@QBEMXZ @ 12810 NONAME ; float QStrokerOps::curveThreshold(void) const
- ?fillTexture@QImageTextureGlyphCache@@UAEXABUCoord@QTextureGlyphCache@@I@Z @ 12811 NONAME ; void QImageTextureGlyphCache::fillTexture(struct QTextureGlyphCache::Coord const &, unsigned int)
- ?glyphMargin@QImageTextureGlyphCache@@UBEHXZ @ 12812 NONAME ; int QImageTextureGlyphCache::glyphMargin(void) const
- ?image@QImageTextureGlyphCache@@QBEABVQImage@@XZ @ 12813 NONAME ; class QImage const & QImageTextureGlyphCache::image(void) const
- ?resizeTextureData@QImageTextureGlyphCache@@UAEXHH@Z @ 12814 NONAME ; void QImageTextureGlyphCache::resizeTextureData(int, int)
- ?setCurveThreshold@QStrokerOps@@QAEXM@Z @ 12815 NONAME ; void QStrokerOps::setCurveThreshold(float)
- ?setCurveThresholdFromTransform@QStrokerOps@@QAEXABVQTransform@@@Z @ 12816 NONAME ; void QStrokerOps::setCurveThresholdFromTransform(class QTransform const &)
- ?setUpdateClip@QGraphicsViewPrivate@@QAEXPAVQGraphicsItem@@@Z @ 12817 NONAME ; void QGraphicsViewPrivate::setUpdateClip(class QGraphicsItem *)
- ?toPolygon@QBezier@@QBE?AVQPolygonF@@M@Z @ 12818 NONAME ; class QPolygonF QBezier::toPolygon(float) const
- ?updatePaintedViewBoundingRects@QGraphicsItemPrivate@@QAEX_N@Z @ 12819 NONAME ; void QGraphicsItemPrivate::updatePaintedViewBoundingRects(bool)
+ ?display@QEglContext@@QAEHXZ @ 12628 NONAME ; int QEglContext::display(void)
+ ?setPartialUpdateSupport@QWindowSurface@@IAEX_N@Z @ 12629 NONAME ; void QWindowSurface::setPartialUpdateSupport(bool)
+ ?transformChanged@QGraphicsItemPrivate@@UAEXXZ @ 12630 NONAME ; void QGraphicsItemPrivate::transformChanged(void)
+ ?setUserData@QStaticTextItem@@QAEXPAVQStaticTextUserData@@@Z @ 12631 NONAME ; void QStaticTextItem::setUserData(class QStaticTextUserData *)
+ ?isValid@FileInfo@QZipReader@@QBE_NXZ @ 12632 NONAME ; bool QZipReader::FileInfo::isValid(void) const
+ ?hasSelectedText@QLabel@@QBE_NXZ @ 12633 NONAME ; bool QLabel::hasSelectedText(void) const
+ ?size@QStaticText@@QBE?AVQSizeF@@XZ @ 12634 NONAME ; class QSizeF QStaticText::size(void) const
+ ?processCommands@QPainterReplayer@@QAEXABVQPaintBuffer@@PAVQPainter@@HH@Z @ 12635 NONAME ; void QPainterReplayer::processCommands(class QPaintBuffer const &, class QPainter *, int, int)
+ ?defaultConfig@QEgl@@YAHHW4API@1@V?$QFlags@W4ConfigOption@QEgl@@@@@Z @ 12636 NONAME ; int QEgl::defaultConfig(int, enum QEgl::API, class QFlags<enum QEgl::ConfigOption>)
+ ??0QZipReader@@QAE@PAVQIODevice@@@Z @ 12637 NONAME ; QZipReader::QZipReader(class QIODevice *)
+ ?configAttrib@QEglContext@@QBEHH@Z @ 12638 NONAME ; int QEglContext::configAttrib(int) const
+ ?setAutoFillBackground@QGraphicsWidget@@QAEX_N@Z @ 12639 NONAME ; void QGraphicsWidget::setAutoFillBackground(bool)
+ ??4QStaticText@@QAEAAV0@ABV0@@Z @ 12640 NONAME ; class QStaticText & QStaticText::operator=(class QStaticText const &)
+ ?updateRegion@QGraphicsViewPrivate@@QAE_NABVQRectF@@ABVQTransform@@@Z @ 12641 NONAME ; bool QGraphicsViewPrivate::updateRegion(class QRectF const &, class QTransform const &)
+ ??9QStaticText@@QBE_NABV0@@Z @ 12642 NONAME ; bool QStaticText::operator!=(class QStaticText const &) const
+ ??_EQGraphicsViewPrivate@@UAE@I@Z @ 12643 NONAME ; QGraphicsViewPrivate::~QGraphicsViewPrivate(unsigned int)
+ ?status@QZipReader@@QBE?AW4Status@1@XZ @ 12644 NONAME ; enum QZipReader::Status QZipReader::status(void) const
+ ?autoFillBackground@QGraphicsWidget@@QBE_NXZ @ 12645 NONAME ; bool QGraphicsWidget::autoFillBackground(void) const
+ ?createTextureData@QImageTextureGlyphCache@@UAEXHH@Z @ 12646 NONAME ; void QImageTextureGlyphCache::createTextureData(int, int)
+ ?image@QImageTextureGlyphCache@@QBEABVQImage@@XZ @ 12647 NONAME ; class QImage const & QImageTextureGlyphCache::image(void) const
+ ?extensions@QEgl@@YA?AVQString@@XZ @ 12648 NONAME ; class QString QEgl::extensions(void)
+ ?pageRemoved@QWizard@@IAEXH@Z @ 12649 NONAME ; void QWizard::pageRemoved(int)
+ ?init@QAbstractScrollAreaPrivate@@QAEXXZ @ 12650 NONAME ; void QAbstractScrollAreaPrivate::init(void)
+ ?mapRectToScene@QGraphicsViewPrivate@@QBE?AVQRectF@@ABVQRect@@@Z @ 12651 NONAME ; class QRectF QGraphicsViewPrivate::mapRectToScene(class QRect const &) const
+ ?width@QGraphicsItemPrivate@@UBEMXZ @ 12652 NONAME ; float QGraphicsItemPrivate::width(void) const
+ ?toPolygon@QBezier@@QBE?AVQPolygonF@@M@Z @ 12653 NONAME ; class QPolygonF QBezier::toPolygon(float) const
+ ?freeStyleOptionsArray@QGraphicsViewPrivate@@QAEXPAVQStyleOptionGraphicsItem@@@Z @ 12654 NONAME ; void QGraphicsViewPrivate::freeStyleOptionsArray(class QStyleOptionGraphicsItem *)
+ ?visibilityChanged@QToolBar@@IAEX_N@Z @ 12655 NONAME ; void QToolBar::visibilityChanged(bool)
+ ?updateInputMethodSensitivity@QGraphicsViewPrivate@@QAEXXZ @ 12656 NONAME ; void QGraphicsViewPrivate::updateInputMethodSensitivity(void)
+ ?glyphMargin@QImageTextureGlyphCache@@UBEHXZ @ 12657 NONAME ; int QImageTextureGlyphCache::glyphMargin(void) const
+ ?setTextFormat@QStaticText@@QAEXW4TextFormat@Qt@@@Z @ 12658 NONAME ; void QStaticText::setTextFormat(enum Qt::TextFormat)
+ ?storeDragDropEvent@QGraphicsViewPrivate@@QAEXPBVQGraphicsSceneDragDropEvent@@@Z @ 12659 NONAME ; void QGraphicsViewPrivate::storeDragDropEvent(class QGraphicsSceneDragDropEvent const *)
+ ?updateRect@QGraphicsViewPrivate@@QAE_NABVQRect@@@Z @ 12660 NONAME ; bool QGraphicsViewPrivate::updateRect(class QRect const &)
+ ?fileData@QZipReader@@QBE?AVQByteArray@@ABVQString@@@Z @ 12661 NONAME ; class QByteArray QZipReader::fileData(class QString const &) const
+ ?translateTouchEvent@QGraphicsViewPrivate@@SAXPAV1@PAVQTouchEvent@@@Z @ 12662 NONAME ; void QGraphicsViewPrivate::translateTouchEvent(class QGraphicsViewPrivate *, class QTouchEvent *)
+ ?dispatchPendingUpdateRequests@QGraphicsViewPrivate@@QAEXXZ @ 12663 NONAME ; void QGraphicsViewPrivate::dispatchPendingUpdateRequests(void)
+ ?updatePaintedViewBoundingRects@QGraphicsItemPrivate@@QAEX_N@Z @ 12664 NONAME ; void QGraphicsItemPrivate::updatePaintedViewBoundingRects(bool)
+ ?setHeight@QGraphicsItemPrivate@@UAEXM@Z @ 12665 NONAME ; void QGraphicsItemPrivate::setHeight(float)
+ ?isValidColor@QColor@@SA_NABVQString@@@Z @ 12666 NONAME ; bool QColor::isValidColor(class QString const &)
+ ??0QStaticTextItem@@QAE@XZ @ 12667 NONAME ; QStaticTextItem::QStaticTextItem(void)
+ ?updateMicroFocus@QGraphicsItem@@IAEXXZ @ 12668 NONAME ; void QGraphicsItem::updateMicroFocus(void)
+ ??1QStaticText@@QAE@XZ @ 12669 NONAME ; QStaticText::~QStaticText(void)
+ ?nativePixmap@QEgl@@YAPAXPAVQPixmap@@@Z @ 12670 NONAME ; void * QEgl::nativePixmap(class QPixmap *)
+ ?render@QWidgetPrivate@@QAEXPAVQPaintDevice@@ABVQPoint@@ABVQRegion@@V?$QFlags@W4RenderFlag@QWidget@@@@_N@Z @ 12671 NONAME ; void QWidgetPrivate::render(class QPaintDevice *, class QPoint const &, class QRegion const &, class QFlags<enum QWidget::RenderFlag>, bool)
+ ?constBits@QImage@@QBEPBEXZ @ 12672 NONAME ; unsigned char const * QImage::constBits(void) const
+ ??8QStaticText@@QBE_NABV0@@Z @ 12673 NONAME ; bool QStaticText::operator==(class QStaticText const &) const
+ ??0FileInfo@QZipReader@@QAE@XZ @ 12674 NONAME ; QZipReader::FileInfo::FileInfo(void)
+ ?q_func@QGraphicsViewPrivate@@ABEPBVQGraphicsView@@XZ @ 12675 NONAME ; class QGraphicsView const * QGraphicsViewPrivate::q_func(void) const
+ ?textFormat@QStaticText@@QBE?AW4TextFormat@Qt@@XZ @ 12676 NONAME ; enum Qt::TextFormat QStaticText::textFormat(void) const
+ ?isReadable@QZipReader@@QBE_NXZ @ 12677 NONAME ; bool QZipReader::isReadable(void) const
+ ?getPixmapCursor@QApplicationPrivate@@QAE?AVQPixmap@@W4CursorShape@Qt@@@Z @ 12678 NONAME ; class QPixmap QApplicationPrivate::getPixmapCursor(enum Qt::CursorShape)
+ ?entryInfoAt@QZipReader@@QBE?AUFileInfo@1@H@Z @ 12679 NONAME ; struct QZipReader::FileInfo QZipReader::entryInfoAt(int) const
+ ?children_append@QGraphicsItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQGraphicsObject@@@@PAVQGraphicsObject@@@Z @ 12680 NONAME ; void QGraphicsItemPrivate::children_append(class QDeclarativeListProperty<class QGraphicsObject> *, class QGraphicsObject *)
+ ?hasPartialUpdateSupport@QWindowSurface@@QBE_NXZ @ 12681 NONAME ; bool QWindowSurface::hasPartialUpdateSupport(void) const
+ ?storeMouseEvent@QGraphicsViewPrivate@@QAEXPAVQMouseEvent@@@Z @ 12682 NONAME ; void QGraphicsViewPrivate::storeMouseEvent(class QMouseEvent *)
+ ?mapToScene@QGraphicsViewPrivate@@QBE?AVQPointF@@ABV2@@Z @ 12683 NONAME ; class QPointF QGraphicsViewPrivate::mapToScene(class QPointF const &) const
+ ?display@QEgl@@YAHXZ @ 12684 NONAME ; int QEgl::display(void)
+ ?drawStaticText@QPainter@@QAEXABVQPoint@@ABVQStaticText@@@Z @ 12685 NONAME ; void QPainter::drawStaticText(class QPoint const &, class QStaticText const &)
+ ?fillTexture@QImageTextureGlyphCache@@UAEXABUCoord@QTextureGlyphCache@@I@Z @ 12686 NONAME ; void QImageTextureGlyphCache::fillTexture(struct QTextureGlyphCache::Coord const &, unsigned int)
+ ?addToPolygon@QBezier@@QBEXPAVQPolygonF@@M@Z @ 12687 NONAME ; void QBezier::addToPolygon(class QPolygonF *, float) const
+ ?eglCreateImageKHR@QEgl@@YAHHHHHPBH@Z @ 12688 NONAME ; int QEgl::eglCreateImageKHR(int, int, int, int, int const *)
+ ?resetWidth@QGraphicsItemPrivate@@UAEXXZ @ 12689 NONAME ; void QGraphicsItemPrivate::resetWidth(void)
+ ?detach@QStaticText@@AAEXXZ @ 12690 NONAME ; void QStaticText::detach(void)
+ ?totalUsed@QPixmapCache@@SAHXZ @ 12691 NONAME ; int QPixmapCache::totalUsed(void)
+ ??0QKeySequence@@QAE@ABVQString@@W4SequenceFormat@0@@Z @ 12692 NONAME ; QKeySequence::QKeySequence(class QString const &, enum QKeySequence::SequenceFormat)
+ ?device@QZipReader@@QBEPAVQIODevice@@XZ @ 12693 NONAME ; class QIODevice * QZipReader::device(void) const
+ ?hasExtension@QEgl@@YA_NPBD@Z @ 12694 NONAME ; bool QEgl::hasExtension(char const *)
+ ?mapRectFromScene@QGraphicsViewPrivate@@QBE?AVQRectF@@ABV2@@Z @ 12695 NONAME ; class QRectF QGraphicsViewPrivate::mapRectFromScene(class QRectF const &) const
+ ?commandDescription@QPaintBuffer@@QBE?AVQString@@H@Z @ 12696 NONAME ; class QString QPaintBuffer::commandDescription(int) const
+ ?layoutChanged@QGraphicsWidget@@IAEXXZ @ 12697 NONAME ; void QGraphicsWidget::layoutChanged(void)
+ ??0QGraphicsViewPrivate@@QAE@XZ @ 12698 NONAME ; QGraphicsViewPrivate::QGraphicsViewPrivate(void)
+ ?anchorAt@QPlainTextEdit@@QBE?AVQString@@ABVQPoint@@@Z @ 12699 NONAME ; class QString QPlainTextEdit::anchorAt(class QPoint const &) const
+ ?getSubRange@QBezier@@QBE?AV1@MM@Z @ 12700 NONAME ; class QBezier QBezier::getSubRange(float, float) const
+ ?replaceScrollBar@QAbstractScrollAreaPrivate@@QAEXPAVQScrollBar@@W4Orientation@Qt@@@Z @ 12701 NONAME ; void QAbstractScrollAreaPrivate::replaceScrollBar(class QScrollBar *, enum Qt::Orientation)
+ ?mapToViewRegion@QGraphicsViewPrivate@@QBE?AVQRegion@@PBVQGraphicsItem@@ABVQRectF@@@Z @ 12702 NONAME ; class QRegion QGraphicsViewPrivate::mapToViewRegion(class QGraphicsItem const *, class QRectF const &) const
+ ?allPixmaps@QPixmapCache@@SA?AV?$QList@U?$QPair@VQString@@VQPixmap@@@@@@XZ @ 12703 NONAME ; class QList<struct QPair<class QString, class QPixmap> > QPixmapCache::allPixmaps(void)
+ ??_EQAbstractScrollAreaPrivate@@UAE@I@Z @ 12704 NONAME ; QAbstractScrollAreaPrivate::~QAbstractScrollAreaPrivate(unsigned int)
+ ?pageAdded@QWizard@@IAEXH@Z @ 12705 NONAME ; void QWizard::pageAdded(int)
+ ?populate@QTextureGlyphCache@@QAEXPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12706 NONAME ; void QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *)
+ ??1QStaticTextItem@@QAE@XZ @ 12707 NONAME ; QStaticTextItem::~QStaticTextItem(void)
+ ?populateSceneDragDropEvent@QGraphicsViewPrivate@@QAEXPAVQGraphicsSceneDragDropEvent@@PAVQDropEvent@@@Z @ 12708 NONAME ; void QGraphicsViewPrivate::populateSceneDragDropEvent(class QGraphicsSceneDragDropEvent *, class QDropEvent *)
+ ?updateAll@QGraphicsViewPrivate@@QAEXXZ @ 12709 NONAME ; void QGraphicsViewPrivate::updateAll(void)
+ ?nativeWindow@QEgl@@YAPAXPAVQWidget@@@Z @ 12710 NONAME ; void * QEgl::nativeWindow(class QWidget *)
+ ?children_count@QGraphicsItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQGraphicsObject@@@@@Z @ 12711 NONAME ; int QGraphicsItemPrivate::children_count(class QDeclarativeListProperty<class QGraphicsObject> *)
+ ?allocStyleOptionsArray@QGraphicsViewPrivate@@QAEPAVQStyleOptionGraphicsItem@@H@Z @ 12712 NONAME ; class QStyleOptionGraphicsItem * QGraphicsViewPrivate::allocStyleOptionsArray(int)
+ ?resizeTextureData@QImageTextureGlyphCache@@UAEXHH@Z @ 12713 NONAME ; void QImageTextureGlyphCache::resizeTextureData(int, int)
+ ?drawPixmapFragments@QPainter@@QAEXPBVPixmapFragment@1@HABVQPixmap@@V?$QFlags@W4PixmapFragmentHint@QPainter@@@@@Z @ 12714 NONAME ; void QPainter::drawPixmapFragments(class QPainter::PixmapFragment const *, int, class QPixmap const &, class QFlags<enum QPainter::PixmapFragmentHint>)
+ ?setColorFromString@QColor@@AAE_NABVQString@@@Z @ 12715 NONAME ; bool QColor::setColorFromString(class QString const &)
+ ??1QAbstractScrollAreaPrivate@@UAE@XZ @ 12716 NONAME ; QAbstractScrollAreaPrivate::~QAbstractScrollAreaPrivate(void)
+ ?setText@QStaticText@@QAEXABVQString@@@Z @ 12717 NONAME ; void QStaticText::setText(class QString const &)
+ ?bitPlaneCount@QImage@@QBEHXZ @ 12718 NONAME ; int QImage::bitPlaneCount(void) const
+ ?_q_unsetViewportCursor@QGraphicsViewPrivate@@QAEXXZ @ 12719 NONAME ; void QGraphicsViewPrivate::_q_unsetViewportCursor(void)
+ ?setUpdateClip@QGraphicsViewPrivate@@QAEXPAVQGraphicsItem@@@Z @ 12720 NONAME ; void QGraphicsViewPrivate::setUpdateClip(class QGraphicsItem *)
+ ?resetHeight@QGraphicsItemPrivate@@UAEXXZ @ 12721 NONAME ; void QGraphicsItemPrivate::resetHeight(void)
+ ?runtimeData@QPixmapData@@UBEPAV1@XZ @ 12722 NONAME ; class QPixmapData * QPixmapData::runtimeData(void) const
+ ?selectedText@QLabel@@QBE?AVQString@@XZ @ 12723 NONAME ; class QString QLabel::selectedText(void) const
+ ?childrenList@QGraphicsItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQGraphicsObject@@@@XZ @ 12724 NONAME ; class QDeclarativeListProperty<class QGraphicsObject> QGraphicsItemPrivate::childrenList(void)
+ ?childrenChanged@QGraphicsObject@@IAEXXZ @ 12725 NONAME ; void QGraphicsObject::childrenChanged(void)
+ ?recalculateContentSize@QGraphicsViewPrivate@@QAEXXZ @ 12726 NONAME ; void QGraphicsViewPrivate::recalculateContentSize(void)
+ ?heightChanged@QGraphicsObject@@IAEXXZ @ 12727 NONAME ; void QGraphicsObject::heightChanged(void)
+ ?name@QIcon@@QBE?AVQString@@XZ @ 12728 NONAME ; class QString QIcon::name(void) const
+ ?errorString@QEgl@@YA?AVQString@@H@Z @ 12729 NONAME ; class QString QEgl::errorString(int)
+ ??4FileInfo@QZipReader@@QAEAAU01@ABU01@@Z @ 12730 NONAME ; struct QZipReader::FileInfo & QZipReader::FileInfo::operator=(struct QZipReader::FileInfo const &)
+ ??1QGraphicsViewPrivate@@UAE@XZ @ 12731 NONAME ; QGraphicsViewPrivate::~QGraphicsViewPrivate(void)
+ ?chooseConfig@QEgl@@YAHPBVQEglProperties@@W4PixelFormatMatch@1@@Z @ 12732 NONAME ; int QEgl::chooseConfig(class QEglProperties const *, enum QEgl::PixelFormatMatch)
+ ?prependGraphicsTransform@QGraphicsItemPrivate@@QAEXPAVQGraphicsTransform@@@Z @ 12733 NONAME ; void QGraphicsItemPrivate::prependGraphicsTransform(class QGraphicsTransform *)
+ ?eglDestroyImageKHR@QEgl@@YAHHH@Z @ 12734 NONAME ; int QEgl::eglDestroyImageKHR(int, int)
+ ?qt_draw_glyphs@@YAXPAVQPainter@@PBIPBVQPointF@@H@Z @ 12735 NONAME ; void qt_draw_glyphs(class QPainter *, unsigned int const *, class QPointF const *, int)
+ ?isEmpty@QItemSelectionRange@@QBE_NXZ @ 12736 NONAME ; bool QItemSelectionRange::isEmpty(void) const
+ ?count@QZipReader@@QBEHXZ @ 12737 NONAME ; int QZipReader::count(void) const
+ ?centerView@QGraphicsViewPrivate@@QAEXW4ViewportAnchor@QGraphicsView@@@Z @ 12738 NONAME ; void QGraphicsViewPrivate::centerView(enum QGraphicsView::ViewportAnchor)
+ ?contentsOffset@QAbstractScrollAreaPrivate@@UBE?AVQPoint@@XZ @ 12739 NONAME ; class QPoint QAbstractScrollAreaPrivate::contentsOffset(void) const
+ ?_q_vslide@QAbstractScrollAreaPrivate@@QAEXH@Z @ 12740 NONAME ; void QAbstractScrollAreaPrivate::_q_vslide(int)
+ ??1QZipReader@@QAE@XZ @ 12741 NONAME ; QZipReader::~QZipReader(void)
+ ??_EQImageTextureGlyphCache@@UAE@I@Z @ 12742 NONAME ; QImageTextureGlyphCache::~QImageTextureGlyphCache(unsigned int)
+ ?drawPixmapFragments@QPaintEngineEx@@UAEXPBVPixmapFragment@QPainter@@HABVQPixmap@@V?$QFlags@W4PixmapFragmentHint@QPainter@@@@@Z @ 12743 NONAME ; void QPaintEngineEx::drawPixmapFragments(class QPainter::PixmapFragment const *, int, class QPixmap const &, class QFlags<enum QPainter::PixmapFragmentHint>)
+ ?nativeDisplay@QEgl@@YAHXZ @ 12744 NONAME ; int QEgl::nativeDisplay(void)
+ ?layoutChildren@QAbstractScrollAreaPrivate@@QAEXXZ @ 12745 NONAME ; void QAbstractScrollAreaPrivate::layoutChildren(void)
+ ?horizontalScroll@QGraphicsViewPrivate@@QBE_JXZ @ 12746 NONAME ; long long QGraphicsViewPrivate::horizontalScroll(void) const
+ ?updateRectF@QGraphicsViewPrivate@@QAE_NABVQRectF@@@Z @ 12747 NONAME ; bool QGraphicsViewPrivate::updateRectF(class QRectF const &)
+ ?setPlaceholderText@QLineEdit@@QAEXABVQString@@@Z @ 12748 NONAME ; void QLineEdit::setPlaceholderText(class QString const &)
+ ?resizeEvent@QSplitterHandle@@MAEXPAVQResizeEvent@@@Z @ 12749 NONAME ; void QSplitterHandle::resizeEvent(class QResizeEvent *)
+ ?drawStaticText@QPainter@@QAEXHHABVQStaticText@@@Z @ 12750 NONAME ; void QPainter::drawStaticText(int, int, class QStaticText const &)
+ ?setSelection@QLabel@@QAEXHH@Z @ 12751 NONAME ; void QLabel::setSelection(int, int)
+ ?q_func@QAbstractScrollAreaPrivate@@AAEPAVQAbstractScrollArea@@XZ @ 12752 NONAME ; class QAbstractScrollArea * QAbstractScrollAreaPrivate::q_func(void)
+ ?updateMicroFocus@QGraphicsObject@@IAEXXZ @ 12753 NONAME ; void QGraphicsObject::updateMicroFocus(void)
+ ?drawStaticText@QPainter@@QAEXABVQPointF@@ABVQStaticText@@@Z @ 12754 NONAME ; void QPainter::drawStaticText(class QPointF const &, class QStaticText const &)
+ ?processPendingUpdates@QGraphicsViewPrivate@@QAEXXZ @ 12755 NONAME ; void QGraphicsViewPrivate::processPendingUpdates(void)
+ ?rubberBandRegion@QGraphicsViewPrivate@@QBE?AVQRegion@@PBVQWidget@@ABVQRect@@@Z @ 12756 NONAME ; class QRegion QGraphicsViewPrivate::rubberBandRegion(class QWidget const *, class QRect const &) const
+ ?children_at@QGraphicsItemPrivate@@SAPAVQGraphicsObject@@PAV?$QDeclarativeListProperty@VQGraphicsObject@@@@H@Z @ 12757 NONAME ; class QGraphicsObject * QGraphicsItemPrivate::children_at(class QDeclarativeListProperty<class QGraphicsObject> *, int)
+ ?widthChanged@QGraphicsObject@@IAEXXZ @ 12758 NONAME ; void QGraphicsObject::widthChanged(void)
+ ?_q_showOrHideScrollBars@QAbstractScrollAreaPrivate@@QAEXXZ @ 12759 NONAME ; void QAbstractScrollAreaPrivate::_q_showOrHideScrollBars(void)
+ ?mouseMoveEventHandler@QGraphicsViewPrivate@@QAEXPAVQMouseEvent@@@Z @ 12760 NONAME ; void QGraphicsViewPrivate::mouseMoveEventHandler(class QMouseEvent *)
+ ?replayLastMouseEvent@QGraphicsViewPrivate@@QAEXXZ @ 12761 NONAME ; void QGraphicsViewPrivate::replayLastMouseEvent(void)
+ ??0QStaticText@@QAE@ABVQString@@@Z @ 12762 NONAME ; QStaticText::QStaticText(class QString const &)
+ ?close@QZipReader@@QAEXXZ @ 12763 NONAME ; void QZipReader::close(void)
+ ?geometryChanged@QGraphicsWidget@@IAEXXZ @ 12764 NONAME ; void QGraphicsWidget::geometryChanged(void)
+ ?setCurveThreshold@QStrokerOps@@QAEXM@Z @ 12765 NONAME ; void QStrokerOps::setCurveThreshold(float)
+ ?_q_hslide@QAbstractScrollAreaPrivate@@QAEXH@Z @ 12766 NONAME ; void QAbstractScrollAreaPrivate::_q_hslide(int)
+ ?selectionStart@QLabel@@QBEHXZ @ 12767 NONAME ; int QLabel::selectionStart(void) const
+ ??0QStaticText@@QAE@XZ @ 12768 NONAME ; QStaticText::QStaticText(void)
+ ?curveThreshold@QStrokerOps@@QBEMXZ @ 12769 NONAME ; float QStrokerOps::curveThreshold(void) const
+ ?iconName@QIconEngineV2@@QAE?AVQString@@XZ @ 12770 NONAME ; class QString QIconEngineV2::iconName(void)
+ ?mapBy@QBezier@@QBE?AV1@ABVQTransform@@@Z @ 12771 NONAME ; class QBezier QBezier::mapBy(class QTransform const &) const
+ ??0QZipReader@@QAE@ABVQString@@V?$QFlags@W4OpenModeFlag@QIODevice@@@@@Z @ 12772 NONAME ; QZipReader::QZipReader(class QString const &, class QFlags<enum QIODevice::OpenModeFlag>)
+ ?flushDetachedPixmaps@QPixmapCache@@SAXXZ @ 12773 NONAME ; void QPixmapCache::flushDetachedPixmaps(void)
+ ?exists@QZipReader@@QBE_NXZ @ 12774 NONAME ; bool QZipReader::exists(void) const
+ ?prepare@QStaticText@@QAEXABVQTransform@@ABVQFont@@@Z @ 12775 NONAME ; void QStaticText::prepare(class QTransform const &, class QFont const &)
+ ?paste@QTextControl@@QAEXW4Mode@QClipboard@@@Z @ 12776 NONAME ; void QTextControl::paste(enum QClipboard::Mode)
+ ?horizontalAdvance@QTextLine@@QBEMXZ @ 12777 NONAME ; float QTextLine::horizontalAdvance(void) const
+ ?setCurveThresholdFromTransform@QStrokerOps@@QAEXABVQTransform@@@Z @ 12778 NONAME ; void QStrokerOps::setCurveThresholdFromTransform(class QTransform const &)
+ ?textWidth@QStaticText@@QBEMXZ @ 12779 NONAME ; float QStaticText::textWidth(void) const
+ ?create@PixmapFragment@QPainter@@SA?AV12@ABVQPointF@@ABVQRectF@@MMMM@Z @ 12780 NONAME ; class QPainter::PixmapFragment QPainter::PixmapFragment::create(class QPointF const &, class QRectF const &, float, float, float, float)
+ ?extractAll@QZipReader@@QBE_NABVQString@@@Z @ 12781 NONAME ; bool QZipReader::extractAll(class QString const &) const
+ ??0FileInfo@QZipReader@@QAE@ABU01@@Z @ 12782 NONAME ; QZipReader::FileInfo::FileInfo(struct QZipReader::FileInfo const &)
+ ?setTextWidth@QStaticText@@QAEXM@Z @ 12783 NONAME ; void QStaticText::setTextWidth(float)
+ ?fixup@QIntValidator@@UBEXAAVQString@@@Z @ 12784 NONAME ; void QIntValidator::fixup(class QString &) const
+ ?dumpAllConfigs@QEgl@@YAXXZ @ 12785 NONAME ; void QEgl::dumpAllConfigs(void)
+ ?assign@QKeySequence@@AAEHABVQString@@W4SequenceFormat@1@@Z @ 12786 NONAME ; int QKeySequence::assign(class QString const &, enum QKeySequence::SequenceFormat)
+ ?q_func@QAbstractScrollAreaPrivate@@ABEPBVQAbstractScrollArea@@XZ @ 12787 NONAME ; class QAbstractScrollArea const * QAbstractScrollAreaPrivate::q_func(void) const
+ ?mapToScene@QGraphicsViewPrivate@@QBE?AVQRectF@@ABV2@@Z @ 12788 NONAME ; class QRectF QGraphicsViewPrivate::mapToScene(class QRectF const &) const
+ ?updateScroll@QGraphicsViewPrivate@@QAEXXZ @ 12789 NONAME ; void QGraphicsViewPrivate::updateScroll(void)
+ ?directoryLoaded@QFileSystemModel@@IAEXABVQString@@@Z @ 12790 NONAME ; void QFileSystemModel::directoryLoaded(class QString const &)
+ ?placeholderText@QLineEdit@@QBE?AVQString@@XZ @ 12791 NONAME ; class QString QLineEdit::placeholderText(void) const
+ ?setWidth@QGraphicsItemPrivate@@UAEXM@Z @ 12792 NONAME ; void QGraphicsItemPrivate::setWidth(float)
+ ?q_func@QGraphicsViewPrivate@@AAEPAVQGraphicsView@@XZ @ 12793 NONAME ; class QGraphicsView * QGraphicsViewPrivate::q_func(void)
+ ?setDeviceType@QEglProperties@@QAEXH@Z @ 12794 NONAME ; void QEglProperties::setDeviceType(int)
+ ?convertFromImage@QPixmap@@QAE_NABVQImage@@V?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 12795 NONAME ; bool QPixmap::convertFromImage(class QImage const &, class QFlags<enum Qt::ImageConversionFlag>)
+ ?processCommands@QPaintBuffer@@QBEHPAVQPainter@@HH@Z @ 12796 NONAME ; int QPaintBuffer::processCommands(class QPainter *, int, int) const
+ ?glyphPadding@QTextureGlyphCache@@UBEHXZ @ 12797 NONAME ; int QTextureGlyphCache::glyphPadding(void) const
+ ??1FileInfo@QZipReader@@QAE@XZ @ 12798 NONAME ; QZipReader::FileInfo::~FileInfo(void)
+ ?scrollBarPolicyChanged@QAbstractScrollAreaPrivate@@UAEXW4Orientation@Qt@@W4ScrollBarPolicy@3@@Z @ 12799 NONAME ; void QAbstractScrollAreaPrivate::scrollBarPolicyChanged(enum Qt::Orientation, enum Qt::ScrollBarPolicy)
+ ?createSurface@QEgl@@YAHPAVQPaintDevice@@HPBVQEglProperties@@@Z @ 12800 NONAME ; int QEgl::createSurface(class QPaintDevice *, int, class QEglProperties const *)
+ ?viewportEvent@QAbstractScrollAreaPrivate@@QAE_NPAVQEvent@@@Z @ 12801 NONAME ; bool QAbstractScrollAreaPrivate::viewportEvent(class QEvent *)
+ ?frameEndIndex@QPaintBuffer@@QBEHH@Z @ 12802 NONAME ; int QPaintBuffer::frameEndIndex(int) const
+ ??1QImageTextureGlyphCache@@UAE@XZ @ 12803 NONAME ; QImageTextureGlyphCache::~QImageTextureGlyphCache(void)
+ ?setPerformanceHint@QStaticText@@QAEXW4PerformanceHint@1@@Z @ 12804 NONAME ; void QStaticText::setPerformanceHint(enum QStaticText::PerformanceHint)
+ ??0QStaticText@@QAE@ABV0@@Z @ 12805 NONAME ; QStaticText::QStaticText(class QStaticText const &)
+ ??0QImageTextureGlyphCache@@QAE@W4Type@QFontEngineGlyphCache@@ABVQTransform@@@Z @ 12806 NONAME ; QImageTextureGlyphCache::QImageTextureGlyphCache(enum QFontEngineGlyphCache::Type, class QTransform const &)
diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def
index 48ba8d2..0590d39 100644
--- a/src/s60installs/eabi/QtCoreu.def
+++ b/src/s60installs/eabi/QtCoreu.def
@@ -3652,59 +3652,57 @@ EXPORTS
_Z40QBasicAtomicPointer_fetchAndStoreAcquirePVPvS_ @ 3651 NONAME
_Z40QBasicAtomicPointer_fetchAndStoreRelaxedPVPvS_ @ 3652 NONAME
_Z40QBasicAtomicPointer_fetchAndStoreReleasePVPvS_ @ 3653 NONAME
- _Z14qDecodeDataUrlRK4QUrl @ 3654 NONAME
- _Z18qDetectCPUFeaturesv @ 3655 NONAME
- _ZN10QByteArray7replaceEiiPKci @ 3656 NONAME
- _ZN12QTextDecoderC1EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3657 NONAME
- _ZN12QTextDecoderC2EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3658 NONAME
- _ZN12QTextEncoderC1EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3659 NONAME
- _ZN12QTextEncoderC2EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3660 NONAME
- _ZN13QElapsedTimer10invalidateEv @ 3661 NONAME
- _ZN13QElapsedTimer11isMonotonicEv @ 3662 NONAME
- _ZN13QElapsedTimer5startEv @ 3663 NONAME
- _ZN13QElapsedTimer7restartEv @ 3664 NONAME
- _ZN13QElapsedTimer9clockTypeEv @ 3665 NONAME
- _ZN20QStateMachinePrivate12clearHistoryEv @ 3666 NONAME
- _ZN7QStringC1EPK5QChar @ 3667 NONAME
- _ZN7QStringC2EPK5QChar @ 3668 NONAME
- _ZN8QVariantC1ERK12QEasingCurve @ 3669 NONAME
- _ZN8QVariantC2ERK12QEasingCurve @ 3670 NONAME
- _ZN9QDateTime18currentDateTimeUtcEv @ 3671 NONAME
- _ZN9QDateTime22currentMSecsSinceEpochEv @ 3672 NONAME
- _ZN9QListData11detach_growEPii @ 3673 NONAME
- _ZN9QListData6appendEi @ 3674 NONAME
- _ZN9QListData6detachEi @ 3675 NONAME
- _ZN9QMetaType15registerTypedefEPKci @ 3676 NONAME
- _ZN9QMetaType23registerStreamOperatorsEiPFvR11QDataStreamPKvEPFvS1_PvE @ 3677 NONAME
- _ZNK10QTextCodec11makeDecoderE6QFlagsINS_14ConversionFlagEE @ 3678 NONAME
- _ZNK10QTextCodec11makeEncoderE6QFlagsINS_14ConversionFlagEE @ 3679 NONAME
- _ZNK13QElapsedTimer10hasExpiredEx @ 3680 NONAME
- _ZNK13QElapsedTimer19msecsSinceReferenceEv @ 3681 NONAME
- _ZNK13QElapsedTimer6secsToERKS_ @ 3682 NONAME
- _ZNK13QElapsedTimer7elapsedEv @ 3683 NONAME
- _ZNK13QElapsedTimer7isValidEv @ 3684 NONAME
- _ZNK13QElapsedTimer7msecsToERKS_ @ 3685 NONAME
- _ZNK6QState11transitionsEv @ 3686 NONAME
- _ZNK8QVariant13toEasingCurveEv @ 3687 NONAME
- _ZlsR11QDataStreamRK12QEasingCurve @ 3688 NONAME
- _ZltRK13QElapsedTimerS1_ @ 3689 NONAME
- _ZrsR11QDataStreamR12QEasingCurve @ 3690 NONAME
- _ZN9QDateTime18setMSecsSinceEpochEx @ 3691 NONAME
- _ZN9QDateTime19fromMSecsSinceEpochEx @ 3692 NONAME
- _ZNK9QDateTime17toMSecsSinceEpochEv @ 3693 NONAME
- _ZN10QTextCodec11validCodecsEv @ 3694 NONAME
- _ZN16QDeclarativeData13parentChangedE @ 3695 NONAME DATA 4 ABSENT
- _ZN16QDeclarativeData9destroyedE @ 3696 NONAME DATA 4 ABSENT
- _ZN24QAbstractDeclarativeData13parentChangedE @ 3697 NONAME DATA 4
- _ZN24QAbstractDeclarativeData9destroyedE @ 3698 NONAME DATA 4
- _ZN23QEventDispatcherSymbian12selectThreadEv @ 3699 NONAME
- _ZN10QByteArray10setRawDataEPKcj @ 3700 NONAME
- _ZN7QString10setRawDataEPK5QChari @ 3701 NONAME
- _ZN23QCoreApplicationPrivate11symbianInitEv @ 3702 NONAME
- _ZN23QEventDispatcherSymbian11qt_metacallEN11QMetaObject4CallEiPPv @ 3703 NONAME
- _ZN23QEventDispatcherSymbian11qt_metacastEPKc @ 3704 NONAME
- _ZN23QEventDispatcherSymbian16staticMetaObjectE @ 3705 NONAME DATA 16
- _ZN23QEventDispatcherSymbian19getStaticMetaObjectEv @ 3706 NONAME
- _ZNK23QEventDispatcherSymbian10metaObjectEv @ 3707 NONAME
- _ZNK9QDateTime7msecsToERKS_ @ 3708 NONAME
+ _ZN10QTextCodec11validCodecsEv @ 3654 NONAME
+ _ZN20QStateMachinePrivate12clearHistoryEv @ 3655 NONAME
+ _Z14qDecodeDataUrlRK4QUrl @ 3656 NONAME
+ _Z18qDetectCPUFeaturesv @ 3657 NONAME
+ _ZN10QByteArray10setRawDataEPKcj @ 3658 NONAME
+ _ZN10QByteArray7replaceEiiPKci @ 3659 NONAME
+ _ZN12QTextDecoderC1EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3660 NONAME
+ _ZN12QTextDecoderC2EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3661 NONAME
+ _ZN12QTextEncoderC1EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3662 NONAME
+ _ZN12QTextEncoderC2EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3663 NONAME
+ _ZN13QElapsedTimer10invalidateEv @ 3664 NONAME
+ _ZN13QElapsedTimer11isMonotonicEv @ 3665 NONAME
+ _ZN13QElapsedTimer5startEv @ 3666 NONAME
+ _ZN13QElapsedTimer7restartEv @ 3667 NONAME
+ _ZN13QElapsedTimer9clockTypeEv @ 3668 NONAME
+ _ZN23QCoreApplicationPrivate11symbianInitEv @ 3669 NONAME
+ _ZN23QEventDispatcherSymbian11qt_metacallEN11QMetaObject4CallEiPPv @ 3670 NONAME
+ _ZN23QEventDispatcherSymbian11qt_metacastEPKc @ 3671 NONAME
+ _ZN23QEventDispatcherSymbian12selectThreadEv @ 3672 NONAME
+ _ZN23QEventDispatcherSymbian16staticMetaObjectE @ 3673 NONAME DATA 16
+ _ZN23QEventDispatcherSymbian19getStaticMetaObjectEv @ 3674 NONAME
+ _ZN24QAbstractDeclarativeData13parentChangedE @ 3675 NONAME DATA 4
+ _ZN24QAbstractDeclarativeData9destroyedE @ 3676 NONAME DATA 4
+ _ZN7QString10setRawDataEPK5QChari @ 3677 NONAME
+ _ZN7QStringC1EPK5QChar @ 3678 NONAME
+ _ZN7QStringC2EPK5QChar @ 3679 NONAME
+ _ZN8QVariantC1ERK12QEasingCurve @ 3680 NONAME
+ _ZN8QVariantC2ERK12QEasingCurve @ 3681 NONAME
+ _ZN9QDateTime18currentDateTimeUtcEv @ 3682 NONAME
+ _ZN9QDateTime18setMSecsSinceEpochEx @ 3683 NONAME
+ _ZN9QDateTime19fromMSecsSinceEpochEx @ 3684 NONAME
+ _ZN9QDateTime22currentMSecsSinceEpochEv @ 3685 NONAME
+ _ZN9QListData11detach_growEPii @ 3686 NONAME
+ _ZN9QListData6appendEi @ 3687 NONAME
+ _ZN9QListData6detachEi @ 3688 NONAME
+ _ZN9QMetaType15registerTypedefEPKci @ 3689 NONAME
+ _ZN9QMetaType23registerStreamOperatorsEiPFvR11QDataStreamPKvEPFvS1_PvE @ 3690 NONAME
+ _ZNK10QTextCodec11makeDecoderE6QFlagsINS_14ConversionFlagEE @ 3691 NONAME
+ _ZNK10QTextCodec11makeEncoderE6QFlagsINS_14ConversionFlagEE @ 3692 NONAME
+ _ZNK13QElapsedTimer10hasExpiredEx @ 3693 NONAME
+ _ZNK13QElapsedTimer19msecsSinceReferenceEv @ 3694 NONAME
+ _ZNK13QElapsedTimer6secsToERKS_ @ 3695 NONAME
+ _ZNK13QElapsedTimer7elapsedEv @ 3696 NONAME
+ _ZNK13QElapsedTimer7isValidEv @ 3697 NONAME
+ _ZNK13QElapsedTimer7msecsToERKS_ @ 3698 NONAME
+ _ZNK23QEventDispatcherSymbian10metaObjectEv @ 3699 NONAME
+ _ZNK6QState11transitionsEv @ 3700 NONAME
+ _ZNK8QVariant13toEasingCurveEv @ 3701 NONAME
+ _ZNK9QDateTime17toMSecsSinceEpochEv @ 3702 NONAME
+ _ZNK9QDateTime7msecsToERKS_ @ 3703 NONAME
+ _ZlsR11QDataStreamRK12QEasingCurve @ 3704 NONAME
+ _ZltRK13QElapsedTimerS1_ @ 3705 NONAME
+ _ZrsR11QDataStreamR12QEasingCurve @ 3706 NONAME
diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def
index a26e193..320a780 100644
--- a/src/s60installs/eabi/QtDeclarativeu.def
+++ b/src/s60installs/eabi/QtDeclarativeu.def
@@ -1019,7 +1019,7 @@ EXPORTS
_ZN21QDeclarativeFlickable11setContentYEf @ 1018 NONAME
_ZN21QDeclarativeFlickable11visibleAreaEv @ 1019 NONAME
_ZN21QDeclarativeFlickable12flickStartedEv @ 1020 NONAME
- _ZN21QDeclarativeFlickable12setOverShootEb @ 1021 NONAME
+ _ZN21QDeclarativeFlickable12setOverShootEb @ 1021 NONAME ABSENT
_ZN21QDeclarativeFlickable13flickableDataEv @ 1022 NONAME
_ZN21QDeclarativeFlickable13movementEndedEv @ 1023 NONAME
_ZN21QDeclarativeFlickable13movingChangedEv @ 1024 NONAME
@@ -1037,7 +1037,7 @@ EXPORTS
_ZN21QDeclarativeFlickable15movementStartedEv @ 1036 NONAME
_ZN21QDeclarativeFlickable15setContentWidthEf @ 1037 NONAME
_ZN21QDeclarativeFlickable16movementStartingEv @ 1038 NONAME
- _ZN21QDeclarativeFlickable16overShootChangedEv @ 1039 NONAME
+ _ZN21QDeclarativeFlickable16overShootChangedEv @ 1039 NONAME ABSENT
_ZN21QDeclarativeFlickable16sceneEventFilterEP13QGraphicsItemP6QEvent @ 1040 NONAME
_ZN21QDeclarativeFlickable16setContentHeightEf @ 1041 NONAME
_ZN21QDeclarativeFlickable16staticMetaObjectE @ 1042 NONAME DATA 16
@@ -1294,15 +1294,15 @@ EXPORTS
_ZN22QDeclarativeExpression19getStaticMetaObjectEv @ 1293 NONAME
_ZN22QDeclarativeExpression23setNotifyOnValueChangedEb @ 1294 NONAME
_ZN22QDeclarativeExpression5valueEPb @ 1295 NONAME ABSENT
- _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextRK7QStringP7QObject @ 1296 NONAME
+ _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextRK7QStringP7QObject @ 1296 NONAME ABSENT
_ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 1297 NONAME
- _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataRK7QStringP7QObject @ 1298 NONAME
- _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataRK7QStringP7QObjectR29QDeclarativeExpressionPrivate @ 1299 NONAME
+ _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataRK7QStringP7QObject @ 1298 NONAME ABSENT
+ _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataRK7QStringP7QObjectR29QDeclarativeExpressionPrivate @ 1299 NONAME ABSENT
_ZN22QDeclarativeExpressionC1Ev @ 1300 NONAME
- _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextRK7QStringP7QObject @ 1301 NONAME
+ _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextRK7QStringP7QObject @ 1301 NONAME ABSENT
_ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 1302 NONAME
- _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataRK7QStringP7QObject @ 1303 NONAME
- _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataRK7QStringP7QObjectR29QDeclarativeExpressionPrivate @ 1304 NONAME
+ _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataRK7QStringP7QObject @ 1303 NONAME ABSENT
+ _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataRK7QStringP7QObjectR29QDeclarativeExpressionPrivate @ 1304 NONAME ABSENT
_ZN22QDeclarativeExpressionC2Ev @ 1305 NONAME
_ZN22QDeclarativeExpressionD0Ev @ 1306 NONAME
_ZN22QDeclarativeExpressionD1Ev @ 1307 NONAME
@@ -1457,7 +1457,7 @@ EXPORTS
_ZN23QDeclarativeEngineDebugC1EP27QDeclarativeDebugConnectionP7QObject @ 1456 NONAME
_ZN23QDeclarativeEngineDebugC2EP27QDeclarativeDebugConnectionP7QObject @ 1457 NONAME
_ZN23QDeclarativeItemPrivate10resetWidthEv @ 1458 NONAME
- _ZN23QDeclarativeItemPrivate11currentTimeEv @ 1459 NONAME
+ _ZN23QDeclarativeItemPrivate11currentTimeEv @ 1459 NONAME ABSENT
_ZN23QDeclarativeItemPrivate11data_appendEP24QDeclarativeListPropertyI7QObjectEPS1_ @ 1460 NONAME
_ZN23QDeclarativeItemPrivate11resetHeightEv @ 1461 NONAME
_ZN23QDeclarativeItemPrivate12focusChangedEb @ 1462 NONAME
@@ -1470,12 +1470,12 @@ EXPORTS
_ZN23QDeclarativeItemPrivate15transform_countEP24QDeclarativeListPropertyI18QGraphicsTransformE @ 1469 NONAME
_ZN23QDeclarativeItemPrivate16resources_appendEP24QDeclarativeListPropertyI7QObjectEPS1_ @ 1470 NONAME
_ZN23QDeclarativeItemPrivate16transform_appendEP24QDeclarativeListPropertyI18QGraphicsTransformEPS1_ @ 1471 NONAME
- _ZN23QDeclarativeItemPrivate17setConsistentTimeEi @ 1472 NONAME
+ _ZN23QDeclarativeItemPrivate17setConsistentTimeEi @ 1472 NONAME ABSENT
_ZN23QDeclarativeItemPrivate24removeItemChangeListenerEP30QDeclarativeItemChangeListener6QFlagsINS_10ChangeTypeEE @ 1473 NONAME
- _ZN23QDeclarativeItemPrivate5startER5QTime @ 1474 NONAME
+ _ZN23QDeclarativeItemPrivate5startER5QTime @ 1474 NONAME ABSENT
_ZN23QDeclarativeItemPrivate6statesEv @ 1475 NONAME
- _ZN23QDeclarativeItemPrivate7elapsedER5QTime @ 1476 NONAME
- _ZN23QDeclarativeItemPrivate7restartER5QTime @ 1477 NONAME
+ _ZN23QDeclarativeItemPrivate7elapsedER5QTime @ 1476 NONAME ABSENT
+ _ZN23QDeclarativeItemPrivate7restartER5QTime @ 1477 NONAME ABSENT
_ZN23QDeclarativeItemPrivate8setWidthEf @ 1478 NONAME
_ZN23QDeclarativeItemPrivate9setHeightEf @ 1479 NONAME
_ZN23QDeclarativePaintedItem10clearCacheEv @ 1480 NONAME
@@ -1600,23 +1600,23 @@ EXPORTS
_ZN24QDeclarativeListAccessorD2Ev @ 1599 NONAME
_ZN24QDeclarativeParentChange11qt_metacallEN11QMetaObject4CallEiPPv @ 1600 NONAME
_ZN24QDeclarativeParentChange11qt_metacastEPKc @ 1601 NONAME
- _ZN24QDeclarativeParentChange11setRotationEf @ 1602 NONAME
+ _ZN24QDeclarativeParentChange11setRotationEf @ 1602 NONAME ABSENT
_ZN24QDeclarativeParentChange12isReversableEv @ 1603 NONAME
_ZN24QDeclarativeParentChange13copyOriginalsEP23QDeclarativeActionEvent @ 1604 NONAME ABSENT
_ZN24QDeclarativeParentChange13saveOriginalsEv @ 1605 NONAME
_ZN24QDeclarativeParentChange16staticMetaObjectE @ 1606 NONAME DATA 16
_ZN24QDeclarativeParentChange17saveCurrentValuesEv @ 1607 NONAME
_ZN24QDeclarativeParentChange19getStaticMetaObjectEv @ 1608 NONAME
- _ZN24QDeclarativeParentChange4setXEf @ 1609 NONAME
- _ZN24QDeclarativeParentChange4setYEf @ 1610 NONAME
+ _ZN24QDeclarativeParentChange4setXEf @ 1609 NONAME ABSENT
+ _ZN24QDeclarativeParentChange4setYEf @ 1610 NONAME ABSENT
_ZN24QDeclarativeParentChange6rewindEv @ 1611 NONAME
_ZN24QDeclarativeParentChange7actionsEv @ 1612 NONAME
_ZN24QDeclarativeParentChange7executeEv @ 1613 NONAME ABSENT
_ZN24QDeclarativeParentChange7reverseEv @ 1614 NONAME ABSENT
_ZN24QDeclarativeParentChange8overrideEP23QDeclarativeActionEvent @ 1615 NONAME
- _ZN24QDeclarativeParentChange8setScaleEf @ 1616 NONAME
- _ZN24QDeclarativeParentChange8setWidthEf @ 1617 NONAME
- _ZN24QDeclarativeParentChange9setHeightEf @ 1618 NONAME
+ _ZN24QDeclarativeParentChange8setScaleEf @ 1616 NONAME ABSENT
+ _ZN24QDeclarativeParentChange8setWidthEf @ 1617 NONAME ABSENT
+ _ZN24QDeclarativeParentChange9setHeightEf @ 1618 NONAME ABSENT
_ZN24QDeclarativeParentChange9setObjectEP16QDeclarativeItem @ 1619 NONAME
_ZN24QDeclarativeParentChange9setParentEP16QDeclarativeItem @ 1620 NONAME
_ZN24QDeclarativeParentChangeC1EP7QObject @ 1621 NONAME
@@ -2496,7 +2496,7 @@ EXPORTS
_ZNK20QDeclarativeRepeater5countEv @ 2495 NONAME
_ZNK20QDeclarativeRepeater5modelEv @ 2496 NONAME
_ZNK20QDeclarativeRepeater8delegateEv @ 2497 NONAME
- _ZNK20QDeclarativeTextEdit10cursorRectEv @ 2498 NONAME
+ _ZNK20QDeclarativeTextEdit10cursorRectEv @ 2498 NONAME ABSENT
_ZNK20QDeclarativeTextEdit10isReadOnlyEv @ 2499 NONAME
_ZNK20QDeclarativeTextEdit10metaObjectEv @ 2500 NONAME
_ZNK20QDeclarativeTextEdit10textFormatEv @ 2501 NONAME
@@ -2536,7 +2536,7 @@ EXPORTS
_ZNK20QMetaPropertyBuilder8isStoredEv @ 2535 NONAME
_ZNK20QMetaPropertyBuilder9isDynamicEv @ 2536 NONAME
_ZNK21QDeclarativeComponent10metaObjectEv @ 2537 NONAME
- _ZNK21QDeclarativeComponent12errorsStringEv @ 2538 NONAME
+ _ZNK21QDeclarativeComponent12errorsStringEv @ 2538 NONAME ABSENT
_ZNK21QDeclarativeComponent15creationContextEv @ 2539 NONAME
_ZNK21QDeclarativeComponent3urlEv @ 2540 NONAME
_ZNK21QDeclarativeComponent6errorsEv @ 2541 NONAME
@@ -2593,7 +2593,7 @@ EXPORTS
_ZNK21QDeclarativeFlickable8isAtXEndEv @ 2592 NONAME
_ZNK21QDeclarativeFlickable8isAtYEndEv @ 2593 NONAME
_ZNK21QDeclarativeFlickable8isMovingEv @ 2594 NONAME
- _ZNK21QDeclarativeFlickable9overShootEv @ 2595 NONAME
+ _ZNK21QDeclarativeFlickable9overShootEv @ 2595 NONAME ABSENT
_ZNK21QDeclarativeImageBase10metaObjectEv @ 2596 NONAME
_ZNK21QDeclarativeImageBase10sourceSizeEv @ 2597 NONAME
_ZNK21QDeclarativeImageBase12asynchronousEv @ 2598 NONAME
@@ -3602,4 +3602,59 @@ EXPORTS
_ZNK21QDeclarativeFlickable20isMovingHorizontallyEv @ 3601 NONAME
_ZNK21QDeclarativeFlickable22isFlickingHorizontallyEv @ 3602 NONAME
_ZThn16_N18QDeclarativeLoader17componentCompleteEv @ 3603 NONAME
+ _ZN16QDeclarativeText18paintedSizeChangedEv @ 3604 NONAME
+ _ZN20QDeclarativePathView5eventEP6QEvent @ 3605 NONAME
+ _ZN20QDeclarativeTextEdit12focusInEventEP11QFocusEvent @ 3606 NONAME
+ _ZN20QDeclarativeTextEdit13focusOutEventEP11QFocusEvent @ 3607 NONAME
+ _ZN20QDeclarativeTextEdit16setSelectByMouseEb @ 3608 NONAME
+ _ZN20QDeclarativeTextEdit18paintedSizeChangedEv @ 3609 NONAME
+ _ZN20QDeclarativeTextEdit20selectByMouseChangedEb @ 3610 NONAME
+ _ZN20QDeclarativeTextEdit22cursorRectangleChangedEv @ 3611 NONAME
+ _ZN20QDeclarativeTextEdit22openSoftwareInputPanelEv @ 3612 NONAME
+ _ZN20QDeclarativeTextEdit23closeSoftwareInputPanelEv @ 3613 NONAME
+ _ZN20QDeclarativeTextEdit24setShowInputPanelOnFocusEb @ 3614 NONAME
+ _ZN20QDeclarativeTextEdit28showInputPanelOnFocusChangedEb @ 3615 NONAME
+ _ZN21QDeclarativeTextInput12focusInEventEP11QFocusEvent @ 3616 NONAME
+ _ZN21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3617 NONAME
+ _ZN21QDeclarativeTextInput16setSelectByMouseEb @ 3618 NONAME
+ _ZN21QDeclarativeTextInput20selectByMouseChangedEb @ 3619 NONAME
+ _ZN21QDeclarativeTextInput22openSoftwareInputPanelEv @ 3620 NONAME
+ _ZN21QDeclarativeTextInput23closeSoftwareInputPanelEv @ 3621 NONAME
+ _ZN21QDeclarativeTextInput24setShowInputPanelOnFocusEb @ 3622 NONAME
+ _ZN21QDeclarativeTextInput28showInputPanelOnFocusChangedEb @ 3623 NONAME
+ _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextP7QObjectRK7QStringS3_ @ 3624 NONAME
+ _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataP7QObjectRK7QString @ 3625 NONAME
+ _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataP7QObjectRK7QStringR29QDeclarativeExpressionPrivate @ 3626 NONAME
+ _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextP7QObjectRK7QStringS3_ @ 3627 NONAME
+ _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataP7QObjectRK7QString @ 3628 NONAME
+ _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataP7QObjectRK7QStringR29QDeclarativeExpressionPrivate @ 3629 NONAME
+ _ZN23QDeclarativeItemPrivate17setConsistentTimeEx @ 3630 NONAME
+ _ZN23QDeclarativeItemPrivate5startER13QElapsedTimer @ 3631 NONAME
+ _ZN23QDeclarativeItemPrivate7elapsedER13QElapsedTimer @ 3632 NONAME
+ _ZN23QDeclarativeItemPrivate7restartER13QElapsedTimer @ 3633 NONAME
+ _ZN24QDeclarativeParentChange11setRotationE24QDeclarativeScriptString @ 3634 NONAME
+ _ZN24QDeclarativeParentChange4setXE24QDeclarativeScriptString @ 3635 NONAME
+ _ZN24QDeclarativeParentChange4setYE24QDeclarativeScriptString @ 3636 NONAME
+ _ZN24QDeclarativeParentChange8setScaleE24QDeclarativeScriptString @ 3637 NONAME
+ _ZN24QDeclarativeParentChange8setWidthE24QDeclarativeScriptString @ 3638 NONAME
+ _ZN24QDeclarativeParentChange9setHeightE24QDeclarativeScriptString @ 3639 NONAME
+ _ZN24QDeclarativeXmlListModel10queryErrorEPvRK7QString @ 3640 NONAME
+ _ZNK16QDeclarativeText12paintedWidthEv @ 3641 NONAME
+ _ZNK16QDeclarativeText13paintedHeightEv @ 3642 NONAME
+ _ZNK20QDeclarativeTextEdit12paintedWidthEv @ 3643 NONAME
+ _ZNK20QDeclarativeTextEdit13paintedHeightEv @ 3644 NONAME
+ _ZNK20QDeclarativeTextEdit13selectByMouseEv @ 3645 NONAME
+ _ZNK20QDeclarativeTextEdit15cursorRectangleEv @ 3646 NONAME
+ _ZNK20QDeclarativeTextEdit21showInputPanelOnFocusEv @ 3647 NONAME
+ _ZNK21QDeclarativeComponent11errorStringEv @ 3648 NONAME
+ _ZNK21QDeclarativeTextInput13selectByMouseEv @ 3649 NONAME
+ _ZNK21QDeclarativeTextInput21showInputPanelOnFocusEv @ 3650 NONAME
+ _ZNK23QDeclarativePaintedItem12boundingRectEv @ 3651 NONAME
+ _ZNK24QDeclarativeXmlListModel11errorStringEv @ 3652 NONAME
+ _ZNK24QDeclarativeXmlListModel3getEi @ 3653 NONAME
+ _ZThn8_N20QDeclarativeTextEdit12focusInEventEP11QFocusEvent @ 3654 NONAME
+ _ZThn8_N20QDeclarativeTextEdit13focusOutEventEP11QFocusEvent @ 3655 NONAME
+ _ZThn8_N21QDeclarativeTextInput12focusInEventEP11QFocusEvent @ 3656 NONAME
+ _ZThn8_N21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3657 NONAME
+ _ZThn8_NK23QDeclarativePaintedItem12boundingRectEv @ 3658 NONAME
diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def
index 6b05e9b..8aafde9 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -11805,211 +11805,205 @@ EXPORTS
_ZN24QImagePixmapCleanupHooks34executePixmapDataModificationHooksEP11QPixmapData @ 11804 NONAME
_ZN9QS60Style10timerEventEP11QTimerEvent @ 11805 NONAME
_ZN9QS60Style11eventFilterEP7QObjectP6QEvent @ 11806 NONAME
- _ZN13QFontDatabase25removeAllApplicationFontsEv @ 11807 NONAME
- _ZN10QZipReader5closeEv @ 11808 NONAME
- _ZN10QZipReader8FileInfoC1ERKS0_ @ 11809 NONAME
- _ZN10QZipReader8FileInfoC1Ev @ 11810 NONAME
- _ZN10QZipReader8FileInfoC2ERKS0_ @ 11811 NONAME
- _ZN10QZipReader8FileInfoC2Ev @ 11812 NONAME
- _ZN10QZipReader8FileInfoD1Ev @ 11813 NONAME
- _ZN10QZipReader8FileInfoD2Ev @ 11814 NONAME
- _ZN10QZipReader8FileInfoaSERKS0_ @ 11815 NONAME
- _ZN10QZipReaderC1EP9QIODevice @ 11816 NONAME
- _ZN10QZipReaderC1ERK7QString6QFlagsIN9QIODevice12OpenModeFlagEE @ 11817 NONAME
- _ZN10QZipReaderC2EP9QIODevice @ 11818 NONAME
- _ZN10QZipReaderC2ERK7QString6QFlagsIN9QIODevice12OpenModeFlagEE @ 11819 NONAME
- _ZN10QZipReaderD1Ev @ 11820 NONAME
- _ZN10QZipReaderD2Ev @ 11821 NONAME
- _ZN11QStaticText13setTextFormatEN2Qt10TextFormatE @ 11822 NONAME
- _ZN11QStaticText14setMaximumSizeERK6QSizeF @ 11823 NONAME ABSENT
- _ZN11QStaticText18setPerformanceHintENS_15PerformanceHintE @ 11824 NONAME
- _ZN11QStaticText6detachEv @ 11825 NONAME
- _ZN11QStaticText7prepareERK10QTransformRK5QFont @ 11826 NONAME
- _ZN11QStaticText7setTextERK7QString @ 11827 NONAME
- _ZN11QStaticTextC1ERK7QString @ 11828 NONAME
- _ZN11QStaticTextC1ERKS_ @ 11829 NONAME
- _ZN11QStaticTextC1Ev @ 11830 NONAME
- _ZN11QStaticTextC2ERK7QString @ 11831 NONAME
- _ZN11QStaticTextC2ERKS_ @ 11832 NONAME
- _ZN11QStaticTextC2Ev @ 11833 NONAME
- _ZN11QStaticTextD1Ev @ 11834 NONAME
- _ZN11QStaticTextD2Ev @ 11835 NONAME
- _ZN11QStaticTextaSERKS_ @ 11836 NONAME
- _ZN12QKeySequence6assignERK7QStringNS_14SequenceFormatE @ 11837 NONAME
- _ZN12QKeySequenceC1ERK7QStringNS_14SequenceFormatE @ 11838 NONAME
- _ZN12QKeySequenceC2ERK7QStringNS_14SequenceFormatE @ 11839 NONAME
- _ZN13QTextDocument19clearUndoRedoStacksENS_6StacksE @ 11840 NONAME
- _ZN14QPaintEngineEx19drawPixmapFragmentsEPKN8QPainter8FragmentEiRK7QPixmap6QFlagsINS0_12FragmentHintEE @ 11841 NONAME ABSENT
- _ZN14QWidgetPrivate11inTabWidgetEP7QWidget @ 11842 NONAME
- _ZN14QWidgetPrivate17canKeypadNavigateEN2Qt11OrientationE @ 11843 NONAME
- _ZN14QWidgetPrivate6renderEP12QPaintDeviceRK6QPointRK7QRegion6QFlagsIN7QWidget10RenderFlagEEb @ 11844 NONAME
- _ZN15QGraphicsWidget21setAutoFillBackgroundEb @ 11845 NONAME
- _ZN16QFileSystemModel15directoryLoadedERK7QString @ 11846 NONAME
- _ZN18QTextureGlyphCache8populateEP11QFontEngineiPKjPK11QFixedPoint @ 11847 NONAME
- _ZN19QApplicationPrivate15getPixmapCursorEN2Qt11CursorShapeE @ 11848 NONAME
- _ZN20QGraphicsViewPrivate10centerViewEN13QGraphicsView14ViewportAnchorE @ 11849 NONAME
- _ZN20QGraphicsViewPrivate10updateRectERK5QRect @ 11850 NONAME
- _ZN20QGraphicsViewPrivate12updateRegionERK7QRegion @ 11851 NONAME ABSENT
- _ZN20QGraphicsViewPrivate12updateScrollEv @ 11852 NONAME
- _ZN20QGraphicsViewPrivate15storeMouseEventEP11QMouseEvent @ 11853 NONAME
- _ZN20QGraphicsViewPrivate18storeDragDropEventEPK27QGraphicsSceneDragDropEvent @ 11854 NONAME
- _ZN20QGraphicsViewPrivate19translateTouchEventEPS_P11QTouchEvent @ 11855 NONAME
- _ZN20QGraphicsViewPrivate20_q_setViewportCursorERK7QCursor @ 11856 NONAME
- _ZN20QGraphicsViewPrivate20replayLastMouseEventEv @ 11857 NONAME
- _ZN20QGraphicsViewPrivate21freeStyleOptionsArrayEP24QStyleOptionGraphicsItem @ 11858 NONAME
- _ZN20QGraphicsViewPrivate21mouseMoveEventHandlerEP11QMouseEvent @ 11859 NONAME
- _ZN20QGraphicsViewPrivate21processPendingUpdatesEv @ 11860 NONAME
- _ZN20QGraphicsViewPrivate21updateLastCenterPointEv @ 11861 NONAME
- _ZN20QGraphicsViewPrivate22_q_unsetViewportCursorEv @ 11862 NONAME
- _ZN20QGraphicsViewPrivate22allocStyleOptionsArrayEi @ 11863 NONAME
- _ZN20QGraphicsViewPrivate22recalculateContentSizeEv @ 11864 NONAME
- _ZN20QGraphicsViewPrivate26populateSceneDragDropEventEP27QGraphicsSceneDragDropEventP10QDropEvent @ 11865 NONAME
- _ZN20QGraphicsViewPrivate28updateInputMethodSensitivityEv @ 11866 NONAME
- _ZN20QGraphicsViewPrivateC1Ev @ 11867 NONAME
- _ZN20QGraphicsViewPrivateC2Ev @ 11868 NONAME
- _ZN24QImagePixmapCleanupHooks13isImageCachedERK6QImage @ 11869 NONAME
- _ZN24QImagePixmapCleanupHooks14isPixmapCachedERK7QPixmap @ 11870 NONAME
- _ZN26QAbstractScrollAreaPrivate14layoutChildrenEv @ 11871 NONAME
- _ZN26QAbstractScrollAreaPrivate16replaceScrollBarEP10QScrollBarN2Qt11OrientationE @ 11872 NONAME
- _ZN26QAbstractScrollAreaPrivate23_q_showOrHideScrollBarsEv @ 11873 NONAME
- _ZN26QAbstractScrollAreaPrivate4initEv @ 11874 NONAME
- _ZN26QAbstractScrollAreaPrivate9_q_hslideEi @ 11875 NONAME
- _ZN26QAbstractScrollAreaPrivate9_q_vslideEi @ 11876 NONAME
- _ZN26QAbstractScrollAreaPrivateC1Ev @ 11877 NONAME
- _ZN26QAbstractScrollAreaPrivateC2Ev @ 11878 NONAME
- _ZN6QColor12isValidColorERK7QString @ 11879 NONAME
- _ZN6QColor18setColorFromStringERK7QString @ 11880 NONAME
- _ZN6QLabel12setSelectionEii @ 11881 NONAME
- _ZN7QPixmap16convertFromImageERK6QImage6QFlagsIN2Qt19ImageConversionFlagEE @ 11882 NONAME
- _ZN8QPainter14drawStaticTextERK7QPointFRK11QStaticText @ 11883 NONAME
- _ZN8QPainter19drawPixmapFragmentsEPKNS_8FragmentEiRK7QPixmap6QFlagsINS_12FragmentHintEE @ 11884 NONAME ABSENT
- _ZN8QPainter8Fragment6createERK7QPointFRK6QRectFffff @ 11885 NONAME ABSENT
- _ZN8QToolBar17visibilityChangedEb @ 11886 NONAME
- _ZNK10QZipReader10extractAllERK7QString @ 11887 NONAME
- _ZNK10QZipReader10isReadableEv @ 11888 NONAME
- _ZNK10QZipReader11entryInfoAtEi @ 11889 NONAME
- _ZNK10QZipReader12fileInfoListEv @ 11890 NONAME
- _ZNK10QZipReader5countEv @ 11891 NONAME
- _ZNK10QZipReader6existsEv @ 11892 NONAME
- _ZNK10QZipReader6statusEv @ 11893 NONAME
- _ZNK10QZipReader8fileDataERK7QString @ 11894 NONAME
- _ZNK11QStaticText10textFormatEv @ 11895 NONAME
- _ZNK11QStaticText11maximumSizeEv @ 11896 NONAME ABSENT
- _ZNK11QStaticText15performanceHintEv @ 11897 NONAME
- _ZNK11QStaticText4sizeEv @ 11898 NONAME
- _ZNK11QStaticText4textEv @ 11899 NONAME
- _ZNK11QStaticTexteqERKS_ @ 11900 NONAME
- _ZNK11QStaticTextneERKS_ @ 11901 NONAME
- _ZNK11QTextCursor15positionInBlockEv @ 11902 NONAME
- _ZNK13QIntValidator5fixupER7QString @ 11903 NONAME
- _ZNK14QPlainTextEdit8anchorAtERK6QPoint @ 11904 NONAME
- _ZNK15QGraphicsWidget18autoFillBackgroundEv @ 11905 NONAME
- _ZNK20QGraphicsViewPrivate10mapToSceneERK6QRectF @ 11906 NONAME
- _ZNK20QGraphicsViewPrivate10mapToSceneERK7QPointF @ 11907 NONAME
- _ZNK20QGraphicsViewPrivate13mapToViewRectEPK13QGraphicsItemRK6QRectF @ 11908 NONAME
- _ZNK20QGraphicsViewPrivate14mapRectToSceneERK5QRect @ 11909 NONAME
- _ZNK20QGraphicsViewPrivate14verticalScrollEv @ 11910 NONAME
- _ZNK20QGraphicsViewPrivate15mapToViewRegionEPK13QGraphicsItemRK6QRectF @ 11911 NONAME
- _ZNK20QGraphicsViewPrivate16horizontalScrollEv @ 11912 NONAME
- _ZNK20QGraphicsViewPrivate16mapRectFromSceneERK6QRectF @ 11913 NONAME
- _ZNK20QGraphicsViewPrivate16rubberBandRegionEPK7QWidgetRK5QRect @ 11914 NONAME
- _ZNK20QGraphicsViewPrivate9findItemsERK7QRegionPbRK10QTransform @ 11915 NONAME
- _ZNK26QAbstractScrollAreaPrivate14contentsOffsetEv @ 11916 NONAME
- _ZNK6QImage13constScanLineEi @ 11917 NONAME
- _ZNK6QImage9constBitsEv @ 11918 NONAME
- _ZNK6QLabel12selectedTextEv @ 11919 NONAME
- _ZNK6QLabel14selectionStartEv @ 11920 NONAME
- _ZNK6QLabel15hasSelectedTextEv @ 11921 NONAME
- _ZNK7QBezier11getSubRangeEff @ 11922 NONAME
- _ZNK7QBezier5mapByERK10QTransform @ 11923 NONAME
- _ZTI20QGraphicsViewPrivate @ 11924 NONAME
- _ZTI26QAbstractScrollAreaPrivate @ 11925 NONAME
- _ZTV20QGraphicsViewPrivate @ 11926 NONAME
- _ZTV26QAbstractScrollAreaPrivate @ 11927 NONAME
- _Z14qt_draw_glyphsP8QPainterPKjPK7QPointFi @ 11928 NONAME
- _ZN11QFontEngine16getGlyphBearingsEjPfS0_ @ 11929 NONAME
- _ZN12QLineControl17updateDisplayTextEb @ 11930 NONAME
- _ZN12QLineControl5pasteEN10QClipboard4ModeE @ 11931 NONAME
- _ZN12QTextControl5pasteEN10QClipboard4ModeE @ 11932 NONAME
- _ZN14QPaintEngineEx19drawPixmapFragmentsEPKN8QPainter14PixmapFragmentEiRK7QPixmap6QFlagsINS0_18PixmapFragmentHintEE @ 11933 NONAME
- _ZN15QGraphicsObject12widthChangedEv @ 11934 NONAME
- _ZN15QGraphicsObject13heightChangedEv @ 11935 NONAME
- _ZN15QGraphicsObject15childrenChangedEv @ 11936 NONAME
- _ZN15QGraphicsWidget15geometryChangedEv @ 11937 NONAME
- _ZN15QSplitterHandle11resizeEventEP12QResizeEvent @ 11938 NONAME
- _ZN20QGraphicsItemPrivate10resetWidthEv @ 11939 NONAME
- _ZN20QGraphicsItemPrivate11resetHeightEv @ 11940 NONAME
- _ZN20QGraphicsItemPrivate12childrenListEv @ 11941 NONAME
- _ZN20QGraphicsItemPrivate14setFocusHelperEN2Qt11FocusReasonEbb @ 11942 NONAME
- _ZN20QGraphicsItemPrivate16clearFocusHelperEb @ 11943 NONAME
- _ZN20QGraphicsItemPrivate24prependGraphicsTransformEP18QGraphicsTransform @ 11944 NONAME
- _ZN20QGraphicsItemPrivate6appendEP24QDeclarativeListPropertyI15QGraphicsObjectEPS1_ @ 11945 NONAME ABSENT
- _ZN20QGraphicsItemPrivate8setWidthEf @ 11946 NONAME
- _ZN20QGraphicsItemPrivate9setHeightEf @ 11947 NONAME
- _ZN7QWizard11pageRemovedEi @ 11948 NONAME
- _ZN7QWizard13setSideWidgetEP7QWidget @ 11949 NONAME
- _ZN7QWizard9pageAddedEi @ 11950 NONAME
- _ZN8QPainter14PixmapFragment6createERK7QPointFRK6QRectFffff @ 11951 NONAME
- _ZN8QPainter19drawPixmapFragmentsEPKNS_14PixmapFragmentEiRK7QPixmap6QFlagsINS_18PixmapFragmentHintEE @ 11952 NONAME
- _ZN9QLineEdit18setPlaceholderTextERK7QString @ 11953 NONAME
- _ZNK10QZipReader6deviceEv @ 11954 NONAME
- _ZNK10QZipReader8FileInfo7isValidEv @ 11955 NONAME
- _ZNK20QGraphicsItemPrivate5widthEv @ 11956 NONAME
- _ZNK20QGraphicsItemPrivate6heightEv @ 11957 NONAME
- _ZNK6QImage13bitPlaneCountEv @ 11958 NONAME
- _ZNK7QWizard10sideWidgetEv @ 11959 NONAME
- _ZNK9QLineEdit15placeholderTextEv @ 11960 NONAME
- _ZNK9QTextLine17horizontalAdvanceEv @ 11961 NONAME
- _ZN11QStaticText12setTextWidthEf @ 11962 NONAME
- _ZN13QGraphicsItem16updateMicroFocusEv @ 11963 NONAME
- _ZN15QGraphicsObject16updateMicroFocusEv @ 11964 NONAME
- _ZN15QGraphicsWidget13layoutChangedEv @ 11965 NONAME
- _ZN16QPainterReplayer15processCommandsERK12QPaintBufferP8QPainterii @ 11966 NONAME
- _ZNK11QStaticText9textWidthEv @ 11967 NONAME
- _ZNK12QPaintBuffer13frameEndIndexEi @ 11968 NONAME
- _ZNK12QPaintBuffer15frameStartIndexEi @ 11969 NONAME
- _ZNK12QPaintBuffer15processCommandsEP8QPainterii @ 11970 NONAME
- _ZNK12QPaintBuffer18commandDescriptionEi @ 11971 NONAME
- _ZN20QGraphicsItemPrivate11children_atEP24QDeclarativeListPropertyI15QGraphicsObjectEi @ 11972 NONAME
- _ZN20QGraphicsItemPrivate14children_countEP24QDeclarativeListPropertyI15QGraphicsObjectE @ 11973 NONAME
- _ZN20QGraphicsItemPrivate15children_appendEP24QDeclarativeListPropertyI15QGraphicsObjectEPS1_ @ 11974 NONAME
- _ZN11QEglContext14destroyContextEv @ 11975 NONAME
- _ZN14QEglProperties13setDeviceTypeEi @ 11976 NONAME
- _ZN4QEgl10clearErrorEv @ 11977 NONAME ABSENT
- _ZN4QEgl10extensionsEv @ 11978 NONAME
- _ZN4QEgl11errorStringEi @ 11979 NONAME
- _ZN4QEgl11errorStringEv @ 11980 NONAME ABSENT
- _ZN4QEgl12chooseConfigEPK14QEglPropertiesNS_16PixelFormatMatchE @ 11981 NONAME
- _ZN4QEgl12hasExtensionEPKc @ 11982 NONAME
- _ZN4QEgl12nativePixmapEP7QPixmap @ 11983 NONAME
- _ZN4QEgl12nativeWindowEP7QWidget @ 11984 NONAME
- _ZN4QEgl13createSurfaceEP12QPaintDeviceiPK14QEglProperties @ 11985 NONAME
- _ZN4QEgl13defaultConfigEiNS_3APIE6QFlagsINS_12ConfigOptionEE @ 11986 NONAME
- _ZN4QEgl13nativeDisplayEv @ 11987 NONAME
- _ZN4QEgl14dumpAllConfigsEv @ 11988 NONAME
- _ZN4QEgl17eglCreateImageKHREiiiiPKi @ 11989 NONAME
- _ZN4QEgl18eglDestroyImageKHREii @ 11990 NONAME
- _ZN4QEgl5errorEv @ 11991 NONAME ABSENT
- _ZN4QEgl7displayEv @ 11992 NONAME
- _ZNK11QEglContext12configAttribEi @ 11993 NONAME
- _ZNK11QEglContext16configPropertiesEv @ 11994 NONAME ABSENT
- _ZNK19QItemSelectionRange7isEmptyEv @ 11995 NONAME
- _ZN13QIconEngineV28iconNameEv @ 11996 NONAME
- _ZN14QWindowSurface23setPartialUpdateSupportEb @ 11997 NONAME
- _ZNK14QWindowSurface23hasPartialUpdateSupportEv @ 11998 NONAME
- _ZNK5QIcon4nameEv @ 11999 NONAME
- _ZN20QGraphicsViewPrivate12updateRegionERK6QRectFRK10QTransform @ 12000 NONAME
- _ZN12QPixmapCache10allPixmapsEv @ 12001 NONAME
- _ZN12QPixmapCache20flushDetachedPixmapsEv @ 12002 NONAME
- _ZN12QPixmapCache9totalUsedEv @ 12003 NONAME
- _ZN20QGraphicsItemPrivate30updatePaintedViewBoundingRectsEb @ 12004 NONAME
- _ZN20QGraphicsViewPrivate13setUpdateClipEP13QGraphicsItem @ 12005 NONAME
- _ZN23QImageTextureGlyphCache11fillTextureERKN18QTextureGlyphCache5CoordEj @ 12006 NONAME
- _ZN23QImageTextureGlyphCache17createTextureDataEii @ 12007 NONAME
- _ZN23QImageTextureGlyphCache17resizeTextureDataEii @ 12008 NONAME
- _ZNK23QImageTextureGlyphCache11glyphMarginEv @ 12009 NONAME
- _ZNK7QBezier12addToPolygonEP9QPolygonFf @ 12010 NONAME
- _ZNK7QBezier9toPolygonEf @ 12011 NONAME
- _ZTI23QImageTextureGlyphCache @ 12012 NONAME
- _ZTV23QImageTextureGlyphCache @ 12013 NONAME
+ _ZN11QEglContext10clearErrorEv @ 11807 NONAME ABSENT
+ _ZN11QEglContext13nativeDisplayEv @ 11808 NONAME ABSENT
+ _ZN11QEglContext14destroyContextEv @ 11809 NONAME
+ _ZN11QEglContext3dpyE @ 11810 NONAME DATA 4 ABSENT
+ _ZN11QEglContext5errorEv @ 11811 NONAME ABSENT
+ _ZN11QEglContext7displayEv @ 11812 NONAME ABSENT
+ _ZN11QFontEngine16getGlyphBearingsEjPfS0_ @ 11813 NONAME
+ _ZN12QLineControl17updateDisplayTextEb @ 11814 NONAME
+ _ZN13QFontDatabase25removeAllApplicationFontsEv @ 11815 NONAME
+ _ZN14QWidgetPrivate11inTabWidgetEP7QWidget @ 11816 NONAME
+ _ZN14QWidgetPrivate17canKeypadNavigateEN2Qt11OrientationE @ 11817 NONAME
+ _ZN20QGraphicsItemPrivate14setFocusHelperEN2Qt11FocusReasonEbb @ 11818 NONAME
+ _ZN20QGraphicsItemPrivate16clearFocusHelperEb @ 11819 NONAME
+ _ZN24QImagePixmapCleanupHooks13isImageCachedERK6QImage @ 11820 NONAME
+ _ZN24QImagePixmapCleanupHooks14isPixmapCachedERK7QPixmap @ 11821 NONAME
+ _Z14qt_draw_glyphsP8QPainterPKjPK7QPointFi @ 11822 NONAME
+ _ZN10QZipReader5closeEv @ 11823 NONAME
+ _ZN10QZipReader8FileInfoC1ERKS0_ @ 11824 NONAME
+ _ZN10QZipReader8FileInfoC1Ev @ 11825 NONAME
+ _ZN10QZipReader8FileInfoC2ERKS0_ @ 11826 NONAME
+ _ZN10QZipReader8FileInfoC2Ev @ 11827 NONAME
+ _ZN10QZipReader8FileInfoD1Ev @ 11828 NONAME
+ _ZN10QZipReader8FileInfoD2Ev @ 11829 NONAME
+ _ZN10QZipReader8FileInfoaSERKS0_ @ 11830 NONAME
+ _ZN10QZipReaderC1EP9QIODevice @ 11831 NONAME
+ _ZN10QZipReaderC1ERK7QString6QFlagsIN9QIODevice12OpenModeFlagEE @ 11832 NONAME
+ _ZN10QZipReaderC2EP9QIODevice @ 11833 NONAME
+ _ZN10QZipReaderC2ERK7QString6QFlagsIN9QIODevice12OpenModeFlagEE @ 11834 NONAME
+ _ZN10QZipReaderD1Ev @ 11835 NONAME
+ _ZN10QZipReaderD2Ev @ 11836 NONAME
+ _ZN11QStaticText12setTextWidthEf @ 11837 NONAME
+ _ZN11QStaticText13setTextFormatEN2Qt10TextFormatE @ 11838 NONAME
+ _ZN11QStaticText18setPerformanceHintENS_15PerformanceHintE @ 11839 NONAME
+ _ZN11QStaticText6detachEv @ 11840 NONAME
+ _ZN11QStaticText7prepareERK10QTransformRK5QFont @ 11841 NONAME
+ _ZN11QStaticText7setTextERK7QString @ 11842 NONAME
+ _ZN11QStaticTextC1ERK7QString @ 11843 NONAME
+ _ZN11QStaticTextC1ERKS_ @ 11844 NONAME
+ _ZN11QStaticTextC1Ev @ 11845 NONAME
+ _ZN11QStaticTextC2ERK7QString @ 11846 NONAME
+ _ZN11QStaticTextC2ERKS_ @ 11847 NONAME
+ _ZN11QStaticTextC2Ev @ 11848 NONAME
+ _ZN11QStaticTextD1Ev @ 11849 NONAME
+ _ZN11QStaticTextD2Ev @ 11850 NONAME
+ _ZN11QStaticTextaSERKS_ @ 11851 NONAME
+ _ZN12QKeySequence6assignERK7QStringNS_14SequenceFormatE @ 11852 NONAME
+ _ZN12QKeySequenceC1ERK7QStringNS_14SequenceFormatE @ 11853 NONAME
+ _ZN12QKeySequenceC2ERK7QStringNS_14SequenceFormatE @ 11854 NONAME
+ _ZN12QLineControl5pasteEN10QClipboard4ModeE @ 11855 NONAME
+ _ZN12QPixmapCache10allPixmapsEv @ 11856 NONAME
+ _ZN12QPixmapCache20flushDetachedPixmapsEv @ 11857 NONAME
+ _ZN12QPixmapCache9totalUsedEv @ 11858 NONAME
+ _ZN12QTextControl5pasteEN10QClipboard4ModeE @ 11859 NONAME
+ _ZN13QGraphicsItem16updateMicroFocusEv @ 11860 NONAME
+ _ZN13QIconEngineV28iconNameEv @ 11861 NONAME
+ _ZN13QTextDocument19clearUndoRedoStacksENS_6StacksE @ 11862 NONAME
+ _ZN14QEglProperties13setDeviceTypeEi @ 11863 NONAME
+ _ZN14QPaintEngineEx19drawPixmapFragmentsEPKN8QPainter14PixmapFragmentEiRK7QPixmap6QFlagsINS0_18PixmapFragmentHintEE @ 11864 NONAME
+ _ZN14QWidgetPrivate6renderEP12QPaintDeviceRK6QPointRK7QRegion6QFlagsIN7QWidget10RenderFlagEEb @ 11865 NONAME
+ _ZN14QWindowSurface23setPartialUpdateSupportEb @ 11866 NONAME
+ _ZN15QGraphicsObject12widthChangedEv @ 11867 NONAME
+ _ZN15QGraphicsObject13heightChangedEv @ 11868 NONAME
+ _ZN15QGraphicsObject15childrenChangedEv @ 11869 NONAME
+ _ZN15QGraphicsObject16updateMicroFocusEv @ 11870 NONAME
+ _ZN15QGraphicsWidget13layoutChangedEv @ 11871 NONAME
+ _ZN15QGraphicsWidget15geometryChangedEv @ 11872 NONAME
+ _ZN15QGraphicsWidget21setAutoFillBackgroundEb @ 11873 NONAME
+ _ZN15QSplitterHandle11resizeEventEP12QResizeEvent @ 11874 NONAME
+ _ZN16QFileSystemModel15directoryLoadedERK7QString @ 11875 NONAME
+ _ZN16QPainterReplayer15processCommandsERK12QPaintBufferP8QPainterii @ 11876 NONAME
+ _ZN18QTextureGlyphCache8populateEP11QFontEngineiPKjPK11QFixedPoint @ 11877 NONAME
+ _ZN19QApplicationPrivate15getPixmapCursorEN2Qt11CursorShapeE @ 11878 NONAME
+ _ZN20QGraphicsItemPrivate10resetWidthEv @ 11879 NONAME
+ _ZN20QGraphicsItemPrivate11children_atEP24QDeclarativeListPropertyI15QGraphicsObjectEi @ 11880 NONAME
+ _ZN20QGraphicsItemPrivate11resetHeightEv @ 11881 NONAME
+ _ZN20QGraphicsItemPrivate12childrenListEv @ 11882 NONAME
+ _ZN20QGraphicsItemPrivate14children_countEP24QDeclarativeListPropertyI15QGraphicsObjectE @ 11883 NONAME
+ _ZN20QGraphicsItemPrivate15children_appendEP24QDeclarativeListPropertyI15QGraphicsObjectEPS1_ @ 11884 NONAME
+ _ZN20QGraphicsItemPrivate24prependGraphicsTransformEP18QGraphicsTransform @ 11885 NONAME
+ _ZN20QGraphicsItemPrivate30updatePaintedViewBoundingRectsEb @ 11886 NONAME
+ _ZN20QGraphicsItemPrivate8setWidthEf @ 11887 NONAME
+ _ZN20QGraphicsItemPrivate9setHeightEf @ 11888 NONAME
+ _ZN20QGraphicsViewPrivate10centerViewEN13QGraphicsView14ViewportAnchorE @ 11889 NONAME
+ _ZN20QGraphicsViewPrivate10updateRectERK5QRect @ 11890 NONAME
+ _ZN20QGraphicsViewPrivate12updateRegionERK6QRectFRK10QTransform @ 11891 NONAME
+ _ZN20QGraphicsViewPrivate12updateScrollEv @ 11892 NONAME
+ _ZN20QGraphicsViewPrivate13setUpdateClipEP13QGraphicsItem @ 11893 NONAME
+ _ZN20QGraphicsViewPrivate15storeMouseEventEP11QMouseEvent @ 11894 NONAME
+ _ZN20QGraphicsViewPrivate18storeDragDropEventEPK27QGraphicsSceneDragDropEvent @ 11895 NONAME
+ _ZN20QGraphicsViewPrivate19translateTouchEventEPS_P11QTouchEvent @ 11896 NONAME
+ _ZN20QGraphicsViewPrivate20_q_setViewportCursorERK7QCursor @ 11897 NONAME
+ _ZN20QGraphicsViewPrivate20replayLastMouseEventEv @ 11898 NONAME
+ _ZN20QGraphicsViewPrivate21freeStyleOptionsArrayEP24QStyleOptionGraphicsItem @ 11899 NONAME
+ _ZN20QGraphicsViewPrivate21mouseMoveEventHandlerEP11QMouseEvent @ 11900 NONAME
+ _ZN20QGraphicsViewPrivate21processPendingUpdatesEv @ 11901 NONAME
+ _ZN20QGraphicsViewPrivate21updateLastCenterPointEv @ 11902 NONAME
+ _ZN20QGraphicsViewPrivate22_q_unsetViewportCursorEv @ 11903 NONAME
+ _ZN20QGraphicsViewPrivate22allocStyleOptionsArrayEi @ 11904 NONAME
+ _ZN20QGraphicsViewPrivate22recalculateContentSizeEv @ 11905 NONAME
+ _ZN20QGraphicsViewPrivate26populateSceneDragDropEventEP27QGraphicsSceneDragDropEventP10QDropEvent @ 11906 NONAME
+ _ZN20QGraphicsViewPrivate28updateInputMethodSensitivityEv @ 11907 NONAME
+ _ZN20QGraphicsViewPrivateC1Ev @ 11908 NONAME
+ _ZN20QGraphicsViewPrivateC2Ev @ 11909 NONAME
+ _ZN23QImageTextureGlyphCache11fillTextureERKN18QTextureGlyphCache5CoordEj @ 11910 NONAME
+ _ZN23QImageTextureGlyphCache17createTextureDataEii @ 11911 NONAME
+ _ZN23QImageTextureGlyphCache17resizeTextureDataEii @ 11912 NONAME
+ _ZN26QAbstractScrollAreaPrivate14layoutChildrenEv @ 11913 NONAME
+ _ZN26QAbstractScrollAreaPrivate16replaceScrollBarEP10QScrollBarN2Qt11OrientationE @ 11914 NONAME
+ _ZN26QAbstractScrollAreaPrivate23_q_showOrHideScrollBarsEv @ 11915 NONAME
+ _ZN26QAbstractScrollAreaPrivate4initEv @ 11916 NONAME
+ _ZN26QAbstractScrollAreaPrivate9_q_hslideEi @ 11917 NONAME
+ _ZN26QAbstractScrollAreaPrivate9_q_vslideEi @ 11918 NONAME
+ _ZN26QAbstractScrollAreaPrivateC1Ev @ 11919 NONAME
+ _ZN26QAbstractScrollAreaPrivateC2Ev @ 11920 NONAME
+ _ZN4QEgl10extensionsEv @ 11921 NONAME
+ _ZN4QEgl11errorStringEi @ 11922 NONAME
+ _ZN4QEgl12chooseConfigEPK14QEglPropertiesNS_16PixelFormatMatchE @ 11923 NONAME
+ _ZN4QEgl12hasExtensionEPKc @ 11924 NONAME
+ _ZN4QEgl12nativePixmapEP7QPixmap @ 11925 NONAME
+ _ZN4QEgl12nativeWindowEP7QWidget @ 11926 NONAME
+ _ZN4QEgl13createSurfaceEP12QPaintDeviceiPK14QEglProperties @ 11927 NONAME
+ _ZN4QEgl13defaultConfigEiNS_3APIE6QFlagsINS_12ConfigOptionEE @ 11928 NONAME
+ _ZN4QEgl13nativeDisplayEv @ 11929 NONAME
+ _ZN4QEgl14dumpAllConfigsEv @ 11930 NONAME
+ _ZN4QEgl17eglCreateImageKHREiiiiPKi @ 11931 NONAME
+ _ZN4QEgl18eglDestroyImageKHREii @ 11932 NONAME
+ _ZN4QEgl7displayEv @ 11933 NONAME
+ _ZN6QColor12isValidColorERK7QString @ 11934 NONAME
+ _ZN6QColor18setColorFromStringERK7QString @ 11935 NONAME
+ _ZN6QLabel12setSelectionEii @ 11936 NONAME
+ _ZN7QPixmap16convertFromImageERK6QImage6QFlagsIN2Qt19ImageConversionFlagEE @ 11937 NONAME
+ _ZN7QWizard11pageRemovedEi @ 11938 NONAME
+ _ZN7QWizard13setSideWidgetEP7QWidget @ 11939 NONAME
+ _ZN7QWizard9pageAddedEi @ 11940 NONAME
+ _ZN8QPainter14PixmapFragment6createERK7QPointFRK6QRectFffff @ 11941 NONAME
+ _ZN8QPainter14drawStaticTextERK7QPointFRK11QStaticText @ 11942 NONAME
+ _ZN8QPainter19drawPixmapFragmentsEPKNS_14PixmapFragmentEiRK7QPixmap6QFlagsINS_18PixmapFragmentHintEE @ 11943 NONAME
+ _ZN8QToolBar17visibilityChangedEb @ 11944 NONAME
+ _ZN9QLineEdit18setPlaceholderTextERK7QString @ 11945 NONAME
+ _ZNK10QZipReader10extractAllERK7QString @ 11946 NONAME
+ _ZNK10QZipReader10isReadableEv @ 11947 NONAME
+ _ZNK10QZipReader11entryInfoAtEi @ 11948 NONAME
+ _ZNK10QZipReader12fileInfoListEv @ 11949 NONAME
+ _ZNK10QZipReader5countEv @ 11950 NONAME
+ _ZNK10QZipReader6deviceEv @ 11951 NONAME
+ _ZNK10QZipReader6existsEv @ 11952 NONAME
+ _ZNK10QZipReader6statusEv @ 11953 NONAME
+ _ZNK10QZipReader8FileInfo7isValidEv @ 11954 NONAME
+ _ZNK10QZipReader8fileDataERK7QString @ 11955 NONAME
+ _ZNK11QEglContext12configAttribEi @ 11956 NONAME
+ _ZNK11QStaticText10textFormatEv @ 11957 NONAME
+ _ZNK11QStaticText15performanceHintEv @ 11958 NONAME
+ _ZNK11QStaticText4sizeEv @ 11959 NONAME
+ _ZNK11QStaticText4textEv @ 11960 NONAME
+ _ZNK11QStaticText9textWidthEv @ 11961 NONAME
+ _ZNK11QStaticTexteqERKS_ @ 11962 NONAME
+ _ZNK11QStaticTextneERKS_ @ 11963 NONAME
+ _ZNK11QTextCursor15positionInBlockEv @ 11964 NONAME
+ _ZNK12QPaintBuffer13frameEndIndexEi @ 11965 NONAME
+ _ZNK12QPaintBuffer15frameStartIndexEi @ 11966 NONAME
+ _ZNK12QPaintBuffer15processCommandsEP8QPainterii @ 11967 NONAME
+ _ZNK12QPaintBuffer18commandDescriptionEi @ 11968 NONAME
+ _ZNK13QIntValidator5fixupER7QString @ 11969 NONAME
+ _ZNK14QPlainTextEdit8anchorAtERK6QPoint @ 11970 NONAME
+ _ZNK14QWindowSurface23hasPartialUpdateSupportEv @ 11971 NONAME
+ _ZNK15QGraphicsWidget18autoFillBackgroundEv @ 11972 NONAME
+ _ZNK19QItemSelectionRange7isEmptyEv @ 11973 NONAME
+ _ZNK20QGraphicsItemPrivate5widthEv @ 11974 NONAME
+ _ZNK20QGraphicsItemPrivate6heightEv @ 11975 NONAME
+ _ZNK20QGraphicsViewPrivate10mapToSceneERK6QRectF @ 11976 NONAME
+ _ZNK20QGraphicsViewPrivate10mapToSceneERK7QPointF @ 11977 NONAME
+ _ZNK20QGraphicsViewPrivate13mapToViewRectEPK13QGraphicsItemRK6QRectF @ 11978 NONAME
+ _ZNK20QGraphicsViewPrivate14mapRectToSceneERK5QRect @ 11979 NONAME
+ _ZNK20QGraphicsViewPrivate14verticalScrollEv @ 11980 NONAME
+ _ZNK20QGraphicsViewPrivate15mapToViewRegionEPK13QGraphicsItemRK6QRectF @ 11981 NONAME
+ _ZNK20QGraphicsViewPrivate16horizontalScrollEv @ 11982 NONAME
+ _ZNK20QGraphicsViewPrivate16mapRectFromSceneERK6QRectF @ 11983 NONAME
+ _ZNK20QGraphicsViewPrivate16rubberBandRegionEPK7QWidgetRK5QRect @ 11984 NONAME
+ _ZNK20QGraphicsViewPrivate9findItemsERK7QRegionPbRK10QTransform @ 11985 NONAME
+ _ZNK23QImageTextureGlyphCache11glyphMarginEv @ 11986 NONAME
+ _ZNK26QAbstractScrollAreaPrivate14contentsOffsetEv @ 11987 NONAME
+ _ZNK5QIcon4nameEv @ 11988 NONAME
+ _ZNK6QImage13bitPlaneCountEv @ 11989 NONAME
+ _ZNK6QImage13constScanLineEi @ 11990 NONAME
+ _ZNK6QImage9constBitsEv @ 11991 NONAME
+ _ZNK6QLabel12selectedTextEv @ 11992 NONAME
+ _ZNK6QLabel14selectionStartEv @ 11993 NONAME
+ _ZNK6QLabel15hasSelectedTextEv @ 11994 NONAME
+ _ZNK7QBezier11getSubRangeEff @ 11995 NONAME
+ _ZNK7QBezier12addToPolygonEP9QPolygonFf @ 11996 NONAME
+ _ZNK7QBezier5mapByERK10QTransform @ 11997 NONAME
+ _ZNK7QBezier9toPolygonEf @ 11998 NONAME
+ _ZNK7QWizard10sideWidgetEv @ 11999 NONAME
+ _ZNK9QLineEdit15placeholderTextEv @ 12000 NONAME
+ _ZNK9QTextLine17horizontalAdvanceEv @ 12001 NONAME
+ _ZTI20QGraphicsViewPrivate @ 12002 NONAME
+ _ZTI23QImageTextureGlyphCache @ 12003 NONAME
+ _ZTI26QAbstractScrollAreaPrivate @ 12004 NONAME
+ _ZTV20QGraphicsViewPrivate @ 12005 NONAME
+ _ZTV23QImageTextureGlyphCache @ 12006 NONAME
+ _ZTV26QAbstractScrollAreaPrivate @ 12007 NONAME
diff --git a/src/s60installs/eabi/QtNetworku.def b/src/s60installs/eabi/QtNetworku.def
index 87e0805..3cc3644 100644
--- a/src/s60installs/eabi/QtNetworku.def
+++ b/src/s60installs/eabi/QtNetworku.def
@@ -993,179 +993,175 @@ EXPORTS
_ZN10QSslSocket15setSocketOptionEN15QAbstractSocket12SocketOptionERK8QVariant @ 992 NONAME
_ZN15QNetworkRequest20setOriginatingObjectEP7QObject @ 993 NONAME
_ZNK15QNetworkRequest17originatingObjectEv @ 994 NONAME
- _Z35qNetworkConfigurationManagerPrivatev @ 995 NONAME
- _ZN13QBearerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 996 NONAME
- _ZN13QBearerEngine11qt_metacastEPKc @ 997 NONAME
- _ZN13QBearerEngine15updateCompletedEv @ 998 NONAME
- _ZN13QBearerEngine16staticMetaObjectE @ 999 NONAME DATA 16
- _ZN13QBearerEngine18configurationAddedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1000 NONAME
- _ZN13QBearerEngine19getStaticMetaObjectEv @ 1001 NONAME
- _ZN13QBearerEngine20configurationChangedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1002 NONAME
- _ZN13QBearerEngine20configurationRemovedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1003 NONAME
- _ZN13QBearerEngineC2EP7QObject @ 1004 NONAME
- _ZN13QBearerEngineD0Ev @ 1005 NONAME
- _ZN13QBearerEngineD1Ev @ 1006 NONAME
- _ZN13QBearerEngineD2Ev @ 1007 NONAME
- _ZN15QNetworkRequest11setPriorityENS_8PriorityE @ 1008 NONAME
- _ZN15QNetworkSession11qt_metacallEN11QMetaObject4CallEiPPv @ 1009 NONAME
- _ZN15QNetworkSession11qt_metacastEPKc @ 1010 NONAME
- _ZN15QNetworkSession12stateChangedENS_5StateE @ 1011 NONAME
- _ZN15QNetworkSession13connectNotifyEPKc @ 1012 NONAME
- _ZN15QNetworkSession13waitForOpenedEi @ 1013 NONAME
- _ZN15QNetworkSession16disconnectNotifyEPKc @ 1014 NONAME
- _ZN15QNetworkSession16staticMetaObjectE @ 1015 NONAME DATA 16
- _ZN15QNetworkSession18setSessionPropertyERK7QStringRK8QVariant @ 1016 NONAME
- _ZN15QNetworkSession19getStaticMetaObjectEv @ 1017 NONAME
- _ZN15QNetworkSession25newConfigurationActivatedEv @ 1018 NONAME
- _ZN15QNetworkSession29preferredConfigurationChangedERK21QNetworkConfigurationb @ 1019 NONAME
- _ZN15QNetworkSession4openEv @ 1020 NONAME
- _ZN15QNetworkSession4stopEv @ 1021 NONAME
- _ZN15QNetworkSession5closeEv @ 1022 NONAME
- _ZN15QNetworkSession5errorENS_12SessionErrorE @ 1023 NONAME
- _ZN15QNetworkSession6acceptEv @ 1024 NONAME
- _ZN15QNetworkSession6closedEv @ 1025 NONAME
- _ZN15QNetworkSession6ignoreEv @ 1026 NONAME
- _ZN15QNetworkSession6openedEv @ 1027 NONAME
- _ZN15QNetworkSession6rejectEv @ 1028 NONAME
- _ZN15QNetworkSession7migrateEv @ 1029 NONAME
- _ZN15QNetworkSessionC1ERK21QNetworkConfigurationP7QObject @ 1030 NONAME
- _ZN15QNetworkSessionC2ERK21QNetworkConfigurationP7QObject @ 1031 NONAME
- _ZN15QNetworkSessionD0Ev @ 1032 NONAME
- _ZN15QNetworkSessionD1Ev @ 1033 NONAME
- _ZN15QNetworkSessionD2Ev @ 1034 NONAME
- _ZN19QBearerEnginePlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 1035 NONAME
- _ZN19QBearerEnginePlugin11qt_metacastEPKc @ 1036 NONAME
- _ZN19QBearerEnginePlugin16staticMetaObjectE @ 1037 NONAME DATA 16
- _ZN19QBearerEnginePlugin19getStaticMetaObjectEv @ 1038 NONAME
- _ZN19QBearerEnginePluginC2EP7QObject @ 1039 NONAME
- _ZN19QBearerEnginePluginD0Ev @ 1040 NONAME
- _ZN19QBearerEnginePluginD1Ev @ 1041 NONAME
- _ZN19QBearerEnginePluginD2Ev @ 1042 NONAME
- _ZN21QNetworkAccessManager16setConfigurationERK21QNetworkConfiguration @ 1043 NONAME
- _ZN21QNetworkAccessManager17sendCustomRequestERK15QNetworkRequestRK10QByteArrayP9QIODevice @ 1044 NONAME
- _ZN21QNetworkAccessManager20networkAccessChangedEb @ 1045 NONAME ABSENT
- _ZN21QNetworkAccessManager20networkSessionOnlineEv @ 1046 NONAME ABSENT
- _ZN21QNetworkAccessManager23setNetworkAccessEnabledEb @ 1047 NONAME ABSENT
- _ZN21QNetworkConfigurationC1ERKS_ @ 1048 NONAME
- _ZN21QNetworkConfigurationC1Ev @ 1049 NONAME
- _ZN21QNetworkConfigurationC2ERKS_ @ 1050 NONAME
- _ZN21QNetworkConfigurationC2Ev @ 1051 NONAME
- _ZN21QNetworkConfigurationD1Ev @ 1052 NONAME
- _ZN21QNetworkConfigurationD2Ev @ 1053 NONAME
- _ZN21QNetworkConfigurationaSERKS_ @ 1054 NONAME
- _ZN22QNetworkSessionPrivate11qt_metacallEN11QMetaObject4CallEiPPv @ 1055 NONAME
- _ZN22QNetworkSessionPrivate11qt_metacastEPKc @ 1056 NONAME
- _ZN22QNetworkSessionPrivate12stateChangedEN15QNetworkSession5StateE @ 1057 NONAME
- _ZN22QNetworkSessionPrivate16staticMetaObjectE @ 1058 NONAME DATA 16
- _ZN22QNetworkSessionPrivate19getStaticMetaObjectEv @ 1059 NONAME
- _ZN22QNetworkSessionPrivate25newConfigurationActivatedEv @ 1060 NONAME
- _ZN22QNetworkSessionPrivate25quitPendingWaitsForOpenedEv @ 1061 NONAME
- _ZN22QNetworkSessionPrivate29preferredConfigurationChangedERK21QNetworkConfigurationb @ 1062 NONAME
- _ZN22QNetworkSessionPrivate5errorEN15QNetworkSession12SessionErrorE @ 1063 NONAME
- _ZN22QNetworkSessionPrivate6closedEv @ 1064 NONAME
- _ZN28QNetworkConfigurationManager11qt_metacallEN11QMetaObject4CallEiPPv @ 1065 NONAME
- _ZN28QNetworkConfigurationManager11qt_metacastEPKc @ 1066 NONAME
- _ZN28QNetworkConfigurationManager15updateCompletedEv @ 1067 NONAME
- _ZN28QNetworkConfigurationManager16staticMetaObjectE @ 1068 NONAME DATA 16
- _ZN28QNetworkConfigurationManager18configurationAddedERK21QNetworkConfiguration @ 1069 NONAME
- _ZN28QNetworkConfigurationManager18onlineStateChangedEb @ 1070 NONAME
- _ZN28QNetworkConfigurationManager19getStaticMetaObjectEv @ 1071 NONAME
- _ZN28QNetworkConfigurationManager20configurationChangedERK21QNetworkConfiguration @ 1072 NONAME
- _ZN28QNetworkConfigurationManager20configurationRemovedERK21QNetworkConfiguration @ 1073 NONAME
- _ZN28QNetworkConfigurationManager20updateConfigurationsEv @ 1074 NONAME
- _ZN28QNetworkConfigurationManagerC1EP7QObject @ 1075 NONAME
- _ZN28QNetworkConfigurationManagerC2EP7QObject @ 1076 NONAME
- _ZN28QNetworkConfigurationManagerD0Ev @ 1077 NONAME
- _ZN28QNetworkConfigurationManagerD1Ev @ 1078 NONAME
- _ZN28QNetworkConfigurationManagerD2Ev @ 1079 NONAME
- _ZN35QNetworkConfigurationManagerPrivate11qt_metacallEN11QMetaObject4CallEiPPv @ 1080 NONAME
- _ZN35QNetworkConfigurationManagerPrivate11qt_metacastEPKc @ 1081 NONAME
- _ZN35QNetworkConfigurationManagerPrivate16staticMetaObjectE @ 1082 NONAME DATA 16
- _ZN35QNetworkConfigurationManagerPrivate18configurationAddedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1083 NONAME
- _ZN35QNetworkConfigurationManagerPrivate18configurationAddedERK21QNetworkConfiguration @ 1084 NONAME
- _ZN35QNetworkConfigurationManagerPrivate18onlineStateChangedEb @ 1085 NONAME
- _ZN35QNetworkConfigurationManagerPrivate19getStaticMetaObjectEv @ 1086 NONAME
- _ZN35QNetworkConfigurationManagerPrivate20configurationChangedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1087 NONAME
- _ZN35QNetworkConfigurationManagerPrivate20configurationChangedERK21QNetworkConfiguration @ 1088 NONAME
- _ZN35QNetworkConfigurationManagerPrivate20configurationRemovedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1089 NONAME
- _ZN35QNetworkConfigurationManagerPrivate20configurationRemovedERK21QNetworkConfiguration @ 1090 NONAME
- _ZN35QNetworkConfigurationManagerPrivate20updateConfigurationsEv @ 1091 NONAME
- _ZN35QNetworkConfigurationManagerPrivate27configurationUpdateCompleteEv @ 1092 NONAME
- _ZN35QNetworkConfigurationManagerPrivate31performAsyncConfigurationUpdateEv @ 1093 NONAME
- _ZN35QNetworkConfigurationManagerPrivate5abortEv @ 1094 NONAME
- _ZN35QNetworkConfigurationManagerPrivate7enginesEv @ 1095 NONAME
- _ZN35QNetworkConfigurationManagerPrivateC1Ev @ 1096 NONAME
- _ZN35QNetworkConfigurationManagerPrivateC2Ev @ 1097 NONAME
- _ZN35QNetworkConfigurationManagerPrivateD0Ev @ 1098 NONAME
- _ZN35QNetworkConfigurationManagerPrivateD1Ev @ 1099 NONAME
- _ZN35QNetworkConfigurationManagerPrivateD2Ev @ 1100 NONAME
- _ZNK13QBearerEngine10metaObjectEv @ 1101 NONAME
- _ZNK13QNetworkReply14rawHeaderPairsEv @ 1102 NONAME
- _ZNK15QNetworkRequest8priorityEv @ 1103 NONAME
- _ZNK15QNetworkSession10activeTimeEv @ 1104 NONAME
- _ZNK15QNetworkSession10metaObjectEv @ 1105 NONAME
- _ZNK15QNetworkSession11errorStringEv @ 1106 NONAME
- _ZNK15QNetworkSession12bytesWrittenEv @ 1107 NONAME
- _ZNK15QNetworkSession13bytesReceivedEv @ 1108 NONAME
- _ZNK15QNetworkSession13configurationEv @ 1109 NONAME
- _ZNK15QNetworkSession15sessionPropertyERK7QString @ 1110 NONAME
- _ZNK15QNetworkSession5errorEv @ 1111 NONAME
- _ZNK15QNetworkSession5stateEv @ 1112 NONAME
- _ZNK15QNetworkSession6isOpenEv @ 1113 NONAME
- _ZNK15QNetworkSession9interfaceEv @ 1114 NONAME
- _ZNK19QBearerEnginePlugin10metaObjectEv @ 1115 NONAME
- _ZNK21QNetworkAccessManager13configurationEv @ 1116 NONAME
- _ZNK21QNetworkAccessManager19activeConfigurationEv @ 1117 NONAME
- _ZNK21QNetworkAccessManager20networkAccessEnabledEv @ 1118 NONAME ABSENT
- _ZNK21QNetworkConfiguration10bearerNameEv @ 1119 NONAME
- _ZNK21QNetworkConfiguration10identifierEv @ 1120 NONAME
- _ZNK21QNetworkConfiguration18isRoamingAvailableEv @ 1121 NONAME
- _ZNK21QNetworkConfiguration4nameEv @ 1122 NONAME
- _ZNK21QNetworkConfiguration4typeEv @ 1123 NONAME
- _ZNK21QNetworkConfiguration5stateEv @ 1124 NONAME
- _ZNK21QNetworkConfiguration7isValidEv @ 1125 NONAME
- _ZNK21QNetworkConfiguration7purposeEv @ 1126 NONAME
- _ZNK21QNetworkConfiguration8childrenEv @ 1127 NONAME
- _ZNK21QNetworkConfigurationeqERKS_ @ 1128 NONAME
- _ZNK22QNetworkSessionPrivate10metaObjectEv @ 1129 NONAME
- _ZNK28QNetworkConfigurationManager10metaObjectEv @ 1130 NONAME
- _ZNK28QNetworkConfigurationManager12capabilitiesEv @ 1131 NONAME
- _ZNK28QNetworkConfigurationManager17allConfigurationsE6QFlagsIN21QNetworkConfiguration9StateFlagEE @ 1132 NONAME
- _ZNK28QNetworkConfigurationManager20defaultConfigurationEv @ 1133 NONAME
- _ZNK28QNetworkConfigurationManager27configurationFromIdentifierERK7QString @ 1134 NONAME
- _ZNK28QNetworkConfigurationManager8isOnlineEv @ 1135 NONAME
- _ZNK35QNetworkConfigurationManagerPrivate10metaObjectEv @ 1136 NONAME
- _ZTI13QBearerEngine @ 1137 NONAME
- _ZTI15QNetworkSession @ 1138 NONAME
- _ZTI19QBearerEnginePlugin @ 1139 NONAME
- _ZTI22QNetworkSessionPrivate @ 1140 NONAME
- _ZTI28QNetworkConfigurationManager @ 1141 NONAME
- _ZTI29QBearerEngineFactoryInterface @ 1142 NONAME
- _ZTI35QNetworkConfigurationManagerPrivate @ 1143 NONAME
- _ZTV13QBearerEngine @ 1144 NONAME
- _ZTV15QNetworkSession @ 1145 NONAME
- _ZTV19QBearerEnginePlugin @ 1146 NONAME
- _ZTV22QNetworkSessionPrivate @ 1147 NONAME
- _ZTV28QNetworkConfigurationManager @ 1148 NONAME
- _ZTV35QNetworkConfigurationManagerPrivate @ 1149 NONAME
- _ZThn8_N19QBearerEnginePluginD0Ev @ 1150 NONAME
- _ZThn8_N19QBearerEnginePluginD1Ev @ 1151 NONAME
- _Z19qt_qhostinfo_lookupRK7QStringP7QObjectPKcPbPi @ 1152 NONAME
- _Z24qt_qhostinfo_clear_cachev @ 1153 NONAME ABSENT
- _ZN21QNetworkAccessManager20setNetworkAccessibleENS_20NetworkAccessibilityE @ 1154 NONAME
- _ZN21QNetworkAccessManager23networkSessionConnectedEv @ 1155 NONAME
- _ZN21QNetworkAccessManager24networkAccessibleChangedENS_20NetworkAccessibilityE @ 1156 NONAME
- _ZN35QNetworkConfigurationManagerPrivate11pollEnginesEv @ 1157 NONAME
- _ZN35QNetworkConfigurationManagerPrivate12startPollingEv @ 1158 NONAME
- _ZN35QNetworkConfigurationManagerPrivate13enablePollingEv @ 1159 NONAME
- _ZN35QNetworkConfigurationManagerPrivate14disablePollingEv @ 1160 NONAME
- _ZN35QNetworkConfigurationManagerPrivate17allConfigurationsE6QFlagsIN21QNetworkConfiguration9StateFlagEE @ 1161 NONAME
- _ZN35QNetworkConfigurationManagerPrivate20defaultConfigurationEv @ 1162 NONAME
- _ZN35QNetworkConfigurationManagerPrivate27configurationFromIdentifierERK7QString @ 1163 NONAME
- _ZN35QNetworkConfigurationManagerPrivate8isOnlineEv @ 1164 NONAME
- _ZNK13QBearerEngine15requiresPollingEv @ 1165 NONAME
- _ZNK13QBearerEngine19configurationsInUseEv @ 1166 NONAME
- _ZNK21QNetworkAccessManager17networkAccessibleEv @ 1167 NONAME
- _ZN35QNetworkConfigurationManagerPrivate12capabilitiesEv @ 1168 NONAME
- _ZN10QTcpServer20addPendingConnectionEP10QTcpSocket @ 1169 NONAME
+ _Z19qt_qhostinfo_lookupRK7QStringP7QObjectPKcPbPi @ 995 NONAME
+ _Z24qt_qhostinfo_clear_cachev @ 996 NONAME ABSENT
+ _Z35qNetworkConfigurationManagerPrivatev @ 997 NONAME
+ _ZN10QTcpServer20addPendingConnectionEP10QTcpSocket @ 998 NONAME
+ _ZN13QBearerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 999 NONAME
+ _ZN13QBearerEngine11qt_metacastEPKc @ 1000 NONAME
+ _ZN13QBearerEngine15updateCompletedEv @ 1001 NONAME
+ _ZN13QBearerEngine16staticMetaObjectE @ 1002 NONAME DATA 16
+ _ZN13QBearerEngine18configurationAddedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1003 NONAME
+ _ZN13QBearerEngine19getStaticMetaObjectEv @ 1004 NONAME
+ _ZN13QBearerEngine20configurationChangedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1005 NONAME
+ _ZN13QBearerEngine20configurationRemovedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1006 NONAME
+ _ZN13QBearerEngineC2EP7QObject @ 1007 NONAME
+ _ZN13QBearerEngineD0Ev @ 1008 NONAME
+ _ZN13QBearerEngineD1Ev @ 1009 NONAME
+ _ZN13QBearerEngineD2Ev @ 1010 NONAME
+ _ZN15QNetworkRequest11setPriorityENS_8PriorityE @ 1011 NONAME
+ _ZN15QNetworkSession11qt_metacallEN11QMetaObject4CallEiPPv @ 1012 NONAME
+ _ZN15QNetworkSession11qt_metacastEPKc @ 1013 NONAME
+ _ZN15QNetworkSession12stateChangedENS_5StateE @ 1014 NONAME
+ _ZN15QNetworkSession13connectNotifyEPKc @ 1015 NONAME
+ _ZN15QNetworkSession13waitForOpenedEi @ 1016 NONAME
+ _ZN15QNetworkSession16disconnectNotifyEPKc @ 1017 NONAME
+ _ZN15QNetworkSession16staticMetaObjectE @ 1018 NONAME DATA 16
+ _ZN15QNetworkSession18setSessionPropertyERK7QStringRK8QVariant @ 1019 NONAME
+ _ZN15QNetworkSession19getStaticMetaObjectEv @ 1020 NONAME
+ _ZN15QNetworkSession25newConfigurationActivatedEv @ 1021 NONAME
+ _ZN15QNetworkSession29preferredConfigurationChangedERK21QNetworkConfigurationb @ 1022 NONAME
+ _ZN15QNetworkSession4openEv @ 1023 NONAME
+ _ZN15QNetworkSession4stopEv @ 1024 NONAME
+ _ZN15QNetworkSession5closeEv @ 1025 NONAME
+ _ZN15QNetworkSession5errorENS_12SessionErrorE @ 1026 NONAME
+ _ZN15QNetworkSession6acceptEv @ 1027 NONAME
+ _ZN15QNetworkSession6closedEv @ 1028 NONAME
+ _ZN15QNetworkSession6ignoreEv @ 1029 NONAME
+ _ZN15QNetworkSession6openedEv @ 1030 NONAME
+ _ZN15QNetworkSession6rejectEv @ 1031 NONAME
+ _ZN15QNetworkSession7migrateEv @ 1032 NONAME
+ _ZN15QNetworkSessionC1ERK21QNetworkConfigurationP7QObject @ 1033 NONAME
+ _ZN15QNetworkSessionC2ERK21QNetworkConfigurationP7QObject @ 1034 NONAME
+ _ZN15QNetworkSessionD0Ev @ 1035 NONAME
+ _ZN15QNetworkSessionD1Ev @ 1036 NONAME
+ _ZN15QNetworkSessionD2Ev @ 1037 NONAME
+ _ZN19QBearerEnginePlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 1038 NONAME
+ _ZN19QBearerEnginePlugin11qt_metacastEPKc @ 1039 NONAME
+ _ZN19QBearerEnginePlugin16staticMetaObjectE @ 1040 NONAME DATA 16
+ _ZN19QBearerEnginePlugin19getStaticMetaObjectEv @ 1041 NONAME
+ _ZN19QBearerEnginePluginC2EP7QObject @ 1042 NONAME
+ _ZN19QBearerEnginePluginD0Ev @ 1043 NONAME
+ _ZN19QBearerEnginePluginD1Ev @ 1044 NONAME
+ _ZN19QBearerEnginePluginD2Ev @ 1045 NONAME
+ _ZN21QNetworkAccessManager16setConfigurationERK21QNetworkConfiguration @ 1046 NONAME
+ _ZN21QNetworkAccessManager17sendCustomRequestERK15QNetworkRequestRK10QByteArrayP9QIODevice @ 1047 NONAME
+ _ZN21QNetworkAccessManager20setNetworkAccessibleENS_20NetworkAccessibilityE @ 1048 NONAME
+ _ZN21QNetworkAccessManager23networkSessionConnectedEv @ 1049 NONAME
+ _ZN21QNetworkAccessManager24networkAccessibleChangedENS_20NetworkAccessibilityE @ 1050 NONAME
+ _ZN21QNetworkConfigurationC1ERKS_ @ 1051 NONAME
+ _ZN21QNetworkConfigurationC1Ev @ 1052 NONAME
+ _ZN21QNetworkConfigurationC2ERKS_ @ 1053 NONAME
+ _ZN21QNetworkConfigurationC2Ev @ 1054 NONAME
+ _ZN21QNetworkConfigurationD1Ev @ 1055 NONAME
+ _ZN21QNetworkConfigurationD2Ev @ 1056 NONAME
+ _ZN21QNetworkConfigurationaSERKS_ @ 1057 NONAME
+ _ZN22QNetworkSessionPrivate11qt_metacallEN11QMetaObject4CallEiPPv @ 1058 NONAME
+ _ZN22QNetworkSessionPrivate11qt_metacastEPKc @ 1059 NONAME
+ _ZN22QNetworkSessionPrivate12stateChangedEN15QNetworkSession5StateE @ 1060 NONAME
+ _ZN22QNetworkSessionPrivate16staticMetaObjectE @ 1061 NONAME DATA 16
+ _ZN22QNetworkSessionPrivate19getStaticMetaObjectEv @ 1062 NONAME
+ _ZN22QNetworkSessionPrivate25newConfigurationActivatedEv @ 1063 NONAME
+ _ZN22QNetworkSessionPrivate25quitPendingWaitsForOpenedEv @ 1064 NONAME
+ _ZN22QNetworkSessionPrivate29preferredConfigurationChangedERK21QNetworkConfigurationb @ 1065 NONAME
+ _ZN22QNetworkSessionPrivate5errorEN15QNetworkSession12SessionErrorE @ 1066 NONAME
+ _ZN22QNetworkSessionPrivate6closedEv @ 1067 NONAME
+ _ZN28QNetworkConfigurationManager11qt_metacallEN11QMetaObject4CallEiPPv @ 1068 NONAME
+ _ZN28QNetworkConfigurationManager11qt_metacastEPKc @ 1069 NONAME
+ _ZN28QNetworkConfigurationManager15updateCompletedEv @ 1070 NONAME
+ _ZN28QNetworkConfigurationManager16staticMetaObjectE @ 1071 NONAME DATA 16
+ _ZN28QNetworkConfigurationManager18configurationAddedERK21QNetworkConfiguration @ 1072 NONAME
+ _ZN28QNetworkConfigurationManager18onlineStateChangedEb @ 1073 NONAME
+ _ZN28QNetworkConfigurationManager19getStaticMetaObjectEv @ 1074 NONAME
+ _ZN28QNetworkConfigurationManager20configurationChangedERK21QNetworkConfiguration @ 1075 NONAME
+ _ZN28QNetworkConfigurationManager20configurationRemovedERK21QNetworkConfiguration @ 1076 NONAME
+ _ZN28QNetworkConfigurationManager20updateConfigurationsEv @ 1077 NONAME
+ _ZN28QNetworkConfigurationManagerC1EP7QObject @ 1078 NONAME
+ _ZN28QNetworkConfigurationManagerC2EP7QObject @ 1079 NONAME
+ _ZN28QNetworkConfigurationManagerD0Ev @ 1080 NONAME
+ _ZN28QNetworkConfigurationManagerD1Ev @ 1081 NONAME
+ _ZN28QNetworkConfigurationManagerD2Ev @ 1082 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate11pollEnginesEv @ 1083 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate11qt_metacallEN11QMetaObject4CallEiPPv @ 1084 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate11qt_metacastEPKc @ 1085 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate12capabilitiesEv @ 1086 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate12startPollingEv @ 1087 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate13enablePollingEv @ 1088 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate14disablePollingEv @ 1089 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate16staticMetaObjectE @ 1090 NONAME DATA 16
+ _ZN35QNetworkConfigurationManagerPrivate17allConfigurationsE6QFlagsIN21QNetworkConfiguration9StateFlagEE @ 1091 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate18configurationAddedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1092 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate18configurationAddedERK21QNetworkConfiguration @ 1093 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate18onlineStateChangedEb @ 1094 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate19getStaticMetaObjectEv @ 1095 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate20configurationChangedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1096 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate20configurationChangedERK21QNetworkConfiguration @ 1097 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate20configurationRemovedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1098 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate20configurationRemovedERK21QNetworkConfiguration @ 1099 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate20defaultConfigurationEv @ 1100 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate20updateConfigurationsEv @ 1101 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate27configurationFromIdentifierERK7QString @ 1102 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate27configurationUpdateCompleteEv @ 1103 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate31performAsyncConfigurationUpdateEv @ 1104 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate5abortEv @ 1105 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate7enginesEv @ 1106 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate8isOnlineEv @ 1107 NONAME
+ _ZN35QNetworkConfigurationManagerPrivateC1Ev @ 1108 NONAME
+ _ZN35QNetworkConfigurationManagerPrivateC2Ev @ 1109 NONAME
+ _ZN35QNetworkConfigurationManagerPrivateD0Ev @ 1110 NONAME
+ _ZN35QNetworkConfigurationManagerPrivateD1Ev @ 1111 NONAME
+ _ZN35QNetworkConfigurationManagerPrivateD2Ev @ 1112 NONAME
+ _ZNK13QBearerEngine10metaObjectEv @ 1113 NONAME
+ _ZNK13QBearerEngine15requiresPollingEv @ 1114 NONAME
+ _ZNK13QBearerEngine19configurationsInUseEv @ 1115 NONAME
+ _ZNK13QNetworkReply14rawHeaderPairsEv @ 1116 NONAME
+ _ZNK15QNetworkRequest8priorityEv @ 1117 NONAME
+ _ZNK15QNetworkSession10activeTimeEv @ 1118 NONAME
+ _ZNK15QNetworkSession10metaObjectEv @ 1119 NONAME
+ _ZNK15QNetworkSession11errorStringEv @ 1120 NONAME
+ _ZNK15QNetworkSession12bytesWrittenEv @ 1121 NONAME
+ _ZNK15QNetworkSession13bytesReceivedEv @ 1122 NONAME
+ _ZNK15QNetworkSession13configurationEv @ 1123 NONAME
+ _ZNK15QNetworkSession15sessionPropertyERK7QString @ 1124 NONAME
+ _ZNK15QNetworkSession5errorEv @ 1125 NONAME
+ _ZNK15QNetworkSession5stateEv @ 1126 NONAME
+ _ZNK15QNetworkSession6isOpenEv @ 1127 NONAME
+ _ZNK15QNetworkSession9interfaceEv @ 1128 NONAME
+ _ZNK19QBearerEnginePlugin10metaObjectEv @ 1129 NONAME
+ _ZNK21QNetworkAccessManager13configurationEv @ 1130 NONAME
+ _ZNK21QNetworkAccessManager17networkAccessibleEv @ 1131 NONAME
+ _ZNK21QNetworkAccessManager19activeConfigurationEv @ 1132 NONAME
+ _ZNK21QNetworkConfiguration10bearerNameEv @ 1133 NONAME
+ _ZNK21QNetworkConfiguration10identifierEv @ 1134 NONAME
+ _ZNK21QNetworkConfiguration18isRoamingAvailableEv @ 1135 NONAME
+ _ZNK21QNetworkConfiguration4nameEv @ 1136 NONAME
+ _ZNK21QNetworkConfiguration4typeEv @ 1137 NONAME
+ _ZNK21QNetworkConfiguration5stateEv @ 1138 NONAME
+ _ZNK21QNetworkConfiguration7isValidEv @ 1139 NONAME
+ _ZNK21QNetworkConfiguration7purposeEv @ 1140 NONAME
+ _ZNK21QNetworkConfiguration8childrenEv @ 1141 NONAME
+ _ZNK21QNetworkConfigurationeqERKS_ @ 1142 NONAME
+ _ZNK22QNetworkSessionPrivate10metaObjectEv @ 1143 NONAME
+ _ZNK28QNetworkConfigurationManager10metaObjectEv @ 1144 NONAME
+ _ZNK28QNetworkConfigurationManager12capabilitiesEv @ 1145 NONAME
+ _ZNK28QNetworkConfigurationManager17allConfigurationsE6QFlagsIN21QNetworkConfiguration9StateFlagEE @ 1146 NONAME
+ _ZNK28QNetworkConfigurationManager20defaultConfigurationEv @ 1147 NONAME
+ _ZNK28QNetworkConfigurationManager27configurationFromIdentifierERK7QString @ 1148 NONAME
+ _ZNK28QNetworkConfigurationManager8isOnlineEv @ 1149 NONAME
+ _ZNK35QNetworkConfigurationManagerPrivate10metaObjectEv @ 1150 NONAME
+ _ZTI13QBearerEngine @ 1151 NONAME
+ _ZTI15QNetworkSession @ 1152 NONAME
+ _ZTI19QBearerEnginePlugin @ 1153 NONAME
+ _ZTI22QNetworkSessionPrivate @ 1154 NONAME
+ _ZTI28QNetworkConfigurationManager @ 1155 NONAME
+ _ZTI29QBearerEngineFactoryInterface @ 1156 NONAME
+ _ZTI35QNetworkConfigurationManagerPrivate @ 1157 NONAME
+ _ZTV13QBearerEngine @ 1158 NONAME
+ _ZTV15QNetworkSession @ 1159 NONAME
+ _ZTV19QBearerEnginePlugin @ 1160 NONAME
+ _ZTV22QNetworkSessionPrivate @ 1161 NONAME
+ _ZTV28QNetworkConfigurationManager @ 1162 NONAME
+ _ZTV35QNetworkConfigurationManagerPrivate @ 1163 NONAME
+ _ZThn8_N19QBearerEnginePluginD0Ev @ 1164 NONAME
+ _ZThn8_N19QBearerEnginePluginD1Ev @ 1165 NONAME
diff --git a/src/s60installs/eabi/QtOpenVGu.def b/src/s60installs/eabi/QtOpenVGu.def
index 04f7876..15fda9a 100644
--- a/src/s60installs/eabi/QtOpenVGu.def
+++ b/src/s60installs/eabi/QtOpenVGu.def
@@ -196,9 +196,9 @@ EXPORTS
_ZN13QVGPixmapData19detachImageFromPoolEv @ 195 NONAME
_ZTI12QVGImagePool @ 196 NONAME
_ZTV12QVGImagePool @ 197 NONAME
- _ZN14QVGPaintEngine16drawCachedGlyphsEiPKjRK5QFontP11QFontEngineRK7QPointF @ 198 NONAME ABSENT
- _ZN14QVGPaintEngine18drawStaticTextItemEP15QStaticTextItem @ 199 NONAME
- _ZN14QVGPaintEngine19drawPixmapFragmentsEPKN8QPainter14PixmapFragmentEiRK7QPixmap6QFlagsINS0_18PixmapFragmentHintEE @ 200 NONAME
- _ZN25QVGEGLWindowSurfaceDirect6scrollEP7QWidgetRK7QRegionii @ 201 NONAME
- _ZNK25QVGEGLWindowSurfaceDirect22supportsStaticContentsEv @ 202 NONAME
+ _ZN25QVGEGLWindowSurfaceDirect6scrollEP7QWidgetRK7QRegionii @ 198 NONAME
+ _ZNK25QVGEGLWindowSurfaceDirect22supportsStaticContentsEv @ 199 NONAME
+ _ZN14QVGPaintEngine16drawCachedGlyphsEiPKjRK5QFontP11QFontEngineRK7QPointFPK11QFixedPoint @ 200 NONAME
+ _ZN14QVGPaintEngine18drawStaticTextItemEP15QStaticTextItem @ 201 NONAME
+ _ZN14QVGPaintEngine19drawPixmapFragmentsEPKN8QPainter14PixmapFragmentEiRK7QPixmap6QFlagsINS0_18PixmapFragmentHintEE @ 202 NONAME
diff --git a/src/script/api/qscriptcontext.cpp b/src/script/api/qscriptcontext.cpp
index 639af80..3f08e74 100644
--- a/src/script/api/qscriptcontext.cpp
+++ b/src/script/api/qscriptcontext.cpp
@@ -742,6 +742,7 @@ void QScriptContext::pushScope(const QScriptValue &object)
*/
QScriptValue QScriptContext::popScope()
{
+ activationObject(); //ensure the creation of the normal scope for native context
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
JSC::ScopeChainNode *scope = frame->scopeChain();
Q_ASSERT(scope != 0);
diff --git a/src/src.pro b/src/src.pro
index 7574796..5436c4a 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -157,24 +157,24 @@ for(subname, SRC_SUBDIRS) {
SUB_TEMPLATE = $$list($$fromfile($$subpro, TEMPLATE))
!isEqual(subname, src_tools_bootstrap):if(isEqual($$SUB_TEMPLATE, lib) | isEqual($$SUB_TEMPLATE, subdirs) | isEqual(subname, src_tools_idc) | isEqual(subname, src_tools_uic3)):!separate_debug_info {
#debug
- eval(debug-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS)
- eval(debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) debug))
+ debug-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS
+ debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) debug)
EXTRA_DEBUG_TARGETS += debug-$${subtarget}
QMAKE_EXTRA_TARGETS += debug-$${subtarget}
#release
- eval(release-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS)
- eval(release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) release))
+ release-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS
+ release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) release)
EXTRA_RELEASE_TARGETS += release-$${subtarget}
QMAKE_EXTRA_TARGETS += release-$${subtarget}
} else { #do not have a real debug target/release
#debug
- eval(debug-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS)
- eval(debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first))
+ debug-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS
+ debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first)
EXTRA_DEBUG_TARGETS += debug-$${subtarget}
QMAKE_EXTRA_TARGETS += debug-$${subtarget}
#release
- eval(release-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS)
- eval(release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first))
+ release-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS
+ release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first)
EXTRA_RELEASE_TARGETS += release-$${subtarget}
QMAKE_EXTRA_TARGETS += release-$${subtarget}
}
diff --git a/src/testlib/qbenchmark.cpp b/src/testlib/qbenchmark.cpp
index 23c5639..c88ecb0 100644
--- a/src/testlib/qbenchmark.cpp
+++ b/src/testlib/qbenchmark.cpp
@@ -159,7 +159,7 @@ void QBenchmarkTestMethodData::setResult(
if (QBenchmarkGlobalData::current->iterationCount != -1)
accepted = true;
- if (QBenchmarkTestMethodData::current->runOnce || !setByMacro) {
+ else if (QBenchmarkTestMethodData::current->runOnce || !setByMacro) {
iterationCount = 1;
accepted = true;
}
diff --git a/src/testlib/qbenchmarkmeasurement.cpp b/src/testlib/qbenchmarkmeasurement.cpp
index c03cbff..0a84792 100644
--- a/src/testlib/qbenchmarkmeasurement.cpp
+++ b/src/testlib/qbenchmarkmeasurement.cpp
@@ -66,7 +66,7 @@ qint64 QBenchmarkTimeMeasurer::stop()
bool QBenchmarkTimeMeasurer::isMeasurementAccepted(qint64 measurement)
{
- return (measurement > 20);
+ return (measurement > 50);
}
int QBenchmarkTimeMeasurer::adjustIterationCount(int suggestion)
@@ -74,6 +74,11 @@ int QBenchmarkTimeMeasurer::adjustIterationCount(int suggestion)
return suggestion;
}
+bool QBenchmarkTimeMeasurer::needsWarmupIteration()
+{
+ return true;
+}
+
int QBenchmarkTimeMeasurer::adjustMedianCount(int)
{
return 1;
diff --git a/src/testlib/qbenchmarkmeasurement_p.h b/src/testlib/qbenchmarkmeasurement_p.h
index 8ad3613..932852c 100644
--- a/src/testlib/qbenchmarkmeasurement_p.h
+++ b/src/testlib/qbenchmarkmeasurement_p.h
@@ -84,6 +84,7 @@ public:
bool isMeasurementAccepted(qint64 measurement);
int adjustIterationCount(int sugestion);
int adjustMedianCount(int suggestion);
+ bool needsWarmupIteration();
QTest::QBenchmarkMetric metricType();
private:
QTime time;
diff --git a/src/tools/tools.pro b/src/tools/tools.pro
index 1ecb944..4736d09 100644
--- a/src/tools/tools.pro
+++ b/src/tools/tools.pro
@@ -45,24 +45,24 @@ EXTRA_RELEASE_TARGETS =
SUB_TEMPLATE = $$list($$fromfile($$subpro, TEMPLATE))
!isEqual(subname, src_tools_bootstrap):if(isEqual($$SUB_TEMPLATE, lib) | isEqual($$SUB_TEMPLATE, subdirs) | isEqual(subname, src_tools_idc) | isEqual(subname, src_tools_uic3)):!separate_debug_info {
#debug
- eval(debug-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS)
- eval(debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) debug))
+ debug-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS
+ debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) debug)
EXTRA_DEBUG_TARGETS += debug-$${subtarget}
QMAKE_EXTRA_TARGETS += debug-$${subtarget}
#release
- eval(release-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS)
- eval(release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) release))
+ release-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS
+ release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) release)
EXTRA_RELEASE_TARGETS += release-$${subtarget}
QMAKE_EXTRA_TARGETS += release-$${subtarget}
} else { #do not have a real debug target/release
#debug
- eval(debug-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS)
- eval(debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first))
+ debug-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS
+ debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first)
EXTRA_DEBUG_TARGETS += debug-$${subtarget}
QMAKE_EXTRA_TARGETS += debug-$${subtarget}
#release
- eval(release-$${subtarget}.depends = $${subdir}\$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS)
- eval(release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first))
+ release-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS
+ release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first)
EXTRA_RELEASE_TARGETS += release-$${subtarget}
QMAKE_EXTRA_TARGETS += release-$${subtarget}
}