summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTom Cooksey <thomas.cooksey@nokia.com>2009-09-17 15:25:08 (GMT)
committerTom Cooksey <thomas.cooksey@nokia.com>2009-09-17 15:25:08 (GMT)
commit1d05c5221ba8ad3f5d3d36ba2025ea45bc3afe88 (patch)
tree6cba08738ce9fcdb0d1d8d7417b336a8521f36a1 /src
parentb7923d48fb6d755d4563eeed0e7f3cbc774d69d5 (diff)
parent0db5ca5c733422b28524791b4f292227a61090d2 (diff)
downloadQt-1d05c5221ba8ad3f5d3d36ba2025ea45bc3afe88.zip
Qt-1d05c5221ba8ad3f5d3d36ba2025ea45bc3afe88.tar.gz
Qt-1d05c5221ba8ad3f5d3d36ba2025ea45bc3afe88.tar.bz2
Merge branch '4.6' of scm.dev.nokia.troll.no:qt/qt into 4.6
Conflicts: tests/auto/qtwidgets/tst_qtwidgets.cpp
Diffstat (limited to 'src')
-rw-r--r--src/corelib/global/qfeatures.h10
-rw-r--r--src/corelib/global/qglobal.cpp2
-rw-r--r--src/corelib/tools/qregexp.cpp95
-rw-r--r--src/corelib/tools/qregexp.h8
-rw-r--r--src/gui/embedded/directfb.pri2
-rw-r--r--src/gui/graphicsview/qgraphicsanchorlayout.cpp18
-rw-r--r--src/gui/graphicsview/qgraphicsanchorlayout.h1
-rw-r--r--src/gui/graphicsview/qgraphicsanchorlayout_p.cpp396
-rw-r--r--src/gui/graphicsview/qgraphicsanchorlayout_p.h22
-rw-r--r--src/gui/graphicsview/qsimplex_p.cpp9
-rw-r--r--src/gui/graphicsview/qsimplex_p.h2
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp12
-rw-r--r--src/gui/itemviews/qabstractitemview_p.h1
-rw-r--r--src/gui/itemviews/qtableview.cpp28
-rw-r--r--src/gui/kernel/qapplication_s60.cpp15
-rw-r--r--src/gui/kernel/qapplication_win.cpp2
-rw-r--r--src/gui/kernel/qcursor_s60.cpp10
-rw-r--r--src/gui/kernel/qdnd_s60.cpp10
-rw-r--r--src/gui/kernel/qt_s60_p.h2
-rw-r--r--src/gui/kernel/qtooltip.cpp6
-rw-r--r--src/gui/kernel/qwidget_s60.cpp3
-rw-r--r--src/gui/painting/painting.pri1
-rw-r--r--src/gui/text/qfontdatabase_mac.cpp31
-rw-r--r--src/gui/text/qfontengine.cpp77
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager.cpp12
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager_p.h8
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadersource_p.h33
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp136
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h2
-rw-r--r--src/opengl/qgl.cpp4
-rw-r--r--src/opengl/qglextensions.cpp3
-rw-r--r--src/opengl/qglextensions_p.h9
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp51
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.h4
-rw-r--r--src/s60installs/eabi/QtCoreu.def99
-rw-r--r--src/s60installs/eabi/QtGuiu.def452
-rw-r--r--src/s60installs/eabi/QtMultimediau.def132
-rw-r--r--src/s60installs/eabi/QtNetworku.def30
-rw-r--r--src/s60installs/eabi/QtSqlu.def6
-rw-r--r--src/s60installs/eabi/QtSvgu.def9
-rw-r--r--src/s60installs/eabi/QtTestu.def21
-rw-r--r--src/s60installs/eabi/phononu.def12
42 files changed, 1319 insertions, 467 deletions
diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h
index d925f40..29f46f6 100644
--- a/src/corelib/global/qfeatures.h
+++ b/src/corelib/global/qfeatures.h
@@ -446,6 +446,11 @@
#define QT_NO_SPLITTER
#endif
+// State machine
+#if !defined(QT_NO_STATEMACHINE) && (defined(QT_NO_PROPERTIES))
+#define QT_NO_STATEMACHINE
+#endif
+
// QCDEStyle
#if !defined(QT_NO_STYLE_CDE) && (defined(QT_NO_STYLE_MOTIF))
#define QT_NO_STYLE_CDE
@@ -616,11 +621,6 @@
#define QT_NO_QWS_SOUNDSERVER
#endif
-// QtScript
-#if !defined(QT_NO_SCRIPT) && (defined(QT_NO_TEXTDATE) || defined(QT_NO_DATESTRING) || defined(QT_NO_PROPERTIES))
-#define QT_NO_SCRIPT
-#endif
-
// QSvgGenerator
#if !defined(QT_NO_SVGGENERATOR) && (defined(QT_NO_SVG))
#define QT_NO_SVGGENERATOR
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index 9909b7b..1d29b3b 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -2065,7 +2065,7 @@ QString qt_error_string(int errorCode)
NULL,
errorCode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- string,
+ (LPWSTR)&string,
0,
NULL);
ret = QString::fromWCharArray(string);
diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp
index 8d7a75d..1f23211 100644
--- a/src/corelib/tools/qregexp.cpp
+++ b/src/corelib/tools/qregexp.cpp
@@ -522,6 +522,10 @@ int qFindString(const QChar *haystack, int haystackLen, int from,
outside, backslash has no special meaning.
\endtable
+ In the mode Wildcard, the wildcard characters cannot be
+ escaped. In the mode WildcardUnix, the character '\' escapes the
+ wildcard.
+
For example if we are in wildcard mode and have strings which
contain filenames we could identify HTML files with \bold{*.html}.
This will match zero or more characters followed by a dot followed
@@ -751,50 +755,100 @@ static void mergeInto(QVector<int> *a, const QVector<int> &b)
/*
Translates a wildcard pattern to an equivalent regular expression
pattern (e.g., *.cpp to .*\.cpp).
+
+ If enableEscaping is true, it is possible to escape the wildcard
+ characters with \
*/
-static QString wc2rx(const QString &wc_str)
+static QString wc2rx(const QString &wc_str, const bool enableEscaping)
{
- int wclen = wc_str.length();
+ const int wclen = wc_str.length();
QString rx;
int i = 0;
+ bool isEscaping = false; // the previous character is '\'
const QChar *wc = wc_str.unicode();
+
while (i < wclen) {
- QChar c = wc[i++];
+ const QChar c = wc[i++];
switch (c.unicode()) {
+ case '\\':
+ if (enableEscaping) {
+ if (isEscaping) {
+ rx += QLatin1String("\\\\");
+ } // we insert the \\ later if necessary
+ if (i+1 == wclen) { // the end
+ rx += QLatin1String("\\\\");
+ }
+ } else {
+ rx += QLatin1String("\\\\");
+ }
+ isEscaping = true;
+ break;
case '*':
- rx += QLatin1String(".*");
+ if (isEscaping) {
+ rx += QLatin1String("\\*");
+ isEscaping = false;
+ } else {
+ rx += QLatin1String(".*");
+ }
break;
case '?':
- rx += QLatin1Char('.');
+ if (isEscaping) {
+ rx += QLatin1String("\\?");
+ isEscaping = false;
+ } else {
+ rx += QLatin1Char('.');
+ }
+
break;
case '$':
case '(':
case ')':
case '+':
case '.':
- case '\\':
case '^':
case '{':
case '|':
case '}':
+ if (isEscaping) {
+ isEscaping = false;
+ rx += QLatin1String("\\\\");
+ }
rx += QLatin1Char('\\');
rx += c;
break;
- case '[':
- rx += c;
- if (wc[i] == QLatin1Char('^'))
- rx += wc[i++];
- if (i < wclen) {
- if (rx[i] == QLatin1Char(']'))
- rx += wc[i++];
- while (i < wclen && wc[i] != QLatin1Char(']')) {
- if (wc[i] == QLatin1Char('\\'))
- rx += QLatin1Char('\\');
+ case '[':
+ if (isEscaping) {
+ isEscaping = false;
+ rx += QLatin1String("\\[");
+ } else {
+ rx += c;
+ if (wc[i] == QLatin1Char('^'))
rx += wc[i++];
+ if (i < wclen) {
+ if (rx[i] == QLatin1Char(']'))
+ rx += wc[i++];
+ while (i < wclen && wc[i] != QLatin1Char(']')) {
+ if (wc[i] == QLatin1Char('\\'))
+ rx += QLatin1Char('\\');
+ rx += wc[i++];
+ }
}
}
+ break;
+
+ case ']':
+ if(isEscaping){
+ isEscaping = false;
+ rx += QLatin1String("\\");
+ }
+ rx += c;
break;
+
default:
+ if(isEscaping){
+ isEscaping = false;
+ rx += QLatin1String("\\\\");
+ }
rx += c;
}
}
@@ -1272,7 +1326,10 @@ Q_CORE_EXPORT QString qt_regexp_toCanonical(const QString &pattern, QRegExp::Pat
switch (patternSyntax) {
#ifndef QT_NO_REGEXP_WILDCARD
case QRegExp::Wildcard:
- return wc2rx(pattern);
+ return wc2rx(pattern, false);
+ break;
+ case QRegExp::WildcardUnix:
+ return wc2rx(pattern, true);
break;
#endif
case QRegExp::FixedString:
@@ -3715,6 +3772,10 @@ static void invalidateEngine(QRegExpPrivate *priv)
similar to that used by shells (command interpreters) for "file
globbing". See \l{Wildcard Matching}.
+ \value WildcardUnix This is similar to Wildcard but with the
+ behavior of a Unix shell. The wildcard characters can be escaped
+ with the character "\".
+
\value FixedString The pattern is a fixed string. This is
equivalent to using the RegExp pattern on a string in
which all metacharacters are escaped using escape().
diff --git a/src/corelib/tools/qregexp.h b/src/corelib/tools/qregexp.h
index c03e9e4..1a7cf53 100644
--- a/src/corelib/tools/qregexp.h
+++ b/src/corelib/tools/qregexp.h
@@ -61,7 +61,13 @@ class QStringList;
class Q_CORE_EXPORT QRegExp
{
public:
- enum PatternSyntax { RegExp, Wildcard, FixedString, RegExp2, W3CXmlSchema11 };
+ enum PatternSyntax {
+ RegExp,
+ Wildcard,
+ FixedString,
+ RegExp2,
+ WildcardUnix,
+ W3CXmlSchema11 };
enum CaretMode { CaretAtZero, CaretAtOffset, CaretWontMatch };
QRegExp();
diff --git a/src/gui/embedded/directfb.pri b/src/gui/embedded/directfb.pri
index 7dae9d5..43ff0c7 100644
--- a/src/gui/embedded/directfb.pri
+++ b/src/gui/embedded/directfb.pri
@@ -8,7 +8,7 @@
#DEFINES += QT_DIRECTFB_IMAGECACHE
#DEFINES += QT_NO_DIRECTFB_WM
#DEFINES += QT_NO_DIRECTFB_LAYER
-#DEFINES += QT_NO_DIRECTFB_PALETTE
+#DEFINES += QT_DIRECTFB_PALETTE
#DEFINES += QT_NO_DIRECTFB_PREALLOCATED
#DEFINES += QT_NO_DIRECTFB_MOUSE
#DEFINES += QT_NO_DIRECTFB_KEYBOARD
diff --git a/src/gui/graphicsview/qgraphicsanchorlayout.cpp b/src/gui/graphicsview/qgraphicsanchorlayout.cpp
index 5897ae4..12124ab 100644
--- a/src/gui/graphicsview/qgraphicsanchorlayout.cpp
+++ b/src/gui/graphicsview/qgraphicsanchorlayout.cpp
@@ -194,7 +194,7 @@ QGraphicsAnchorLayout::addAnchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint
QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge)
{
Q_D(QGraphicsAnchorLayout);
- QGraphicsAnchor *a = d->anchor(firstItem, firstEdge, secondItem, secondEdge);
+ QGraphicsAnchor *a = d->addAnchor(firstItem, firstEdge, secondItem, secondEdge);
invalidate();
return a;
}
@@ -246,12 +246,12 @@ void QGraphicsAnchorLayout::addCornerAnchors(QGraphicsLayoutItem *firstItem,
// Horizontal anchor
Qt::AnchorPoint firstEdge = (firstCorner & 1 ? Qt::AnchorRight: Qt::AnchorLeft);
Qt::AnchorPoint secondEdge = (secondCorner & 1 ? Qt::AnchorRight: Qt::AnchorLeft);
- d->anchor(firstItem, firstEdge, secondItem, secondEdge);
+ d->addAnchor(firstItem, firstEdge, secondItem, secondEdge);
// Vertical anchor
firstEdge = (firstCorner & 2 ? Qt::AnchorBottom: Qt::AnchorTop);
secondEdge = (secondCorner & 2 ? Qt::AnchorBottom: Qt::AnchorTop);
- d->anchor(firstItem, firstEdge, secondItem, secondEdge);
+ d->addAnchor(firstItem, firstEdge, secondItem, secondEdge);
invalidate();
}
@@ -288,6 +288,18 @@ void QGraphicsAnchorLayout::addAnchors(QGraphicsLayoutItem *firstItem,
}
/*!
+ Returns true if there are no arrangement that satisfies all constraints.
+ Otherwise returns false.
+
+ \sa addAnchor()
+*/
+bool QGraphicsAnchorLayout::hasConflicts() const
+{
+ Q_D(const QGraphicsAnchorLayout);
+ return d->hasConflicts();
+}
+
+/*!
Sets the default horizontal spacing for the anchor layout to \a spacing.
\sa horizontalSpacing(), setVerticalSpacing(), setSpacing()
diff --git a/src/gui/graphicsview/qgraphicsanchorlayout.h b/src/gui/graphicsview/qgraphicsanchorlayout.h
index d9a87ba..44074d1 100644
--- a/src/gui/graphicsview/qgraphicsanchorlayout.h
+++ b/src/gui/graphicsview/qgraphicsanchorlayout.h
@@ -93,6 +93,7 @@ public:
QGraphicsLayoutItem *secondItem,
Qt::Orientations orientations = Qt::Horizontal | Qt::Vertical);
+ bool hasConflicts() const;
void setHorizontalSpacing(qreal spacing);
void setVerticalSpacing(qreal spacing);
void setSpacing(qreal spacing);
diff --git a/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp b/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp
index a37ec96..23601f9 100644
--- a/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp
+++ b/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp
@@ -59,7 +59,7 @@ QGraphicsAnchorPrivate::QGraphicsAnchorPrivate(int version)
QGraphicsAnchorPrivate::~QGraphicsAnchorPrivate()
{
- layoutPrivate->deleteAnchorData(data);
+ layoutPrivate->removeAnchor(data->from, data->to);
}
void QGraphicsAnchorPrivate::setSpacing(qreal value)
@@ -332,6 +332,7 @@ QGraphicsAnchorLayoutPrivate::QGraphicsAnchorLayoutPrivate()
for (int i = 0; i < NOrientations; ++i) {
spacings[i] = -1;
graphSimplified[i] = false;
+ graphHasConflicts[i] = false;
}
}
@@ -790,7 +791,7 @@ void QGraphicsAnchorLayoutPrivate::createLayoutEdges()
// Horizontal
AnchorData *data = new AnchorData(0, 0, QWIDGETSIZE_MAX);
- addAnchor(layout, Qt::AnchorLeft, layout,
+ addAnchor_helper(layout, Qt::AnchorLeft, layout,
Qt::AnchorRight, data);
data->skipInPreferred = 1;
@@ -800,7 +801,7 @@ void QGraphicsAnchorLayoutPrivate::createLayoutEdges()
// Vertical
data = new AnchorData(0, 0, QWIDGETSIZE_MAX);
- addAnchor(layout, Qt::AnchorTop, layout,
+ addAnchor_helper(layout, Qt::AnchorTop, layout,
Qt::AnchorBottom, data);
data->skipInPreferred = 1;
@@ -816,8 +817,10 @@ void QGraphicsAnchorLayoutPrivate::deleteLayoutEdges()
Q_ASSERT(internalVertex(q, Qt::AnchorHorizontalCenter) == NULL);
Q_ASSERT(internalVertex(q, Qt::AnchorVerticalCenter) == NULL);
- removeAnchor(q, Qt::AnchorLeft, q, Qt::AnchorRight);
- removeAnchor(q, Qt::AnchorTop, q, Qt::AnchorBottom);
+ removeAnchor_helper(internalVertex(q, Qt::AnchorLeft),
+ internalVertex(q, Qt::AnchorRight));
+ removeAnchor_helper(internalVertex(q, Qt::AnchorTop),
+ internalVertex(q, Qt::AnchorBottom));
}
void QGraphicsAnchorLayoutPrivate::createItemEdges(QGraphicsLayoutItem *item)
@@ -832,7 +835,7 @@ void QGraphicsAnchorLayoutPrivate::createItemEdges(QGraphicsLayoutItem *item)
int maximumSize = item->maximumWidth();
AnchorData *data = new AnchorData(minimumSize, preferredSize, maximumSize);
- addAnchor(item, Qt::AnchorLeft, item,
+ addAnchor_helper(item, Qt::AnchorLeft, item,
Qt::AnchorRight, data);
// Vertical
@@ -841,7 +844,7 @@ void QGraphicsAnchorLayoutPrivate::createItemEdges(QGraphicsLayoutItem *item)
maximumSize = item->maximumHeight();
data = new AnchorData(minimumSize, preferredSize, maximumSize);
- addAnchor(item, Qt::AnchorTop, item,
+ addAnchor_helper(item, Qt::AnchorTop, item,
Qt::AnchorBottom, data);
}
@@ -904,16 +907,16 @@ void QGraphicsAnchorLayoutPrivate::createCenterAnchors(
QSimplexConstraint *c = new QSimplexConstraint;
AnchorData *data = new AnchorData(minimumSize, preferredSize, maximumSize);
c->variables.insert(data, 1.0);
- addAnchor(item, firstEdge, item, centerEdge, data);
+ addAnchor_helper(item, firstEdge, item, centerEdge, data);
data = new AnchorData(minimumSize, preferredSize, maximumSize);
c->variables.insert(data, -1.0);
- addAnchor(item, centerEdge, item, lastEdge, data);
+ addAnchor_helper(item, centerEdge, item, lastEdge, data);
itemCenterConstraints[orientation].append(c);
// Remove old one
- removeAnchor(item, firstEdge, item, lastEdge);
+ removeAnchor_helper(first, last);
}
void QGraphicsAnchorLayoutPrivate::removeCenterAnchors(
@@ -976,11 +979,11 @@ void QGraphicsAnchorLayoutPrivate::removeCenterAnchors(
int maximumSize = oldData->maxSize * 2;
AnchorData *data = new AnchorData(minimumSize, preferredSize, maximumSize);
- addAnchor(item, firstEdge, item, lastEdge, data);
+ addAnchor_helper(item, firstEdge, item, lastEdge, data);
// Remove old anchors
- removeAnchor(item, firstEdge, item, centerEdge);
- removeAnchor(item, centerEdge, item, lastEdge);
+ removeAnchor_helper(first, center);
+ removeAnchor_helper(center, internalVertex(item, lastEdge));
} else {
// this is only called from removeAnchors()
@@ -989,13 +992,13 @@ void QGraphicsAnchorLayoutPrivate::removeCenterAnchors(
for (int i = 0; i < adjacents.count(); ++i) {
AnchorVertex *v = adjacents.at(i);
if (v->m_item != item) {
- removeAnchor(item, centerEdge, v->m_item, v->m_edge);
+ removeAnchor_helper(center, internalVertex(v->m_item, v->m_edge));
}
}
// when all non-internal anchors is removed it will automatically merge the
// center anchor into a left-right (or top-bottom) anchor. We must also delete that.
// by this time, the center vertex is deleted and merged into a non-centered internal anchor
- removeAnchor(item, firstEdge, item, lastEdge);
+ removeAnchor_helper(first, internalVertex(item, lastEdge));
}
}
@@ -1039,7 +1042,7 @@ void QGraphicsAnchorLayoutPrivate::removeCenterConstraints(QGraphicsLayoutItem *
* Helper function that is called from the anchor functions in the public API.
* If \a spacing is 0, it will pick up the spacing defined by the style.
*/
-QGraphicsAnchor *QGraphicsAnchorLayoutPrivate::anchor(QGraphicsLayoutItem *firstItem,
+QGraphicsAnchor *QGraphicsAnchorLayoutPrivate::addAnchor(QGraphicsLayoutItem *firstItem,
Qt::AnchorPoint firstEdge,
QGraphicsLayoutItem *secondItem,
Qt::AnchorPoint secondEdge,
@@ -1112,18 +1115,18 @@ QGraphicsAnchor *QGraphicsAnchorLayoutPrivate::anchor(QGraphicsLayoutItem *first
} else {
data = new AnchorData(0); // spacing should be 0
}
- addAnchor(firstItem, firstEdge, secondItem, secondEdge, data);
+ addAnchor_helper(firstItem, firstEdge, secondItem, secondEdge, data);
} else if (*spacing >= 0) {
data = new AnchorData(*spacing);
- addAnchor(firstItem, firstEdge, secondItem, secondEdge, data);
+ addAnchor_helper(firstItem, firstEdge, secondItem, secondEdge, data);
} else {
data = new AnchorData(-*spacing);
- addAnchor(secondItem, secondEdge, firstItem, firstEdge, data);
+ addAnchor_helper(secondItem, secondEdge, firstItem, firstEdge, data);
}
return acquireGraphicsAnchor(data);
}
-void QGraphicsAnchorLayoutPrivate::addAnchor(QGraphicsLayoutItem *firstItem,
+void QGraphicsAnchorLayoutPrivate::addAnchor_helper(QGraphicsLayoutItem *firstItem,
Qt::AnchorPoint firstEdge,
QGraphicsLayoutItem *secondItem,
Qt::AnchorPoint secondEdge,
@@ -1142,8 +1145,9 @@ void QGraphicsAnchorLayoutPrivate::addAnchor(QGraphicsLayoutItem *firstItem,
// Remove previous anchor
// ### Could we update the existing edgeData rather than creating a new one?
- if (graph[edgeOrientation(firstEdge)].edgeData(v1, v2))
- removeAnchor(firstItem, firstEdge, secondItem, secondEdge);
+ if (graph[edgeOrientation(firstEdge)].edgeData(v1, v2)) {
+ removeAnchor_helper(v1, v2);
+ }
// Create a bi-directional edge in the sense it can be transversed both
// from v1 or v2. "data" however is shared between the two references
@@ -1178,15 +1182,82 @@ QGraphicsAnchor *QGraphicsAnchorLayoutPrivate::getAnchor(QGraphicsLayoutItem *fi
return graphicsAnchor;
}
-void QGraphicsAnchorLayoutPrivate::removeAnchor(QGraphicsLayoutItem *firstItem,
- Qt::AnchorPoint firstEdge,
- QGraphicsLayoutItem *secondItem,
- Qt::AnchorPoint secondEdge)
+/*!
+ * \internal
+ *
+ * Implements the high level "removeAnchor" feature. Called by
+ * the QAnchorData destructor.
+ */
+void QGraphicsAnchorLayoutPrivate::removeAnchor(AnchorVertex *firstVertex,
+ AnchorVertex *secondVertex)
{
- removeAnchor_helper(internalVertex(firstItem, firstEdge),
- internalVertex(secondItem, secondEdge));
+ Q_Q(QGraphicsAnchorLayout);
+
+ // Actually delete the anchor
+ removeAnchor_helper(firstVertex, secondVertex);
+
+ QGraphicsLayoutItem *firstItem = firstVertex->m_item;
+ QGraphicsLayoutItem *secondItem = secondVertex->m_item;
+
+ // Checking if the item stays in the layout or not
+ bool keepFirstItem = false;
+ bool keepSecondItem = false;
+
+ QPair<AnchorVertex *, int> v;
+ int refcount = -1;
+
+ if (firstItem != q) {
+ for (int i = Qt::AnchorLeft; i <= Qt::AnchorBottom; ++i) {
+ v = m_vertexList.value(qMakePair(firstItem, static_cast<Qt::AnchorPoint>(i)));
+ if (v.first) {
+ if (i == Qt::AnchorHorizontalCenter || i == Qt::AnchorVerticalCenter)
+ refcount = 2;
+ else
+ refcount = 1;
+
+ if (v.second > refcount) {
+ keepFirstItem = true;
+ break;
+ }
+ }
+ }
+ } else
+ keepFirstItem = true;
+
+ if (secondItem != q) {
+ for (int i = Qt::AnchorLeft; i <= Qt::AnchorBottom; ++i) {
+ v = m_vertexList.value(qMakePair(secondItem, static_cast<Qt::AnchorPoint>(i)));
+ if (v.first) {
+ if (i == Qt::AnchorHorizontalCenter || i == Qt::AnchorVerticalCenter)
+ refcount = 2;
+ else
+ refcount = 1;
+
+ if (v.second > refcount) {
+ keepSecondItem = true;
+ break;
+ }
+ }
+ }
+ } else
+ keepSecondItem = true;
+
+ if (!keepFirstItem)
+ q->removeAt(items.indexOf(firstItem));
+
+ if (!keepSecondItem)
+ q->removeAt(items.indexOf(secondItem));
+
+ // Removing anchors invalidates the layout
+ q->invalidate();
}
+/*
+ \internal
+
+ Implements the low level "removeAnchor" feature. Called by
+ private methods.
+*/
void QGraphicsAnchorLayoutPrivate::removeAnchor_helper(AnchorVertex *v1, AnchorVertex *v2)
{
Q_ASSERT(v1 && v2);
@@ -1207,17 +1278,6 @@ void QGraphicsAnchorLayoutPrivate::removeAnchor_helper(AnchorVertex *v1, AnchorV
\internal
Only called from outside. (calls invalidate())
*/
-void QGraphicsAnchorLayoutPrivate::deleteAnchorData(AnchorData *data)
-{
- Q_Q(QGraphicsAnchorLayout);
- removeAnchor_helper(data->from, data->to);
- q->invalidate();
-}
-
-/*!
- \internal
- Only called from outside. (calls invalidate())
-*/
void QGraphicsAnchorLayoutPrivate::setAnchorSize(AnchorData *data, const qreal *anchorSize)
{
Q_Q(QGraphicsAnchorLayout);
@@ -1225,12 +1285,35 @@ void QGraphicsAnchorLayoutPrivate::setAnchorSize(AnchorData *data, const qreal *
// search recursively through all composite anchors
Q_ASSERT(data);
restoreSimplifiedGraph(edgeOrientation(data->from->m_edge));
+
+ QGraphicsLayoutItem *firstItem = data->from->m_item;
+ QGraphicsLayoutItem *secondItem = data->to->m_item;
+ Qt::AnchorPoint firstEdge = data->from->m_edge;
+ Qt::AnchorPoint secondEdge = data->to->m_edge;
+
+ // Use heuristics to find out what the user meant with this anchor.
+ correctEdgeDirection(firstItem, firstEdge, secondItem, secondEdge);
+ if (data->from->m_item != firstItem)
+ qSwap(data->from, data->to);
+
if (anchorSize) {
- data->setFixedSize(*anchorSize);
+ // ### The current implementation makes "setAnchorSize" behavior
+ // dependent on the argument order for cases where we have
+ // no heuristic. Ie. two widgets, same anchor point.
+
+ // We cannot have negative sizes inside the graph. This would cause
+ // the simplex solver to fail because all simplex variables are
+ // positive by definition.
+ // "negative spacing" is handled by inverting the standard item order.
+ if (*anchorSize >= 0) {
+ data->setFixedSize(*anchorSize);
+ } else {
+ data->setFixedSize(-*anchorSize);
+ qSwap(data->from, data->to);
+ }
} else {
data->unsetSize();
}
-
q->invalidate();
}
@@ -1360,25 +1443,23 @@ void QGraphicsAnchorLayoutPrivate::correctEdgeDirection(QGraphicsLayoutItem *&fi
{
Q_Q(QGraphicsAnchorLayout);
- Qt::AnchorPoint effectiveFirst = firstEdge;
- Qt::AnchorPoint effectiveSecond = secondEdge;
-
- if (firstItem == q)
- effectiveFirst = QGraphicsAnchorLayoutPrivate::oppositeEdge(firstEdge);
- if (secondItem == q)
- effectiveSecond = QGraphicsAnchorLayoutPrivate::oppositeEdge(secondEdge);
-
- if (effectiveFirst < effectiveSecond) {
-
- // ### DEBUG
- /* printf("Swapping Anchor from %s %d --to--> %s %d\n",
- firstItem->isLayout() ? "<layout>" :
- qPrintable(static_cast<QGraphicsWidget *>(firstItem)->data(0).toString()),
- firstEdge,
- secondItem->isLayout() ? "<layout>" :
- qPrintable(static_cast<QGraphicsWidget *>(secondItem)->data(0).toString()),
- secondEdge);
- */
+ if ((firstItem != q) && (secondItem != q)) {
+ // If connection is between widgets (not the layout itself)
+ // Ensure that "right-edges" sit to the left of "left-edges".
+ if (firstEdge < secondEdge) {
+ qSwap(firstItem, secondItem);
+ qSwap(firstEdge, secondEdge);
+ }
+ } else if (firstItem == q) {
+ // If connection involves the right or bottom of a layout, ensure
+ // the layout is the second item.
+ if ((firstEdge == Qt::AnchorRight) || (firstEdge == Qt::AnchorBottom)) {
+ qSwap(firstItem, secondItem);
+ qSwap(firstEdge, secondEdge);
+ }
+ } else if ((secondEdge != Qt::AnchorRight) && (secondEdge != Qt::AnchorBottom)) {
+ // If connection involves the left, center or top of layout, ensure
+ // the layout is the first item.
qSwap(firstItem, secondItem);
qSwap(firstEdge, secondEdge);
}
@@ -1507,6 +1588,7 @@ void QGraphicsAnchorLayoutPrivate::calculateGraphs(
AnchorVertex *v = internalVertex(q, pickEdge(Qt::AnchorRight, orientation));
GraphPath trunkPath = graphPaths[orientation].value(v);
+ bool feasible = true;
if (!trunkConstraints.isEmpty()) {
#if 0
qDebug("Simplex used for trunk of %s",
@@ -1514,33 +1596,37 @@ void QGraphicsAnchorLayoutPrivate::calculateGraphs(
#endif
// Solve min and max size hints for trunk
- QPair<qreal, qreal> minMax = solveMinMax(trunkConstraints, trunkPath);
- sizeHints[orientation][Qt::MinimumSize] = minMax.first;
- sizeHints[orientation][Qt::MaximumSize] = minMax.second;
+ qreal min, max;
+ feasible = solveMinMax(trunkConstraints, trunkPath, &min, &max);
// Solve for preferred. The objective function is calculated from the constraints
// and variables internally.
- solvePreferred(trunkConstraints);
+ feasible &= solvePreferred(trunkConstraints);
- // Propagate the new sizes down the simplified graph, ie. tell the
- // group anchors to set their children anchors sizes.
+ if (feasible) {
+ // Propagate the new sizes down the simplified graph, ie. tell the
+ // group anchors to set their children anchors sizes.
- // ### we calculated variables already a few times, can't we reuse that?
- QList<AnchorData *> trunkVariables = getVariables(trunkConstraints);
+ // ### we calculated variables already a few times, can't we reuse that?
+ QList<AnchorData *> trunkVariables = getVariables(trunkConstraints);
- for (int i = 0; i < trunkVariables.count(); ++i)
- trunkVariables.at(i)->updateChildrenSizes();
+ for (int i = 0; i < trunkVariables.count(); ++i)
+ trunkVariables.at(i)->updateChildrenSizes();
+
+ // Calculate and set the preferred size for the layout from the edge sizes that
+ // were calculated above.
+ qreal pref(0.0);
+ foreach (const AnchorData *ad, trunkPath.positives) {
+ pref += ad->sizeAtPreferred;
+ }
+ foreach (const AnchorData *ad, trunkPath.negatives) {
+ pref -= ad->sizeAtPreferred;
+ }
+ sizeHints[orientation][Qt::MinimumSize] = min;
+ sizeHints[orientation][Qt::PreferredSize] = pref;
+ sizeHints[orientation][Qt::MaximumSize] = max;
- // Calculate and set the preferred size for the layout from the edge sizes that
- // were calculated above.
- qreal pref(0.0);
- foreach (const AnchorData *ad, trunkPath.positives) {
- pref += ad->sizeAtPreferred;
- }
- foreach (const AnchorData *ad, trunkPath.negatives) {
- pref -= ad->sizeAtPreferred;
}
- sizeHints[orientation][Qt::PreferredSize] = pref;
} else {
#if 0
qDebug("Simplex NOT used for trunk of %s",
@@ -1574,29 +1660,34 @@ void QGraphicsAnchorLayoutPrivate::calculateGraphs(
// layout.
// Solve the other only for preferred, skip trunk
- for (int i = 1; i < parts.count(); ++i) {
- QList<QSimplexConstraint *> partConstraints = parts[i];
- QList<AnchorData *> partVariables = getVariables(partConstraints);
- Q_ASSERT(!partVariables.isEmpty());
-
- sizeHintConstraints = constraintsFromSizeHints(partVariables);
- partConstraints += sizeHintConstraints;
- solvePreferred(partConstraints);
-
- // Propagate size at preferred to other sizes. Semi-floats
- // always will be in their sizeAtPreferred.
- for (int j = 0; j < partVariables.count(); ++j) {
- AnchorData *ad = partVariables[j];
- Q_ASSERT(ad);
- ad->sizeAtMinimum = ad->sizeAtPreferred;
- ad->sizeAtMaximum = ad->sizeAtPreferred;
- ad->updateChildrenSizes();
- }
+ if (feasible) {
+ for (int i = 1; i < parts.count(); ++i) {
+ QList<QSimplexConstraint *> partConstraints = parts[i];
+ QList<AnchorData *> partVariables = getVariables(partConstraints);
+ Q_ASSERT(!partVariables.isEmpty());
+
+ sizeHintConstraints = constraintsFromSizeHints(partVariables);
+ partConstraints += sizeHintConstraints;
+ feasible &= solvePreferred(partConstraints);
+ if (!feasible)
+ break;
+
+ // Propagate size at preferred to other sizes. Semi-floats
+ // always will be in their sizeAtPreferred.
+ for (int j = 0; j < partVariables.count(); ++j) {
+ AnchorData *ad = partVariables[j];
+ Q_ASSERT(ad);
+ ad->sizeAtMinimum = ad->sizeAtPreferred;
+ ad->sizeAtMaximum = ad->sizeAtPreferred;
+ ad->updateChildrenSizes();
+ }
- // Delete the constraints, we won't use them anymore.
- qDeleteAll(sizeHintConstraints);
- sizeHintConstraints.clear();
+ // Delete the constraints, we won't use them anymore.
+ qDeleteAll(sizeHintConstraints);
+ sizeHintConstraints.clear();
+ }
}
+ graphHasConflicts[orientation] = !feasible;
// Clean up our data structures. They are not needed anymore since
// distribution uses just interpolation.
@@ -2061,47 +2152,48 @@ void QGraphicsAnchorLayoutPrivate::interpolateSequentialEdges(
interpolateEdge(prev, data->m_edges.last(), orientation);
}
-QPair<qreal, qreal>
-QGraphicsAnchorLayoutPrivate::solveMinMax(QList<QSimplexConstraint *> constraints,
- GraphPath path)
+bool QGraphicsAnchorLayoutPrivate::solveMinMax(QList<QSimplexConstraint *> constraints,
+ GraphPath path, qreal *min, qreal *max)
{
QSimplex simplex;
- simplex.setConstraints(constraints);
-
- // Obtain the objective constraint
- QSimplexConstraint objective;
- QSet<AnchorData *>::const_iterator iter;
- for (iter = path.positives.constBegin(); iter != path.positives.constEnd(); ++iter)
- objective.variables.insert(*iter, 1.0);
-
- for (iter = path.negatives.constBegin(); iter != path.negatives.constEnd(); ++iter)
- objective.variables.insert(*iter, -1.0);
-
- simplex.setObjective(&objective);
-
- // Calculate minimum values
- qreal min = simplex.solveMin();
-
- // Save sizeAtMinimum results
- QList<QSimplexVariable *> variables = simplex.constraintsVariables();
- for (int i = 0; i < variables.size(); ++i) {
- AnchorData *ad = static_cast<AnchorData *>(variables[i]);
- ad->sizeAtMinimum = ad->result;
- }
+ bool feasible = simplex.setConstraints(constraints);
+ if (feasible) {
+ // Obtain the objective constraint
+ QSimplexConstraint objective;
+ QSet<AnchorData *>::const_iterator iter;
+ for (iter = path.positives.constBegin(); iter != path.positives.constEnd(); ++iter)
+ objective.variables.insert(*iter, 1.0);
+
+ for (iter = path.negatives.constBegin(); iter != path.negatives.constEnd(); ++iter)
+ objective.variables.insert(*iter, -1.0);
+
+ simplex.setObjective(&objective);
+
+ // Calculate minimum values
+ *min = simplex.solveMin();
+
+ // Save sizeAtMinimum results
+ QList<QSimplexVariable *> variables = simplex.constraintsVariables();
+ for (int i = 0; i < variables.size(); ++i) {
+ AnchorData *ad = static_cast<AnchorData *>(variables[i]);
+ Q_ASSERT(ad->result >= ad->minSize || qFuzzyCompare(ad->result, ad->minSize));
+ ad->sizeAtMinimum = ad->result;
+ }
- // Calculate maximum values
- qreal max = simplex.solveMax();
+ // Calculate maximum values
+ *max = simplex.solveMax();
- // Save sizeAtMaximum results
- for (int i = 0; i < variables.size(); ++i) {
- AnchorData *ad = static_cast<AnchorData *>(variables[i]);
- ad->sizeAtMaximum = ad->result;
+ // Save sizeAtMaximum results
+ for (int i = 0; i < variables.size(); ++i) {
+ AnchorData *ad = static_cast<AnchorData *>(variables[i]);
+ Q_ASSERT(ad->result <= ad->maxSize || qFuzzyCompare(ad->result, ad->maxSize));
+ ad->sizeAtMaximum = ad->result;
+ }
}
-
- return qMakePair<qreal, qreal>(min, max);
+ return feasible;
}
-void QGraphicsAnchorLayoutPrivate::solvePreferred(QList<QSimplexConstraint *> constraints)
+bool QGraphicsAnchorLayoutPrivate::solvePreferred(QList<QSimplexConstraint *> constraints)
{
QList<AnchorData *> variables = getVariables(constraints);
QList<QSimplexConstraint *> preferredConstraints;
@@ -2148,25 +2240,35 @@ void QGraphicsAnchorLayoutPrivate::solvePreferred(QList<QSimplexConstraint *> co
QSimplex *simplex = new QSimplex;
- simplex->setConstraints(constraints + preferredConstraints);
- simplex->setObjective(&objective);
+ bool feasible = simplex->setConstraints(constraints + preferredConstraints);
+ if (feasible) {
+ simplex->setObjective(&objective);
- // Calculate minimum values
- simplex->solveMin();
+ // Calculate minimum values
+ simplex->solveMin();
- // Save sizeAtPreferred results
- for (int i = 0; i < variables.size(); ++i) {
- AnchorData *ad = static_cast<AnchorData *>(variables[i]);
- ad->sizeAtPreferred = ad->result;
- }
-
- // Make sure we delete the simplex solver -before- we delete the
- // constraints used by it.
- delete simplex;
+ // Save sizeAtPreferred results
+ for (int i = 0; i < variables.size(); ++i) {
+ AnchorData *ad = static_cast<AnchorData *>(variables[i]);
+ ad->sizeAtPreferred = ad->result;
+ }
+ // Make sure we delete the simplex solver -before- we delete the
+ // constraints used by it.
+ delete simplex;
+ }
// Delete constraints and variables we created.
qDeleteAll(preferredConstraints);
qDeleteAll(preferredVariables);
+
+ return feasible;
+}
+
+bool QGraphicsAnchorLayoutPrivate::hasConflicts() const
+{
+ QGraphicsAnchorLayoutPrivate *that = const_cast<QGraphicsAnchorLayoutPrivate*>(this);
+ that->calculateGraphs();
+ return graphHasConflicts[0] || graphHasConflicts[1];
}
#ifdef QT_DEBUG
diff --git a/src/gui/graphicsview/qgraphicsanchorlayout_p.h b/src/gui/graphicsview/qgraphicsanchorlayout_p.h
index f701c3f..4e1bcd4 100644
--- a/src/gui/graphicsview/qgraphicsanchorlayout_p.h
+++ b/src/gui/graphicsview/qgraphicsanchorlayout_p.h
@@ -403,15 +403,15 @@ public:
return data->graphicsAnchor;
}
- // helper function used by the 4 API functions
- QGraphicsAnchor *anchor(QGraphicsLayoutItem *firstItem,
+ // function used by the 4 API functions
+ QGraphicsAnchor *addAnchor(QGraphicsLayoutItem *firstItem,
Qt::AnchorPoint firstEdge,
QGraphicsLayoutItem *secondItem,
Qt::AnchorPoint secondEdge,
qreal *spacing = 0);
- // Anchor Manipulation methods
- void addAnchor(QGraphicsLayoutItem *firstItem,
+ // Helper for Anchor Manipulation methods
+ void addAnchor_helper(QGraphicsLayoutItem *firstItem,
Qt::AnchorPoint firstEdge,
QGraphicsLayoutItem *secondItem,
Qt::AnchorPoint secondEdge,
@@ -420,12 +420,8 @@ public:
QGraphicsAnchor *getAnchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge,
QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge);
- void removeAnchor(QGraphicsLayoutItem *firstItem,
- Qt::AnchorPoint firstEdge,
- QGraphicsLayoutItem *secondItem,
- Qt::AnchorPoint secondEdge);
+ void removeAnchor(AnchorVertex *firstVertex, AnchorVertex *secondVertex);
void removeAnchor_helper(AnchorVertex *v1, AnchorVertex *v2);
- void deleteAnchorData(AnchorData *data);
void setAnchorSize(AnchorData *data, const qreal *anchorSize);
void anchorSize(const AnchorData *data,
qreal *minSize = 0,
@@ -482,9 +478,10 @@ public:
Orientation orientation);
// Linear Programming solver methods
- QPair<qreal, qreal> solveMinMax(QList<QSimplexConstraint *> constraints,
- GraphPath path);
- void solvePreferred(QList<QSimplexConstraint *> constraints);
+ bool solveMinMax(QList<QSimplexConstraint *> constraints,
+ GraphPath path, qreal *min, qreal *max);
+ bool solvePreferred(QList<QSimplexConstraint *> constraints);
+ bool hasConflicts() const;
#ifdef QT_DEBUG
void dumpGraph();
@@ -518,6 +515,7 @@ public:
// ###
bool graphSimplified[2];
+ bool graphHasConflicts[2];
uint calculateGraphCacheDirty : 1;
};
diff --git a/src/gui/graphicsview/qsimplex_p.cpp b/src/gui/graphicsview/qsimplex_p.cpp
index 3bd6b5a..e3a991e 100644
--- a/src/gui/graphicsview/qsimplex_p.cpp
+++ b/src/gui/graphicsview/qsimplex_p.cpp
@@ -84,12 +84,12 @@ void QSimplex::clearDataStructures()
objective = 0;
}
-void QSimplex::setConstraints(const QList<QSimplexConstraint *> newConstraints)
+bool QSimplex::setConstraints(const QList<QSimplexConstraint *> newConstraints)
{
clearDataStructures();
if (newConstraints.isEmpty())
- return;
+ return true; // we are ok with no constraints
constraints = newConstraints;
// Set Variables direct mapping
@@ -153,7 +153,7 @@ void QSimplex::setConstraints(const QList<QSimplexConstraint *> newConstraints)
matrix = (qreal *)malloc(sizeof(qreal) * columns * rows);
if (!matrix) {
qWarning() << "QSimplex: Unable to allocate memory!";
- return;
+ return false;
}
for (int i = columns * rows - 1; i >= 0; --i)
matrix[i] = 0.0;
@@ -198,11 +198,12 @@ void QSimplex::setConstraints(const QList<QSimplexConstraint *> newConstraints)
if (valueAt(0, columns - 1) != 0.0) {
qWarning() << "QSimplex: No feasible solution!";
clearDataStructures();
- return;
+ return false;
}
// Remove artificial variables
clearColumns(firstArtificial, columns - 2);
+ return true;
}
void QSimplex::solveMaxHelper()
diff --git a/src/gui/graphicsview/qsimplex_p.h b/src/gui/graphicsview/qsimplex_p.h
index 805ef4a..54b080d 100644
--- a/src/gui/graphicsview/qsimplex_p.h
+++ b/src/gui/graphicsview/qsimplex_p.h
@@ -107,7 +107,7 @@ public:
qreal solveMax();
QList<QSimplexVariable *> constraintsVariables();
- void setConstraints(const QList<QSimplexConstraint *> constraints);
+ bool setConstraints(const QList<QSimplexConstraint *> constraints);
void setObjective(QSimplexConstraint *objective);
void dumpMatrix();
diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp
index 9d977a5..757ded9 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -69,6 +69,7 @@ QAbstractItemViewPrivate::QAbstractItemViewPrivate()
: model(QAbstractItemModelPrivate::staticEmptyModel()),
itemDelegate(0),
selectionModel(0),
+ ctrlDragSelectionFlag(QItemSelectionModel::NoUpdate),
selectionMode(QAbstractItemView::ExtendedSelection),
selectionBehavior(QAbstractItemView::SelectItems),
currentlyCommittingEditor(0),
@@ -1589,6 +1590,11 @@ void QAbstractItemView::mousePressEvent(QMouseEvent *event)
d->selectionModel->setCurrentIndex(index, QItemSelectionModel::NoUpdate);
d->autoScroll = autoScroll;
QRect rect(d->pressedPosition - offset, pos);
+ if (command.testFlag(QItemSelectionModel::Toggle)) {
+ command &= ~QItemSelectionModel::Toggle;
+ d->ctrlDragSelectionFlag = d->selectionModel->isSelected(index) ? QItemSelectionModel::Deselect : QItemSelectionModel::Select;
+ command |= d->ctrlDragSelectionFlag;
+ }
setSelection(rect, command);
// signal handlers may change the model
@@ -1659,6 +1665,10 @@ void QAbstractItemView::mouseMoveEvent(QMouseEvent *event)
if ((event->buttons() & Qt::LeftButton) && d->selectionAllowed(index) && d->selectionModel) {
setState(DragSelectingState);
QItemSelectionModel::SelectionFlags command = selectionCommand(index, event);
+ if (command.testFlag(QItemSelectionModel::Toggle)) {
+ command &= ~QItemSelectionModel::Toggle;
+ command |= d->ctrlDragSelectionFlag;
+ }
// Do the normalize ourselves, since QRect::normalized() is flawed
QRect selectionRect = QRect(topLeft, bottomRight);
@@ -1699,6 +1709,8 @@ void QAbstractItemView::mouseReleaseEvent(QMouseEvent *event)
EditTrigger trigger = (selectedClicked ? SelectedClicked : NoEditTriggers);
bool edited = edit(index, trigger, event);
+ d->ctrlDragSelectionFlag = QItemSelectionModel::NoUpdate;
+
//in the case the user presses on no item we might decide to clear the selection
if (d->selectionModel && !index.isValid())
d->selectionModel->select(QModelIndex(), selectionCommand(index, event));
diff --git a/src/gui/itemviews/qabstractitemview_p.h b/src/gui/itemviews/qabstractitemview_p.h
index 725d0a9..6b1ec8e 100644
--- a/src/gui/itemviews/qabstractitemview_p.h
+++ b/src/gui/itemviews/qabstractitemview_p.h
@@ -342,6 +342,7 @@ public:
QMap<int, QPointer<QAbstractItemDelegate> > rowDelegates;
QMap<int, QPointer<QAbstractItemDelegate> > columnDelegates;
QPointer<QItemSelectionModel> selectionModel;
+ QItemSelectionModel::SelectionFlag ctrlDragSelectionFlag;
QAbstractItemView::SelectionMode selectionMode;
QAbstractItemView::SelectionBehavior selectionBehavior;
diff --git a/src/gui/itemviews/qtableview.cpp b/src/gui/itemviews/qtableview.cpp
index 684da3f..f1ffaa6 100644
--- a/src/gui/itemviews/qtableview.cpp
+++ b/src/gui/itemviews/qtableview.cpp
@@ -2519,9 +2519,21 @@ void QTableViewPrivate::selectRow(int row, bool anchor)
QModelIndex index = model->index(row, column, root);
QItemSelectionModel::SelectionFlags command = q->selectionCommand(index);
selectionModel->setCurrentIndex(index, QItemSelectionModel::NoUpdate);
- if ((!(command & QItemSelectionModel::Current) && anchor)
+ if ((anchor && !(command & QItemSelectionModel::Current))
|| (q->selectionMode() == QTableView::SingleSelection))
rowSectionAnchor = row;
+
+ if (q->selectionMode() != QTableView::SingleSelection
+ && command.testFlag(QItemSelectionModel::Toggle)) {
+ if (anchor)
+ ctrlDragSelectionFlag = verticalHeader->selectionModel()->selectedRows().contains(index)
+ ? QItemSelectionModel::Deselect : QItemSelectionModel::Select;
+ command &= ~QItemSelectionModel::Toggle;
+ command |= ctrlDragSelectionFlag;
+ if (!anchor)
+ command |= QItemSelectionModel::Current;
+ }
+
QModelIndex tl = model->index(qMin(rowSectionAnchor, row), 0, root);
QModelIndex br = model->index(qMax(rowSectionAnchor, row), model->columnCount(root) - 1, root);
if (verticalHeader->sectionsMoved() && tl.row() != br.row())
@@ -2545,9 +2557,21 @@ void QTableViewPrivate::selectColumn(int column, bool anchor)
QModelIndex index = model->index(row, column, root);
QItemSelectionModel::SelectionFlags command = q->selectionCommand(index);
selectionModel->setCurrentIndex(index, QItemSelectionModel::NoUpdate);
- if ((!(command & QItemSelectionModel::Current) && anchor)
+ if ((anchor && !(command & QItemSelectionModel::Current))
|| (q->selectionMode() == QTableView::SingleSelection))
columnSectionAnchor = column;
+
+ if (q->selectionMode() != QTableView::SingleSelection
+ && command.testFlag(QItemSelectionModel::Toggle)) {
+ if (anchor)
+ ctrlDragSelectionFlag = horizontalHeader->selectionModel()->selectedColumns().contains(index)
+ ? QItemSelectionModel::Deselect : QItemSelectionModel::Select;
+ command &= ~QItemSelectionModel::Toggle;
+ command |= ctrlDragSelectionFlag;
+ if (!anchor)
+ command |= QItemSelectionModel::Current;
+ }
+
QModelIndex tl = model->index(0, qMin(columnSectionAnchor, column), root);
QModelIndex br = model->index(model->rowCount(root) - 1,
qMax(columnSectionAnchor, column), root);
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index fd889fc..6a381f5 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -439,7 +439,7 @@ void QSymbianControl::HandlePointerEvent(const TPointerEvent& pEvent)
}
}
S60->lastCursorPos = globalPos;
-#ifndef Q_SYMBIAN_FIXED_POINTER_CURSORS
+#if !defined(QT_NO_CURSOR) && !defined(Q_SYMBIAN_FIXED_POINTER_CURSORS)
if (S60->brokenPointerCursors)
qt_symbian_move_cursor_sprite();
#endif
@@ -855,7 +855,6 @@ void qt_init(QApplicationPrivate * /* priv */, int)
//Check if mouse interaction is supported (either EMouse=1 in the HAL, or EMachineUID is one of the phones known to support this)
const TInt KMachineUidSamsungI8510 = 0x2000C51E;
- const TInt KMachineUidSamsungI550 = 0x2000A678;
TInt machineUID;
TInt mouse;
TInt touch;
@@ -888,6 +887,7 @@ void qt_init(QApplicationPrivate * /* priv */, int)
QApplicationPrivate::navigationMode = Qt::NavigationModeKeypadDirectional;
}
+#ifndef QT_NO_CURSOR
//Check if window server pointer cursors are supported or not
#ifndef Q_SYMBIAN_FIXED_POINTER_CURSORS
//In generic binary, use the HAL and OS version
@@ -912,6 +912,7 @@ void qt_init(QApplicationPrivate * /* priv */, int)
#endif
S60->wsSession().SetPointerCursorMode(EPointerCursorNormal);
}
+#endif
/*
### Commented out for now as parameter handling not needed in SOS(yet). Code below will break testlib with -o flag
@@ -1275,7 +1276,7 @@ int QApplication::s60ProcessEvent(TWsEvent *event)
}
break;
case EEventFocusGained:
- RDebug::Printf("focus gained %x", control);
+#ifndef QT_NO_CURSOR
//re-enable mouse interaction
if (S60->mouseInteractionEnabled) {
#ifndef Q_SYMBIAN_FIXED_POINTER_CURSORS
@@ -1285,9 +1286,10 @@ int QApplication::s60ProcessEvent(TWsEvent *event)
#endif
S60->wsSession().SetPointerCursorMode(EPointerCursorNormal);
}
+#endif
break;
case EEventFocusLost:
- RDebug::Printf("focus lost %x", control);
+#ifndef QT_NO_CURSOR
//disable mouse as may be moving to application that does not support it
if (S60->mouseInteractionEnabled) {
#ifndef Q_SYMBIAN_FIXED_POINTER_CURSORS
@@ -1297,6 +1299,7 @@ int QApplication::s60ProcessEvent(TWsEvent *event)
#endif
S60->wsSession().SetPointerCursorMode(EPointerCursorNone);
}
+#endif
break;
default:
break;
@@ -1534,7 +1537,9 @@ void QApplication::restoreOverrideCursor()
QListIterator<WId> iter(QWidgetPrivate::mapper->uniqueKeys());
while (iter.hasNext()) {
CCoeControl *ctrl = iter.next();
- ctrl->DrawableWindow()->ClearPointerCursor();
+ if(ctrl->OwnsWindow()) {
+ ctrl->DrawableWindow()->ClearPointerCursor();
+ }
}
if (w)
qt_symbian_setWindowCursor(w->cursor(), w->effectiveWinId());
diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp
index 6ecd535..2b1aaf5 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -220,7 +220,7 @@ static void resolveAygLibs()
# define FE_FONTSMOOTHINGCLEARTYPE 0x0002
#endif
-Q_GUI_EXPORT bool qt_cleartype_enabled;
+bool qt_cleartype_enabled;
Q_GUI_EXPORT bool qt_win_owndc_required; // CS_OWNDC is required if we use the GL graphicssystem as default
typedef HCTX (API *PtrWTOpen)(HWND, LPLOGCONTEXT, BOOL);
diff --git a/src/gui/kernel/qcursor_s60.cpp b/src/gui/kernel/qcursor_s60.cpp
index 757eaa8..0d8283d 100644
--- a/src/gui/kernel/qcursor_s60.cpp
+++ b/src/gui/kernel/qcursor_s60.cpp
@@ -52,8 +52,10 @@
QT_BEGIN_NAMESPACE
+#ifndef QT_NO_CURSOR
static QCursor cursorSprite;
-static int cursorSpriteVisible;
+static int cursorSpriteVisible;
+#endif
//pos and setpos are required whether cursors are configured or not.
QPoint QCursor::pos()
@@ -520,8 +522,10 @@ void qt_symbian_setGlobalCursor(const QCursor &cursor)
while(iter.hasNext())
{
CCoeControl *ctrl = iter.next();
- RWindowTreeNode *node = ctrl->DrawableWindow();
- qt_symbian_setWindowGroupCursor(cursor, *node);
+ if(ctrl->OwnsWindow()) {
+ RWindowTreeNode *node = ctrl->DrawableWindow();
+ qt_symbian_setWindowGroupCursor(cursor, *node);
+ }
}
}
}
diff --git a/src/gui/kernel/qdnd_s60.cpp b/src/gui/kernel/qdnd_s60.cpp
index 2456185..3d6ecd2 100644
--- a/src/gui/kernel/qdnd_s60.cpp
+++ b/src/gui/kernel/qdnd_s60.cpp
@@ -214,11 +214,13 @@ bool QDragManager::eventFilter(QObject *o, QEvent *e)
case QEvent::MouseButtonRelease:
{
qApp->removeEventFilter(this);
+#ifndef QT_NO_CURSOR
if (restoreCursor) {
QApplication::restoreOverrideCursor();
willDrop = false;
restoreCursor = false;
}
+#endif
if (object && object->target()) {
QMouseEvent *me = (QMouseEvent *)e;
@@ -267,7 +269,9 @@ Qt::DropAction QDragManager::drag(QDrag *o)
updatePixmap();
updateCursor();
+#ifndef QT_NO_CURSOR
qt_symbian_set_cursor_visible(true); //force cursor on even for touch phone
+#endif
object->d_func()->target = 0;
@@ -282,10 +286,12 @@ Qt::DropAction QDragManager::drag(QDrag *o)
delete eventLoop;
eventLoop = 0;
+#ifndef QT_NO_CURSOR
qt_symbian_set_cursor_visible(false);
overrideCursor = QCursor(); //deref the cursor data
qt_symbian_dnd_dragging = false;
+#endif
return global_accepted_action;
}
@@ -306,10 +312,12 @@ void QDragManager::cancel(bool deleteSource)
drag_object = object = 0;
}
+#ifndef QT_NO_CURSOR
if (restoreCursor) {
QApplication::restoreOverrideCursor();
restoreCursor = false;
}
+#endif
global_accepted_action = Qt::IgnoreAction;
}
@@ -317,10 +325,12 @@ void QDragManager::cancel(bool deleteSource)
void QDragManager::drop()
{
+#ifndef QT_NO_CURSOR
if (restoreCursor) {
QApplication::restoreOverrideCursor();
restoreCursor = false;
}
+#endif
}
QVariant QDropData::retrieveData_sys(const QString &mimetype, QVariant::Type type) const
diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h
index 794d15a..67084c4 100644
--- a/src/gui/kernel/qt_s60_p.h
+++ b/src/gui/kernel/qt_s60_p.h
@@ -304,11 +304,13 @@ static inline QImage::Format qt_TDisplayMode2Format(TDisplayMode mode)
return format;
}
+#ifndef QT_NO_CURSOR
void qt_symbian_setWindowCursor(const QCursor &cursor, const CCoeControl* wid);
void qt_symbian_setWindowGroupCursor(const QCursor &cursor, RWindowTreeNode &node);
void qt_symbian_setGlobalCursor(const QCursor &cursor);
void qt_symbian_set_cursor_visible(bool visible);
bool qt_symbian_is_cursor_visible();
+#endif
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qtooltip.cpp b/src/gui/kernel/qtooltip.cpp
index a480195..2d0d209 100644
--- a/src/gui/kernel/qtooltip.cpp
+++ b/src/gui/kernel/qtooltip.cpp
@@ -290,8 +290,8 @@ void QTipLabel::timerEvent(QTimerEvent *e)
// Fade out tip on mac (makes it invisible).
// The tip will not be deleted until a new tip is shown.
- // DRSWAT - Cocoa
- macWindowFade(qt_mac_window_for(this));
+ // DRSWAT - Cocoa
+ macWindowFade(qt_mac_window_for(this));
QTipLabel::instance->fadingOut = true; // will never be false again.
}
else
@@ -431,7 +431,7 @@ bool QTipLabel::tipChanged(const QPoint &pos, const QString &text, QObject *o)
void QToolTip::showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect)
{
- if (QTipLabel::instance){ // a tip does already exist
+ if (QTipLabel::instance && QTipLabel::instance->isVisible()){ // a tip does already exist
if (text.isEmpty()){ // empty text means hide current tip
QTipLabel::instance->hideTip();
return;
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index 522ce33..3744377 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -1222,8 +1222,9 @@ void QWidget::releaseMouse()
WId id = effectiveWinId();
id->SetPointerCapture(false);
QWidgetPrivate::mouseGrabber = 0;
-
+#ifndef QT_NO_CURSOR
QApplication::restoreOverrideCursor();
+#endif
}
}
diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri
index 5abac2f..8343cb9 100644
--- a/src/gui/painting/painting.pri
+++ b/src/gui/painting/painting.pri
@@ -22,6 +22,7 @@ HEADERS += \
painting/qpainter_p.h \
painting/qpainterpath.h \
painting/qpainterpath_p.h \
+ painting/qvectorpath_p.h \
painting/qpathclipper_p.h \
painting/qpdf_p.h \
painting/qpen.h \
diff --git a/src/gui/text/qfontdatabase_mac.cpp b/src/gui/text/qfontdatabase_mac.cpp
index d65910c..2584003 100644
--- a/src/gui/text/qfontdatabase_mac.cpp
+++ b/src/gui/text/qfontdatabase_mac.cpp
@@ -308,6 +308,21 @@ void QFontDatabase::load(const QFontPrivate *d, int script)
if (familyRef) {
fontRef = ATSFontFindFromName(QCFString(db->families[k]->name), kATSOptionFlagsDefault);
goto FamilyFound;
+ } else {
+#if defined(QT_MAC_USE_COCOA)
+ // ATS and CT disagrees on what the family name should be,
+ // use CT to look up the font if ATS fails.
+ QCFString familyName = QString::fromAscii(family_name);
+ QCFType<CTFontRef> CTfontRef = CTFontCreateWithName(familyName, 12, NULL);
+ QCFType<CTFontDescriptorRef> fontDescriptor = CTFontCopyFontDescriptor(CTfontRef);
+ QCFString displayName = (CFStringRef)CTFontDescriptorCopyAttribute(fontDescriptor, kCTFontDisplayNameAttribute);
+
+ familyRef = ATSFontFamilyFindFromName(displayName, kATSOptionFlagsDefault);
+ if (familyRef) {
+ fontRef = ATSFontFindFromName(displayName, kATSOptionFlagsDefault);
+ goto FamilyFound;
+ }
+#endif
}
}
}
@@ -456,11 +471,27 @@ static void registerFont(QFontDatabasePrivate::ApplicationFont *fnt)
return;
fnt->families.clear();
+#if defined(QT_MAC_USE_COCOA)
+ // Make sure that the family name set on the font matches what
+ // kCTFontFamilyNameAttribute returns in initializeDb().
+ // So far the best solution seems find the installed font
+ // using CoreText and get the family name from it.
+ // (ATSFontFamilyGetName appears to be the correct API, but also
+ // returns the font display name.)
+ for(int i = 0; i < containedFonts.size(); ++i) {
+ QCFString fontPostScriptName;
+ ATSFontGetPostScriptName(containedFonts[i], kATSOptionFlagsDefault, &fontPostScriptName);
+ QCFType<CTFontDescriptorRef> font = CTFontDescriptorCreateWithNameAndSize(fontPostScriptName, 14);
+ QCFString familyName = (CFStringRef)CTFontDescriptorCopyAttribute(font, kCTFontFamilyNameAttribute);
+ fnt->families.append(familyName);
+ }
+#else
for(int i = 0; i < containedFonts.size(); ++i) {
QCFString family;
ATSFontGetName(containedFonts[i], kATSOptionFlagsDefault, &family);
fnt->families.append(family);
}
+#endif
fnt->handle = handle;
}
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index 8dd01d7..e5a88fc 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -946,48 +946,60 @@ const uchar *QFontEngine::getCMap(const uchar *table, uint tableSize, bool *isSy
if (maps + 8 * numTables > endPtr)
return 0;
+ enum {
+ Invalid,
+ Symbol,
+ AppleRoman,
+ Unicode11,
+ Unicode,
+ MicrosoftUnicode,
+ MicrosoftUnicodeExtended
+ };
+
+ int symbolTable = -1;
int tableToUse = -1;
- int score = 0;
+ int score = Invalid;
for (int n = 0; n < numTables; ++n) {
const quint16 platformId = qFromBigEndian<quint16>(maps + 8 * n);
const quint16 platformSpecificId = qFromBigEndian<quint16>(maps + 8 * n + 2);
switch (platformId) {
case 0: // Unicode
- if (score < 4 &&
+ if (score < Unicode &&
(platformSpecificId == 0 ||
platformSpecificId == 2 ||
platformSpecificId == 3)) {
tableToUse = n;
- score = 4;
- } else if (score < 3 && platformSpecificId == 1) {
+ score = Unicode;
+ } else if (score < Unicode11 && platformSpecificId == 1) {
tableToUse = n;
- score = 3;
+ score = Unicode11;
}
break;
case 1: // Apple
- if (score < 2 && platformSpecificId == 0) { // Apple Roman
+ if (score < AppleRoman && platformSpecificId == 0) { // Apple Roman
tableToUse = n;
- score = 2;
+ score = AppleRoman;
}
break;
case 3: // Microsoft
switch (platformSpecificId) {
case 0:
- if (score < 1) {
+ symbolTable = n;
+ if (score < Symbol) {
tableToUse = n;
- score = 1;
+ score = Symbol;
}
break;
case 1:
- if (score < 5) {
+ if (score < MicrosoftUnicode) {
tableToUse = n;
- score = 5;
+ score = MicrosoftUnicode;
}
break;
case 0xa:
- if (score < 6) {
+ if (score < MicrosoftUnicodeExtended) {
tableToUse = n;
- score = 6;
+ score = MicrosoftUnicodeExtended;
}
break;
default:
@@ -999,7 +1011,9 @@ const uchar *QFontEngine::getCMap(const uchar *table, uint tableSize, bool *isSy
}
if(tableToUse < 0)
return 0;
- *isSymbolFont = (score == 1);
+
+resolveTable:
+ *isSymbolFont = (score == Symbol);
unsigned int unicode_table = qFromBigEndian<quint32>(maps + 8*tableToUse + 4);
@@ -1019,6 +1033,41 @@ const uchar *QFontEngine::getCMap(const uchar *table, uint tableSize, bool *isSy
if (table + unicode_table + length > endPtr)
return 0;
*cmapSize = length;
+
+ // To support symbol fonts that contain a unicode table for the symbol area
+ // we check the cmap tables and fall back to symbol font unless that would
+ // involve losing information from the unicode table
+ if (symbolTable > -1 && ((score == Unicode) || (score == Unicode11))) {
+ const uchar *selectedTable = table + unicode_table;
+
+ // Check that none of the latin1 range are in the unicode table
+ bool unicodeTableHasLatin1 = false;
+ for (int uc=0x00; uc<0x100; ++uc) {
+ if (getTrueTypeGlyphIndex(selectedTable, uc) != 0) {
+ unicodeTableHasLatin1 = true;
+ break;
+ }
+ }
+
+ // Check that at least one symbol char is in the unicode table
+ bool unicodeTableHasSymbols = false;
+ if (!unicodeTableHasLatin1) {
+ for (int uc=0xf000; uc<0xf100; ++uc) {
+ if (getTrueTypeGlyphIndex(selectedTable, uc) != 0) {
+ unicodeTableHasSymbols = true;
+ break;
+ }
+ }
+ }
+
+ // Fall back to symbol table
+ if (!unicodeTableHasLatin1 && unicodeTableHasSymbols) {
+ tableToUse = symbolTable;
+ score = Symbol;
+ goto resolveTable;
+ }
+ }
+
return table + unicode_table;
}
diff --git a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
index eceed06..b3458af 100644
--- a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
@@ -134,8 +134,7 @@ QGLEngineSharedShaders::QGLEngineSharedShaders(const QGLContext* context)
code[ShockingPinkSrcFragmentShader] = qglslShockingPinkSrcFragmentShader;
code[MaskFragmentShader] = qglslMaskFragmentShader;
- code[RgbMaskFragmentShaderPass1] = qglslRgbMaskFragmentShaderPass1;
- code[RgbMaskFragmentShaderPass2] = qglslRgbMaskFragmentShaderPass2;
+ code[RgbMaskFragmentShader] = ""; //###
code[RgbMaskWithGammaFragmentShader] = ""; //###
code[MultiplyCompositionModeFragmentShader] = ""; //###
@@ -588,15 +587,10 @@ bool QGLEngineShaderManager::useCorrectShaderProg()
if (maskType == PixelMask) {
maskShaderName = QGLEngineSharedShaders::MaskFragmentShader;
texCoords = true;
- } else if (maskType == SubPixelMaskPass1) {
- maskShaderName = QGLEngineSharedShaders::RgbMaskFragmentShaderPass1;
- texCoords = true;
- } else if (maskType == SubPixelMaskPass2) {
- maskShaderName = QGLEngineSharedShaders::RgbMaskFragmentShaderPass2;
- texCoords = true;
+ } else if (maskType == SubPixelMask) {
+ maskShaderName = QGLEngineSharedShaders::RgbMaskFragmentShader;
} else if (maskType == SubPixelWithGammaMask) {
maskShaderName = QGLEngineSharedShaders::RgbMaskWithGammaFragmentShader;
- texCoords = true;
} else {
qCritical("QGLEngineShaderManager::useCorrectShaderProg() - Unknown mask type");
}
diff --git a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
index 47d9a2a..3c5a5f5 100644
--- a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
@@ -142,8 +142,7 @@
Masks are implementations of "qcolorp vec4 applyMask(qcolorp vec4 src)":
qglslMaskFragmentShader
- qglslRgbMaskFragmentShaderPass1
- qglslRgbMaskFragmentShaderPass2
+ qglslRgbMaskFragmentShader
qglslRgbMaskWithGammaFragmentShader
Composition modes are "qcolorp vec4 compose(qcolorp vec4 src)":
@@ -322,8 +321,7 @@ public:
ShockingPinkSrcFragmentShader,
MaskFragmentShader,
- RgbMaskFragmentShaderPass1,
- RgbMaskFragmentShaderPass2,
+ RgbMaskFragmentShader,
RgbMaskWithGammaFragmentShader,
MultiplyCompositionModeFragmentShader,
@@ -378,7 +376,7 @@ public:
QGLEngineShaderManager(QGLContext* context);
~QGLEngineShaderManager();
- enum MaskType {NoMask, PixelMask, SubPixelMaskPass1, SubPixelMaskPass2, SubPixelWithGammaMask};
+ enum MaskType {NoMask, PixelMask, SubPixelMask, SubPixelWithGammaMask};
enum PixelSrcType {
ImageSrc = Qt::TexturePattern+1,
NonPremultipliedImageSrc = Qt::TexturePattern+2,
diff --git a/src/opengl/gl2paintengineex/qglengineshadersource_p.h b/src/opengl/gl2paintengineex/qglengineshadersource_p.h
index 8ae86d3..6bcf010 100644
--- a/src/opengl/gl2paintengineex/qglengineshadersource_p.h
+++ b/src/opengl/gl2paintengineex/qglengineshadersource_p.h
@@ -401,39 +401,6 @@ static const char* const qglslMaskFragmentShader = "\
return src * mask.a; \
}";
-// For source over with subpixel antialiasing, the final color is calculated per component as follows
-// (.a is alpha component, .c is red, green or blue component):
-// alpha = src.a * mask.c * opacity
-// dest.c = dest.c * (1 - alpha) + src.c * alpha
-//
-// In the first pass, calculate: dest.c = dest.c * (1 - alpha) with blend funcs: zero, 1 - source color
-// In the second pass, calculate: dest.c = dest.c + src.c * alpha with blend funcs: one, one
-//
-// If source is a solid color (src is constant), only the first pass is needed, with blend funcs: constant, 1 - source color
-
-// For source composition with subpixel antialiasing, the final color is calculated per component as follows:
-// alpha = src.a * mask.c * opacity
-// dest.c = dest.c * (1 - mask.c) + src.c * alpha
-//
-
-static const char* const qglslRgbMaskFragmentShaderPass1 = "\
- varying highp vec2 textureCoords;\
- uniform lowp sampler2D maskTexture;\
- lowp vec4 applyMask(lowp vec4 src) \
- {\
- lowp vec4 mask = texture2D(maskTexture, textureCoords); \
- return src.a * mask; \
- }";
-
-static const char* const qglslRgbMaskFragmentShaderPass2 = "\
- varying highp vec2 textureCoords;\
- uniform lowp sampler2D maskTexture;\
- lowp vec4 applyMask(lowp vec4 src) \
- {\
- lowp vec4 mask = texture2D(maskTexture, textureCoords); \
- return src * mask; \
- }";
-
/*
Left to implement:
RgbMaskFragmentShader,
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index 20bbc1e..837d055 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -90,10 +90,6 @@ static const GLuint QT_IMAGE_TEXTURE_UNIT = 0; //Can be the same as brush
static const GLuint QT_MASK_TEXTURE_UNIT = 1;
static const GLuint QT_BACKGROUND_TEXTURE_UNIT = 2;
-#ifdef Q_WS_WIN
-extern Q_GUI_EXPORT bool qt_cleartype_enabled;
-#endif
-
class QGLTextureGlyphCache : public QObject, public QTextureGlyphCache
{
Q_OBJECT
@@ -104,7 +100,6 @@ public:
virtual void createTextureData(int width, int height);
virtual void resizeTextureData(int width, int height);
virtual void fillTexture(const Coord &c, glyph_t glyph);
- virtual int glyphMargin() const;
inline GLuint texture() const { return m_texture; }
@@ -295,7 +290,7 @@ void QGLTextureGlyphCache::fillTexture(const Coord &c, glyph_t glyph)
glBindTexture(GL_TEXTURE_2D, m_texture);
if (mask.format() == QImage::Format_RGB32) {
- glTexSubImage2D(GL_TEXTURE_2D, 0, c.x, c.y, maskWidth, maskHeight, GL_BGRA, GL_UNSIGNED_BYTE, mask.bits());
+ glTexSubImage2D(GL_TEXTURE_2D, 0, c.x, m_height - c.y, maskWidth, maskHeight, GL_BGRA, GL_UNSIGNED_BYTE, mask.bits());
} else {
#ifdef QT_OPENGL_ES2
glTexSubImage2D(GL_TEXTURE_2D, 0, c.x, c.y, maskWidth, maskHeight, GL_ALPHA, GL_UNSIGNED_BYTE, mask.bits());
@@ -315,15 +310,6 @@ void QGLTextureGlyphCache::fillTexture(const Coord &c, glyph_t glyph)
}
}
-int QGLTextureGlyphCache::glyphMargin() const
-{
-#ifdef Q_WS_MAC
- return 2;
-#else
- return m_type == QFontEngineGlyphCache::Raster_RGBMask ? 2 : 0;
-#endif
-}
-
extern QImage qt_imageForBrush(int brushStyle, bool invert);
////////////////////////////////// Private Methods //////////////////////////////////////////
@@ -1210,12 +1196,6 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem
if (ti.fontEngine->fontDef.pixelSize * qSqrt(s->matrix.determinant()) >= 64)
drawCached = false;
- if (d->glyphCacheType == QFontEngineGlyphCache::Raster_RGBMask
- && state()->composition_mode != QPainter::CompositionMode_Source
- && state()->composition_mode != QPainter::CompositionMode_SourceOver) {
- drawCached = false;
- }
-
if (drawCached) {
d->drawCachedGlyphs(p, ti);
return;
@@ -1236,7 +1216,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(const QPointF &p, const QTextIte
QFontEngineGlyphCache::Type glyphType = ti.fontEngine->glyphFormat >= 0
? QFontEngineGlyphCache::Type(ti.fontEngine->glyphFormat)
- : glyphCacheType;
+ : QFontEngineGlyphCache::Raster_A8;
QGLTextureGlyphCache *cache =
(QGLTextureGlyphCache *) ti.fontEngine->glyphCache(ctx, s->matrix);
@@ -1255,6 +1235,12 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(const QPointF &p, const QTextIte
transferMode(BrushDrawingMode);
transferMode(TextDrawingMode);
+ if (glyphType == QFontEngineGlyphCache::Raster_A8)
+ shaderManager->setMaskType(QGLEngineShaderManager::PixelMask);
+ else if (glyphType == QFontEngineGlyphCache::Raster_RGBMask)
+ shaderManager->setMaskType(QGLEngineShaderManager::SubPixelMask);
+ //### TODO: Gamma correction
+
int margin = cache->glyphMargin();
GLfloat dx = 1.0 / cache->width();
@@ -1275,96 +1261,10 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(const QPointF &p, const QTextIte
textureCoordinateArray.addRect(QRectF(c.x*dx, c.y*dy, c.w * dx, c.h * dy));
}
- if (vertexCoordinateArray.data() != oldVertexCoordinateDataPtr)
- glVertexAttribPointer(QT_VERTEX_COORDS_ATTR, 2, GL_FLOAT, GL_FALSE, 0, vertexCoordinateArray.data());
- if (textureCoordinateArray.data() != oldTextureCoordinateDataPtr)
- glVertexAttribPointer(QT_TEXTURE_COORDS_ATTR, 2, GL_FLOAT, GL_FALSE, 0, textureCoordinateArray.data());
-
QBrush pensBrush = q->state()->pen.brush();
setBrush(&pensBrush);
- if (glyphType == QFontEngineGlyphCache::Raster_A8) {
-
- // Greyscale antialiasing
-
- shaderManager->setMaskType(QGLEngineShaderManager::PixelMask);
- prepareForDraw(false); // Text always causes src pixels to be transparent
- } else if (glyphType == QFontEngineGlyphCache::Raster_RGBMask) {
-
- // Subpixel antialiasing without gamma correction
-
- QPainter::CompositionMode compMode = q->state()->composition_mode;
- Q_ASSERT(compMode == QPainter::CompositionMode_Source
- || compMode == QPainter::CompositionMode_SourceOver);
-
- shaderManager->setMaskType(QGLEngineShaderManager::SubPixelMaskPass1);
-
- if (pensBrush.style() == Qt::SolidPattern) {
- // Solid patterns can get away with only one pass.
- QColor c = pensBrush.color();
- qreal oldOpacity = q->state()->opacity;
- if (compMode == QPainter::CompositionMode_Source) {
- c = premultiplyColor(c, q->state()->opacity);
- q->state()->opacity = 1;
- opacityUniformDirty = true;
- }
-
- compositionModeDirty = false; // I can handle this myself, thank you very much
- prepareForDraw(false); // Text always causes src pixels to be transparent
-
- // prepareForDraw() have set the opacity on the current shader, so the opacity state can now be reset.
- if (compMode == QPainter::CompositionMode_Source) {
- q->state()->opacity = oldOpacity;
- opacityUniformDirty = true;
- }
-
- glEnable(GL_BLEND);
- glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_SRC_COLOR);
- glBlendColor(c.redF(), c.greenF(), c.blueF(), c.alphaF());
- } else {
- // Other brush styles need two passes.
-
- qreal oldOpacity = q->state()->opacity;
- if (compMode == QPainter::CompositionMode_Source) {
- q->state()->opacity = 1;
- opacityUniformDirty = true;
- pensBrush = Qt::white;
- setBrush(&pensBrush);
- }
-
- compositionModeDirty = false; // I can handle this myself, thank you very much
- prepareForDraw(false); // Text always causes src pixels to be transparent
- glEnable(GL_BLEND);
- glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
-
- glActiveTexture(GL_TEXTURE0 + QT_MASK_TEXTURE_UNIT);
- glBindTexture(GL_TEXTURE_2D, cache->texture());
- updateTextureFilter(GL_TEXTURE_2D, GL_REPEAT, false);
-
-#ifndef QT_OPENGL_ES_2
- if (inRenderText)
- shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::Depth), zValueForRenderText());
-#endif
- shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::MaskTexture), QT_MASK_TEXTURE_UNIT);
- glDrawArrays(GL_TRIANGLES, 0, 6 * glyphs.size());
-
- shaderManager->setMaskType(QGLEngineShaderManager::SubPixelMaskPass2);
-
- if (compMode == QPainter::CompositionMode_Source) {
- q->state()->opacity = oldOpacity;
- opacityUniformDirty = true;
- pensBrush = q->state()->pen.brush();
- setBrush(&pensBrush);
- }
-
- compositionModeDirty = false;
- prepareForDraw(false); // Text always causes src pixels to be transparent
- glEnable(GL_BLEND);
- glBlendFunc(GL_ONE, GL_ONE);
- }
- compositionModeDirty = true;
- }
- //### TODO: Gamma correction
+ prepareForDraw(false); // Text always causes src pixels to be transparent
glActiveTexture(GL_TEXTURE0 + QT_MASK_TEXTURE_UNIT);
glBindTexture(GL_TEXTURE_2D, cache->texture());
@@ -1374,7 +1274,14 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(const QPointF &p, const QTextIte
if (inRenderText)
shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::Depth), zValueForRenderText());
#endif
+
shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::MaskTexture), QT_MASK_TEXTURE_UNIT);
+
+ if (vertexCoordinateArray.data() != oldVertexCoordinateDataPtr)
+ glVertexAttribPointer(QT_VERTEX_COORDS_ATTR, 2, GL_FLOAT, GL_FALSE, 0, vertexCoordinateArray.data());
+ if (textureCoordinateArray.data() != oldTextureCoordinateDataPtr)
+ glVertexAttribPointer(QT_TEXTURE_COORDS_ATTR, 2, GL_FLOAT, GL_FALSE, 0, textureCoordinateArray.data());
+
glDrawArrays(GL_TRIANGLES, 0, 6 * glyphs.size());
}
@@ -1433,17 +1340,6 @@ bool QGL2PaintEngineEx::begin(QPaintDevice *pdev)
glDisable(GL_MULTISAMPLE);
#endif
- if (d->device->format().alpha()
-#if defined(Q_WS_WIN)
- || !qt_cleartype_enabled
-#endif
- ) {
- d->glyphCacheType = QFontEngineGlyphCache::Raster_A8;
- } else {
- d->glyphCacheType = QFontEngineGlyphCache::Raster_RGBMask;
- }
-
- d->systemStateChanged();
return true;
}
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
index 8b09f41..a44be90 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
@@ -60,7 +60,6 @@
#include <private/qgl2pexvertexarray_p.h>
#include <private/qglpaintdevice_p.h>
#include <private/qglpixmapfilter_p.h>
-#include <private/qfontengine_p.h>
enum EngineMode {
ImageDrawingMode,
@@ -206,7 +205,6 @@ public:
int width, height;
QGLContext *ctx;
EngineMode mode;
- QFontEngineGlyphCache::Type glyphCacheType;
mutable QOpenGL2PaintEngineState *last_created_state;
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 1a0957c..fe676ea 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -2560,8 +2560,6 @@ static void qDrawTextureRect(const QRectF &target, GLint textureWidth, GLint tex
Draws the given texture, \a textureId, to the given target rectangle,
\a target, in OpenGL model space. The \a textureTarget should be a 2D
texture target.
-
- Equivalent to the corresponding QGLContext::drawTexture().
*/
void QGLContext::drawTexture(const QRectF &target, GLuint textureId, GLenum textureTarget)
{
@@ -2603,8 +2601,6 @@ void QGLContext::drawTexture(const QRectF &target, QMacCompatGLuint textureId, Q
Draws the given texture at the given \a point in OpenGL model
space. The \a textureTarget should be a 2D texture target.
-
- Equivalent to the corresponding QGLContext::drawTexture().
*/
void QGLContext::drawTexture(const QPointF &point, GLuint textureId, GLenum textureTarget)
{
diff --git a/src/opengl/qglextensions.cpp b/src/opengl/qglextensions.cpp
index c785d8a..3699d62 100644
--- a/src/opengl/qglextensions.cpp
+++ b/src/opengl/qglextensions.cpp
@@ -391,9 +391,8 @@ bool qt_resolve_version_2_0_functions(QGLContext *ctx)
if (glStencilOpSeparate)
return gl2supported;
- glBlendColor = (_glBlendColor) ctx->getProcAddress(QLatin1String("glBlendColor"));
glStencilOpSeparate = (_glStencilOpSeparate) ctx->getProcAddress(QLatin1String("glStencilOpSeparate"));
- if (!glBlendColor || !glStencilOpSeparate)
+ if (!glStencilOpSeparate)
gl2supported = false;
return gl2supported;
diff --git a/src/opengl/qglextensions_p.h b/src/opengl/qglextensions_p.h
index 3510765..40840b5 100644
--- a/src/opengl/qglextensions_p.h
+++ b/src/opengl/qglextensions_p.h
@@ -152,7 +152,6 @@ typedef void (APIENTRY *_glActiveStencilFaceEXT) (GLenum );
// Needed for GL2 engine:
typedef void (APIENTRY *_glStencilOpSeparate) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
typedef void (APIENTRY *_glActiveTexture) (GLenum);
-typedef void (APIENTRY *_glBlendColor) (GLclampf, GLclampf, GLclampf, GLclampf);
// EXT_GL_framebuffer_object
@@ -248,7 +247,6 @@ struct QGLExtensionFuncs
// Extras for GL2 engine:
qt_glActiveTexture = 0;
qt_glStencilOpSeparate = 0;
- qt_glBlendColor = 0;
qt_glActiveStencilFaceEXT = 0;
qt_glMultiTexCoord4f = 0;
@@ -362,8 +360,6 @@ struct QGLExtensionFuncs
// Extras needed for GL2 engine:
_glActiveTexture qt_glActiveTexture;
_glStencilOpSeparate qt_glStencilOpSeparate;
- _glBlendColor qt_glBlendColor;
-
#endif
// FBOs
@@ -578,10 +574,6 @@ struct QGLExtensionFuncs
#endif
#ifndef GL_VERSION_1_4
-#define GL_CONSTANT_COLOR 0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
-#define GL_CONSTANT_ALPHA 0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
#define GL_INCR_WRAP 0x8507
#define GL_DECR_WRAP 0x8508
#endif
@@ -725,7 +717,6 @@ struct QGLExtensionFuncs
#if !defined(QT_OPENGL_ES_2)
#define glStencilOpSeparate QGLContextPrivate::extensionFuncs(ctx).qt_glStencilOpSeparate
-#define glBlendColor QGLContextPrivate::extensionFuncs(ctx).qt_glBlendColor
#endif
#if defined(QT_OPENGL_ES_2)
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
index b5c4cc5..ce9a55c 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
@@ -250,19 +250,6 @@ bool QDirectFBPixmapData::fromDataBufferDescription(const DFBDataBufferDescripti
return false;
}
- QDirectFBPointer<IDirectFBSurface> surfaceFromDescription;
- surfaceFromDescription.reset(screen->createDFBSurface(surfaceDescription, QDirectFBScreen::DontTrackSurface, &result));
- if (!surfaceFromDescription) {
- DirectFBError("QDirectFBPixmapData::fromSurfaceDescription(): Can't create surface", result);
- return false;
- }
-
- result = provider->RenderTo(provider.data(), surfaceFromDescription.data(), 0);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBPixmapData::fromSurfaceDescription(): Can't render to surface", result);
- return false;
- }
-
DFBImageDescription imageDescription;
result = provider->GetImageDescription(provider.data(), &imageDescription);
if (result != DFB_OK) {
@@ -275,51 +262,19 @@ bool QDirectFBPixmapData::fromDataBufferDescription(const DFBDataBufferDescripti
dfbSurface = screen->createDFBSurface(QSize(surfaceDescription.width, surfaceDescription.height),
imageFormat, QDirectFBScreen::TrackSurface);
- if (alpha)
- dfbSurface->Clear(dfbSurface, 0, 0, 0, 0);
-
- DFBSurfaceBlittingFlags blittingFlags = DSBLIT_NOFX;
- if (imageDescription.caps & DICAPS_COLORKEY) {
- blittingFlags |= DSBLIT_SRC_COLORKEY;
- result = surfaceFromDescription->SetSrcColorKey(surfaceFromDescription.data(),
- imageDescription.colorkey_r,
- imageDescription.colorkey_g,
- imageDescription.colorkey_b);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBPixmapData::fromSurfaceDescription: Can't set src color key", result);
- invalidate(); // release dfbSurface
- return false;
- }
- }
- if (imageDescription.caps & DICAPS_ALPHACHANNEL) {
- blittingFlags |= DSBLIT_BLEND_ALPHACHANNEL;
- }
- result = dfbSurface->SetBlittingFlags(dfbSurface, blittingFlags);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBPixmapData::fromSurfaceDescription: Can't set blitting flags", result);
- invalidate(); // release dfbSurface
- return false;
- }
- result = dfbSurface->Blit(dfbSurface, surfaceFromDescription.data(), 0, 0, 0);
+ result = provider->RenderTo(provider.data(), dfbSurface, 0);
if (result != DFB_OK) {
- DirectFBError("QDirectFBPixmapData::fromSurfaceDescription: Can't blit to surface", result);
- invalidate(); // release dfbSurface
+ DirectFBError("QDirectFBPixmapData::fromSurfaceDescription(): Can't render to surface", result);
return false;
}
- if (blittingFlags != DSBLIT_NOFX) {
- dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
- }
-
w = surfaceDescription.width;
h = surfaceDescription.height;
is_null = (w <= 0 || h <= 0);
d = QDirectFBScreen::depth(imageFormat);
setSerialNumber(++global_ser_no);
-#if (Q_DIRECTFB_VERSION >= 0x010000)
- dfbSurface->ReleaseSource(dfbSurface);
-#endif
+
#if defined QT_DIRECTFB_IMAGEPROVIDER_KEEPALIVE
screen->setDirectFBImageProvider(providerPtr);
provider.take();
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
index febb2b2..5e8c5c6 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
@@ -75,8 +75,8 @@ QT_MODULE(Gui)
#if !defined QT_DIRECTFB_WINDOW_AS_CURSOR && !defined QT_NO_DIRECTFB_WINDOW_AS_CURSOR
#define QT_NO_DIRECTFB_WINDOW_AS_CURSOR
#endif
-#if !defined QT_NO_DIRECTFB_PALETTE && !defined QT_DIRECTFB_PALETTE
-#define QT_DIRECTFB_PALETTE
+#if !defined QT_DIRECTFB_PALETTE && !defined QT_NO_DIRECTFB_PALETTE
+#define QT_NO_DIRECTFB_PALETTE
#endif
#if !defined QT_NO_DIRECTFB_PREALLOCATED && !defined QT_DIRECTFB_PREALLOCATED
#define QT_DIRECTFB_PREALLOCATED
diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def
index 0ef2f8c..dc41f85 100644
--- a/src/s60installs/eabi/QtCoreu.def
+++ b/src/s60installs/eabi/QtCoreu.def
@@ -2066,7 +2066,7 @@ EXPORTS
_ZNK13QFSFileEngine12isSequentialEv @ 2065 NONAME
_ZNK13QFSFileEngine13caseSensitiveEv @ 2066 NONAME
_ZNK13QFSFileEngine14isRelativePathEv @ 2067 NONAME
- _ZNK13QFSFileEngine15fileNameSymbianEN19QAbstractFileEngine8FileNameE @ 2068 NONAME
+ _ZNK13QFSFileEngine15fileNameSymbianEN19QAbstractFileEngine8FileNameE @ 2068 NONAME ABSENT
_ZNK13QFSFileEngine17supportsExtensionEN19QAbstractFileEngine9ExtensionE @ 2069 NONAME
_ZNK13QFSFileEngine3posEv @ 2070 NONAME
_ZNK13QFSFileEngine4sizeEv @ 2071 NONAME
@@ -3723,4 +3723,101 @@ EXPORTS
_ZNK19QProcessEnvironment8containsERK7QString @ 3722 NONAME
_ZNK19QProcessEnvironmenteqERKS_ @ 3723 NONAME
_ZNK8QProcess18processEnvironmentEv @ 3724 NONAME
+ _Z20qt_symbianLocaleNamei @ 3725 NONAME
+ _ZN10QByteArray6insertEiPKci @ 3726 NONAME
+ _ZN10QByteArray7prependEPKci @ 3727 NONAME
+ _ZN10QEventLoop19getStaticMetaObjectEv @ 3728 NONAME
+ _ZN11QFinalState19getStaticMetaObjectEv @ 3729 NONAME
+ _ZN11QThreadPool19getStaticMetaObjectEv @ 3730 NONAME
+ _ZN11QTranslator19getStaticMetaObjectEv @ 3731 NONAME
+ _ZN12QEasingCurve19getStaticMetaObjectEv @ 3732 NONAME
+ _ZN13QHistoryState19getStaticMetaObjectEv @ 3733 NONAME
+ _ZN13QPluginLoader19getStaticMetaObjectEv @ 3734 NONAME
+ _ZN13QSharedMemory19getStaticMetaObjectEv @ 3735 NONAME
+ _ZN13QSignalMapper19getStaticMetaObjectEv @ 3736 NONAME
+ _ZN13QStateMachine19getStaticMetaObjectEv @ 3737 NONAME
+ _ZN14QAbstractState19getStaticMetaObjectEv @ 3738 NONAME
+ _ZN14QFactoryLoader19getStaticMetaObjectEv @ 3739 NONAME
+ _ZN14QTemporaryFile19getStaticMetaObjectEv @ 3740 NONAME
+ _ZN15QAnimationGroup19getStaticMetaObjectEv @ 3741 NONAME
+ _ZN15QPauseAnimation19getStaticMetaObjectEv @ 3742 NONAME
+ _ZN15QSocketNotifier19getStaticMetaObjectEv @ 3743 NONAME
+ _ZN16QCoreApplication19getStaticMetaObjectEv @ 3744 NONAME
+ _ZN16QEventTransition19getStaticMetaObjectEv @ 3745 NONAME
+ _ZN16QTextCodecPlugin19getStaticMetaObjectEv @ 3746 NONAME
+ _ZN17QSignalTransition19getStaticMetaObjectEv @ 3747 NONAME
+ _ZN17QVariantAnimation19getStaticMetaObjectEv @ 3748 NONAME
+ _ZN18QAbstractAnimation19getStaticMetaObjectEv @ 3749 NONAME
+ _ZN18QAbstractItemModel11endMoveRowsEv @ 3750 NONAME
+ _ZN18QAbstractItemModel12columnsMovedERK11QModelIndexiiS2_i @ 3751 NONAME
+ _ZN18QAbstractItemModel13beginMoveRowsERK11QModelIndexiiS2_i @ 3752 NONAME
+ _ZN18QAbstractItemModel13endResetModelEv @ 3753 NONAME
+ _ZN18QAbstractItemModel14endMoveColumnsEv @ 3754 NONAME
+ _ZN18QAbstractItemModel15beginResetModelEv @ 3755 NONAME
+ _ZN18QAbstractItemModel16beginMoveColumnsERK11QModelIndexiiS2_i @ 3756 NONAME
+ _ZN18QAbstractItemModel18rowsAboutToBeMovedERK11QModelIndexiiS2_i @ 3757 NONAME
+ _ZN18QAbstractItemModel19getStaticMetaObjectEv @ 3758 NONAME
+ _ZN18QAbstractItemModel21columnsAboutToBeMovedERK11QModelIndexiiS2_i @ 3759 NONAME
+ _ZN18QAbstractItemModel9rowsMovedERK11QModelIndexiiS2_i @ 3760 NONAME
+ _ZN18QAbstractListModel19getStaticMetaObjectEv @ 3761 NONAME
+ _ZN18QFileSystemWatcher19getStaticMetaObjectEv @ 3762 NONAME
+ _ZN18QPropertyAnimation19getStaticMetaObjectEv @ 3763 NONAME
+ _ZN19QAbstractTableModel19getStaticMetaObjectEv @ 3764 NONAME
+ _ZN19QAbstractTransition19getStaticMetaObjectEv @ 3765 NONAME
+ _ZN21QObjectCleanupHandler19getStaticMetaObjectEv @ 3766 NONAME
+ _ZN23QParallelAnimationGroup19getStaticMetaObjectEv @ 3767 NONAME
+ _ZN24QAbstractEventDispatcher19getStaticMetaObjectEv @ 3768 NONAME
+ _ZN24QNonContiguousByteDevice19getStaticMetaObjectEv @ 3769 NONAME
+ _ZN25QAbstractItemModelPrivate10itemsMovedERK11QModelIndexiiS2_iN2Qt11OrientationE @ 3770 NONAME
+ _ZN25QAbstractItemModelPrivate19itemsAboutToBeMovedERK11QModelIndexiiS2_iN2Qt11OrientationE @ 3771 NONAME
+ _ZN25QAbstractItemModelPrivate21movePersistentIndexesE7QVectorIP25QPersistentModelIndexDataEiRK11QModelIndexN2Qt11OrientationE @ 3772 NONAME
+ _ZN25QAbstractItemModelPrivate9allowMoveERK11QModelIndexiiS2_iN2Qt11OrientationE @ 3773 NONAME
+ _ZN25QSequentialAnimationGroup19getStaticMetaObjectEv @ 3774 NONAME
+ _ZN5QFile19getStaticMetaObjectEv @ 3775 NONAME
+ _ZN6QEvent19getStaticMetaObjectEv @ 3776 NONAME
+ _ZN6QState19getStaticMetaObjectEv @ 3777 NONAME
+ _ZN6QTimer19getStaticMetaObjectEv @ 3778 NONAME
+ _ZN7QBuffer19getStaticMetaObjectEv @ 3779 NONAME
+ _ZN7QLocale19getStaticMetaObjectEv @ 3780 NONAME
+ _ZN7QObject19getStaticMetaObjectEv @ 3781 NONAME
+ _ZN7QThread19getStaticMetaObjectEv @ 3782 NONAME
+ _ZN8QLibrary19getStaticMetaObjectEv @ 3783 NONAME
+ _ZN8QProcess19getStaticMetaObjectEv @ 3784 NONAME
+ _ZN9QIODevice19getStaticMetaObjectEv @ 3785 NONAME
+ _ZN9QListData7append2ERKS_ @ 3786 NONAME
+ _ZN9QListData7detach3Ev @ 3787 NONAME
+ _ZN9QMimeData19getStaticMetaObjectEv @ 3788 NONAME
+ _ZN9QSettings19getStaticMetaObjectEv @ 3789 NONAME
+ _ZN9QTimeLine19getStaticMetaObjectEv @ 3790 NONAME
+ _ZTI13QUnifiedTimer @ 3791 NONAME ; #<TI>#
+ _ZTI14QProcessActive @ 3792 NONAME ; #<TI>#
+ _ZTI18QNotifyChangeEvent @ 3793 NONAME ; #<TI>#
+ _ZTI20QEasingCurveFunction @ 3794 NONAME ; #<TI>#
+ _ZTI21QFactoryLoaderPrivate @ 3795 NONAME ; #<TI>#
+ _ZTI21QSignalEventGenerator @ 3796 NONAME ; #<TI>#
+ _ZTI22QAnimationGroupPrivate @ 3797 NONAME ; #<TI>#
+ _ZTI23QProcessManagerMediator @ 3798 NONAME ; #<TI>#
+ _ZTI24QSignalTransitionPrivate @ 3799 NONAME ; #<TI>#
+ _ZTI27QByteDeviceWrappingIoDevice @ 3800 NONAME ; #<TI>#
+ _ZTI32QSequentialAnimationGroupPrivate @ 3801 NONAME ; #<TI>#
+ _ZTI34QNonContiguousByteDeviceBufferImpl @ 3802 NONAME ; #<TI>#
+ _ZTI36QNonContiguousByteDeviceIoDeviceImpl @ 3803 NONAME ; #<TI>#
+ _ZTI37QNonContiguousByteDeviceByteArrayImpl @ 3804 NONAME ; #<TI>#
+ _ZTI38QNonContiguousByteDeviceRingBufferImpl @ 3805 NONAME ; #<TI>#
+ _ZTV13QUnifiedTimer @ 3806 NONAME ; #<VT>#
+ _ZTV14QProcessActive @ 3807 NONAME ; #<VT>#
+ _ZTV18QNotifyChangeEvent @ 3808 NONAME ; #<VT>#
+ _ZTV20QEasingCurveFunction @ 3809 NONAME ; #<VT>#
+ _ZTV21QFactoryLoaderPrivate @ 3810 NONAME ; #<VT>#
+ _ZTV21QSignalEventGenerator @ 3811 NONAME ; #<VT>#
+ _ZTV22QAnimationGroupPrivate @ 3812 NONAME ; #<VT>#
+ _ZTV23QProcessManagerMediator @ 3813 NONAME ; #<VT>#
+ _ZTV24QSignalTransitionPrivate @ 3814 NONAME ; #<VT>#
+ _ZTV27QByteDeviceWrappingIoDevice @ 3815 NONAME ; #<VT>#
+ _ZTV32QSequentialAnimationGroupPrivate @ 3816 NONAME ; #<VT>#
+ _ZTV34QNonContiguousByteDeviceBufferImpl @ 3817 NONAME ; #<VT>#
+ _ZTV36QNonContiguousByteDeviceIoDeviceImpl @ 3818 NONAME ; #<VT>#
+ _ZTV37QNonContiguousByteDeviceByteArrayImpl @ 3819 NONAME ; #<VT>#
+ _ZTV38QNonContiguousByteDeviceRingBufferImpl @ 3820 NONAME ; #<VT>#
+ _Zls6QDebugRK8QMargins @ 3821 NONAME
diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def
index 0019187..a605f6f 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -4195,7 +4195,7 @@ EXPORTS
_ZN19QApplicationPrivate15graphics_systemE @ 4194 NONAME DATA 4
_ZN19QApplicationPrivate15process_cmdlineEv @ 4195 NONAME
_ZN19QApplicationPrivate16isBlockedByModalEP7QWidget @ 4196 NONAME
- _ZN19QApplicationPrivate16keypadNavigationE @ 4197 NONAME DATA 1
+ _ZN19QApplicationPrivate16keypadNavigationE @ 4197 NONAME DATA 1 ABSENT
_ZN19QApplicationPrivate16modifier_buttonsE @ 4198 NONAME DATA 4
_ZN19QApplicationPrivate16setSystemPaletteERK8QPalette @ 4199 NONAME
_ZN19QApplicationPrivate17cursor_flash_timeE @ 4200 NONAME DATA 4
@@ -11925,12 +11925,12 @@ EXPORTS
_ZN19QKeyEventTransitionD1Ev @ 11924 NONAME
_ZN19QKeyEventTransitionD2Ev @ 11925 NONAME
_ZN20QGraphicsItemPrivate11removeChildEP13QGraphicsItem @ 11926 NONAME
- _ZN20QGraphicsItemPrivate11setSubFocusEv @ 11927 NONAME
- _ZN20QGraphicsItemPrivate13clearSubFocusEv @ 11928 NONAME
+ _ZN20QGraphicsItemPrivate11setSubFocusEv @ 11927 NONAME ABSENT
+ _ZN20QGraphicsItemPrivate13clearSubFocusEv @ 11928 NONAME ABSENT
_ZN20QGraphicsItemPrivate15resetFocusProxyEv @ 11929 NONAME
_ZN20QGraphicsItemPrivate18setTransformHelperERK10QTransform @ 11930 NONAME
_ZN20QGraphicsItemPrivate19setParentItemHelperEP13QGraphicsItem @ 11931 NONAME
- _ZN20QGraphicsItemPrivate20ensureSceneTransformEv @ 11932 NONAME
+ _ZN20QGraphicsItemPrivate20ensureSceneTransformEv @ 11932 NONAME ABSENT
_ZN20QGraphicsItemPrivate23appendGraphicsTransformEP18QGraphicsTransform @ 11933 NONAME
_ZN20QGraphicsItemPrivate26childrenBoundingRectHelperEP10QTransformP6QRectF @ 11934 NONAME
_ZN20QGraphicsItemPrivate29ensureSceneTransformRecursiveEPP13QGraphicsItem @ 11935 NONAME
@@ -11988,7 +11988,7 @@ EXPORTS
_ZN25QGraphicsSceneLinearIndex11qt_metacallEN11QMetaObject4CallEiPPv @ 11987 NONAME
_ZN25QGraphicsSceneLinearIndex11qt_metacastEPKc @ 11988 NONAME
_ZN25QGraphicsSceneLinearIndex16staticMetaObjectE @ 11989 NONAME DATA 16
- _ZN26QAbstractScrollAreaPrivate19_q_gestureTriggeredEv @ 11990 NONAME
+ _ZN26QAbstractScrollAreaPrivate19_q_gestureTriggeredEv @ 11990 NONAME ABSENT
_ZN26QBasicMouseEventTransition11qt_metacallEN11QMetaObject4CallEiPPv @ 11991 NONAME
_ZN26QBasicMouseEventTransition11qt_metacastEPKc @ 11992 NONAME
_ZN26QBasicMouseEventTransition12onTransitionEP6QEvent @ 11993 NONAME
@@ -12046,7 +12046,7 @@ EXPORTS
_ZN8QGesture5resetEv @ 12045 NONAME
_ZN8QGesture7startedEv @ 12046 NONAME
_ZN8QGesture8finishedEv @ 12047 NONAME
- _ZN8QGesture9cancelledEv @ 12048 NONAME
+ _ZN8QGesture8canceledEv @ 12048 NONAME
_ZN8QGesture9triggeredEv @ 12049 NONAME
_ZN8QGestureC2EP7QObject @ 12050 NONAME ABSENT
_ZN8QGestureC2ER15QGesturePrivateP7QObject @ 12051 NONAME ABSENT
@@ -12140,7 +12140,7 @@ EXPORTS
_ZNK11QTouchEvent10TouchPoint9isPrimaryEv @ 12139 NONAME
_ZNK11QTouchEvent10TouchPoint9sceneRectEv @ 12140 NONAME
_ZNK11QTouchEvent10TouchPoint9screenPosEv @ 12141 NONAME
- _ZNK11QVectorPath20convertToPainterPathEv @ 12142 NONAME
+ _ZNK11QVectorPath20convertToPainterPathEv @ 12142 NONAME ABSENT
_ZNK12QLineControl10cursorRectEv @ 12143 NONAME
_ZNK12QLineControl10findInMaskEibb5QChar @ 12144 NONAME
_ZNK12QLineControl10maskStringEjRK7QStringb @ 12145 NONAME
@@ -12364,11 +12364,11 @@ EXPORTS
_ZN21QGraphicsAnchorLayout10invalidateEv @ 12363 NONAME
_ZN21QGraphicsAnchorLayout10setSpacingEf @ 12364 NONAME
_ZN21QGraphicsAnchorLayout11setGeometryERK6QRectF @ 12365 NONAME
- _ZN21QGraphicsAnchorLayout12removeAnchorEP19QGraphicsLayoutItemN2Qt11AnchorPointES1_S3_ @ 12366 NONAME
+ _ZN21QGraphicsAnchorLayout12removeAnchorEP19QGraphicsLayoutItemN2Qt11AnchorPointES1_S3_ @ 12366 NONAME ABSENT
_ZN21QGraphicsAnchorLayout16addCornerAnchorsEP19QGraphicsLayoutItemN2Qt6CornerES1_S3_ @ 12367 NONAME
- _ZN21QGraphicsAnchorLayout16setAnchorSpacingEPK19QGraphicsLayoutItemN2Qt11AnchorPointES2_S4_f @ 12368 NONAME
+ _ZN21QGraphicsAnchorLayout16setAnchorSpacingEPK19QGraphicsLayoutItemN2Qt11AnchorPointES2_S4_f @ 12368 NONAME ABSENT
_ZN21QGraphicsAnchorLayout18setVerticalSpacingEf @ 12369 NONAME
- _ZN21QGraphicsAnchorLayout18unsetAnchorSpacingEPK19QGraphicsLayoutItemN2Qt11AnchorPointES2_S4_ @ 12370 NONAME
+ _ZN21QGraphicsAnchorLayout18unsetAnchorSpacingEPK19QGraphicsLayoutItemN2Qt11AnchorPointES2_S4_ @ 12370 NONAME ABSENT
_ZN21QGraphicsAnchorLayout20setHorizontalSpacingEf @ 12371 NONAME
_ZN21QGraphicsAnchorLayout8removeAtEi @ 12372 NONAME
_ZN21QGraphicsAnchorLayout9addAnchorEP19QGraphicsLayoutItemN2Qt11AnchorPointES1_S3_ @ 12373 NONAME
@@ -12461,7 +12461,7 @@ EXPORTS
_ZNK20QGraphicsItemPrivate21effectiveBoundingRectEv @ 12460 NONAME
_ZNK20QGraphicsItemPrivate26sceneEffectiveBoundingRectEv @ 12461 NONAME
_ZNK20QGraphicsItemPrivate5depthEv @ 12462 NONAME
- _ZNK21QGraphicsAnchorLayout13anchorSpacingEPK19QGraphicsLayoutItemN2Qt11AnchorPointES2_S4_ @ 12463 NONAME
+ _ZNK21QGraphicsAnchorLayout13anchorSpacingEPK19QGraphicsLayoutItemN2Qt11AnchorPointES2_S4_ @ 12463 NONAME ABSENT
_ZNK21QGraphicsAnchorLayout15verticalSpacingEv @ 12464 NONAME
_ZNK21QGraphicsAnchorLayout17horizontalSpacingEv @ 12465 NONAME
_ZNK21QGraphicsAnchorLayout5countEv @ 12466 NONAME
@@ -12510,4 +12510,434 @@ EXPORTS
_ZTV23QGraphicsPixelizeEffect @ 12509 NONAME
_ZTV24QGraphicsGrayscaleEffect @ 12510 NONAME
_ZTV25QGraphicsDropShadowEffect @ 12511 NONAME
+ _ZN10QBoxLayout19getStaticMetaObjectEv @ 12512 NONAME
+ _ZN10QClipboard19getStaticMetaObjectEv @ 12513 NONAME
+ _ZN10QCompleter19getStaticMetaObjectEv @ 12514 NONAME
+ _ZN10QLCDNumber19getStaticMetaObjectEv @ 12515 NONAME
+ _ZN10QScrollBar19getStaticMetaObjectEv @ 12516 NONAME
+ _ZN10QStatusBar19getStaticMetaObjectEv @ 12517 NONAME
+ _ZN10QTabWidget19getStaticMetaObjectEv @ 12518 NONAME
+ _ZN10QTableView19getStaticMetaObjectEv @ 12519 NONAME
+ _ZN10QTextFrame19getStaticMetaObjectEv @ 12520 NONAME
+ _ZN10QTextTable19getStaticMetaObjectEv @ 12521 NONAME
+ _ZN10QUndoGroup19getStaticMetaObjectEv @ 12522 NONAME
+ _ZN10QUndoStack19getStaticMetaObjectEv @ 12523 NONAME
+ _ZN10QValidator19getStaticMetaObjectEv @ 12524 NONAME
+ _ZN10QWorkspace19getStaticMetaObjectEv @ 12525 NONAME
+ _ZN11QColumnView19getStaticMetaObjectEv @ 12526 NONAME
+ _ZN11QDockWidget19getStaticMetaObjectEv @ 12527 NONAME
+ _ZN11QFileDialog19getStaticMetaObjectEv @ 12528 NONAME
+ _ZN11QFocusFrame19getStaticMetaObjectEv @ 12529 NONAME
+ _ZN11QFontDialog19getStaticMetaObjectEv @ 12530 NONAME
+ _ZN11QFormLayout19getStaticMetaObjectEv @ 12531 NONAME
+ _ZN11QGridLayout19getStaticMetaObjectEv @ 12532 NONAME
+ _ZN11QHBoxLayout19getStaticMetaObjectEv @ 12533 NONAME
+ _ZN11QHeaderView19getStaticMetaObjectEv @ 12534 NONAME
+ _ZN11QListWidget19getStaticMetaObjectEv @ 12535 NONAME
+ _ZN11QMainWindow19getStaticMetaObjectEv @ 12536 NONAME
+ _ZN11QMessageBox19getStaticMetaObjectEv @ 12537 NONAME
+ _ZN11QPanGesture19getStaticMetaObjectEv @ 12538 NONAME
+ _ZN11QPixmapData8fromDataEPKhjPKc6QFlagsIN2Qt19ImageConversionFlagEE @ 12539 NONAME
+ _ZN11QProxyModel19getStaticMetaObjectEv @ 12540 NONAME
+ _ZN11QProxyStyle19getStaticMetaObjectEv @ 12541 NONAME
+ _ZN11QPushButton19getStaticMetaObjectEv @ 12542 NONAME
+ _ZN11QRubberBand19getStaticMetaObjectEv @ 12543 NONAME
+ _ZN11QScrollArea19getStaticMetaObjectEv @ 12544 NONAME
+ _ZN11QSizePolicy19getStaticMetaObjectEv @ 12545 NONAME
+ _ZN11QTextFormat19getStaticMetaObjectEv @ 12546 NONAME
+ _ZN11QTextObject19getStaticMetaObjectEv @ 12547 NONAME
+ _ZN11QToolButton19getStaticMetaObjectEv @ 12548 NONAME
+ _ZN11QTreeWidget19getStaticMetaObjectEv @ 12549 NONAME
+ _ZN11QVBoxLayout19getStaticMetaObjectEv @ 12550 NONAME
+ _ZN11QWizardPage19getStaticMetaObjectEv @ 12551 NONAME
+ _ZN12QActionGroup19getStaticMetaObjectEv @ 12552 NONAME
+ _ZN12QApplication14navigationModeEv @ 12553 NONAME
+ _ZN12QApplication14overrideCursorEv @ 12554 NONAME
+ _ZN12QApplication17setNavigationModeEN2Qt14NavigationModeE @ 12555 NONAME
+ _ZN12QApplication17setOverrideCursorERK7QCursor @ 12556 NONAME
+ _ZN12QApplication19getStaticMetaObjectEv @ 12557 NONAME
+ _ZN12QApplication20changeOverrideCursorERK7QCursor @ 12558 NONAME
+ _ZN12QApplication21restoreOverrideCursorEv @ 12559 NONAME
+ _ZN12QButtonGroup19getStaticMetaObjectEv @ 12560 NONAME
+ _ZN12QColorDialog19getStaticMetaObjectEv @ 12561 NONAME
+ _ZN12QCommonStyle19getStaticMetaObjectEv @ 12562 NONAME
+ _ZN12QImageReader26setDecideFormatFromContentEb @ 12563 NONAME
+ _ZN12QInputDialog19getStaticMetaObjectEv @ 12564 NONAME
+ _ZN12QLineControl19getStaticMetaObjectEv @ 12565 NONAME
+ _ZN12QPaintBuffer13beginNewFrameEv @ 12566 NONAME
+ _ZN12QPaintBuffer15setBoundingRectERK6QRectF @ 12567 NONAME
+ _ZN12QPaintBufferC1ERKS_ @ 12568 NONAME
+ _ZN12QPaintBufferC1Ev @ 12569 NONAME
+ _ZN12QPaintBufferC2ERKS_ @ 12570 NONAME
+ _ZN12QPaintBufferC2Ev @ 12571 NONAME
+ _ZN12QPaintBufferD0Ev @ 12572 NONAME
+ _ZN12QPaintBufferD1Ev @ 12573 NONAME
+ _ZN12QPaintBufferD2Ev @ 12574 NONAME
+ _ZN12QPaintBufferaSERKS_ @ 12575 NONAME
+ _ZN12QProgressBar19getStaticMetaObjectEv @ 12576 NONAME
+ _ZN12QRadioButton19getStaticMetaObjectEv @ 12577 NONAME
+ _ZN12QStylePlugin19getStaticMetaObjectEv @ 12578 NONAME
+ _ZN12QTableWidget19getStaticMetaObjectEv @ 12579 NONAME
+ _ZN12QTextBrowser19getStaticMetaObjectEv @ 12580 NONAME
+ _ZN12QTextControl19getStaticMetaObjectEv @ 12581 NONAME
+ _ZN13QDateTimeEdit19getStaticMetaObjectEv @ 12582 NONAME
+ _ZN13QErrorMessage19getStaticMetaObjectEv @ 12583 NONAME
+ _ZN13QFontComboBox19getStaticMetaObjectEv @ 12584 NONAME
+ _ZN13QFontDatabase19getStaticMetaObjectEv @ 12585 NONAME
+ _ZN13QGraphicsItem11unsetCursorEv @ 12586 NONAME
+ _ZN13QGraphicsItem9setActiveEb @ 12587 NONAME
+ _ZN13QGraphicsItem9setCursorERK7QCursor @ 12588 NONAME
+ _ZN13QGraphicsView19getStaticMetaObjectEv @ 12589 NONAME
+ _ZN13QInputContext19getStaticMetaObjectEv @ 12590 NONAME
+ _ZN13QIntValidator19getStaticMetaObjectEv @ 12591 NONAME
+ _ZN13QItemDelegate19getStaticMetaObjectEv @ 12592 NONAME
+ _ZN13QMdiSubWindow19getStaticMetaObjectEv @ 12593 NONAME
+ _ZN13QPinchGesture19getStaticMetaObjectEv @ 12594 NONAME
+ _ZN13QPixmapFilter19getStaticMetaObjectEv @ 12595 NONAME
+ _ZN13QSplashScreen19getStaticMetaObjectEv @ 12596 NONAME
+ _ZN13QSwipeGesture11eventFilterEP7QObjectP6QEvent @ 12597 NONAME
+ _ZN13QSwipeGesture11filterEventEP6QEvent @ 12598 NONAME
+ _ZN13QSwipeGesture11qt_metacallEN11QMetaObject4CallEiPPv @ 12599 NONAME
+ _ZN13QSwipeGesture11qt_metacastEPKc @ 12600 NONAME
+ _ZN13QSwipeGesture16staticMetaObjectE @ 12601 NONAME DATA 16
+ _ZN13QSwipeGesture19getStaticMetaObjectEv @ 12602 NONAME
+ _ZN13QSwipeGesture5resetEv @ 12603 NONAME
+ _ZN13QSwipeGestureC1EP7QWidgetP7QObject @ 12604 NONAME
+ _ZN13QSwipeGestureC2EP7QWidgetP7QObject @ 12605 NONAME
+ _ZN13QTextDocument19getStaticMetaObjectEv @ 12606 NONAME
+ _ZN13QWidgetAction19getStaticMetaObjectEv @ 12607 NONAME
+ _ZN13QWindowsStyle19getStaticMetaObjectEv @ 12608 NONAME
+ _ZN14QDesktopWidget19getStaticMetaObjectEv @ 12609 NONAME
+ _ZN14QDoubleSpinBox19getStaticMetaObjectEv @ 12610 NONAME
+ _ZN14QGraphicsScale19getStaticMetaObjectEv @ 12611 NONAME
+ _ZN14QGraphicsScene14setActivePanelEP13QGraphicsItem @ 12612 NONAME
+ _ZN14QGraphicsScene19getStaticMetaObjectEv @ 12613 NONAME
+ _ZN14QImageIOPlugin19getStaticMetaObjectEv @ 12614 NONAME
+ _ZN14QPlainTextEdit19getStaticMetaObjectEv @ 12615 NONAME
+ _ZN14QStackedLayout19getStaticMetaObjectEv @ 12616 NONAME
+ _ZN14QStackedWidget19getStaticMetaObjectEv @ 12617 NONAME
+ _ZN14QWidgetPrivate13setCursor_sysERK7QCursor @ 12618 NONAME
+ _ZN14QWidgetPrivate15unsetCursor_sysEv @ 12619 NONAME
+ _ZN15QAbstractButton19getStaticMetaObjectEv @ 12620 NONAME
+ _ZN15QAbstractSlider19getStaticMetaObjectEv @ 12621 NONAME
+ _ZN15QCalendarWidget19getStaticMetaObjectEv @ 12622 NONAME
+ _ZN15QColumnViewGrip19getStaticMetaObjectEv @ 12623 NONAME
+ _ZN15QGraphicsAnchor10setSpacingEf @ 12624 NONAME
+ _ZN15QGraphicsAnchor11qt_metacallEN11QMetaObject4CallEiPPv @ 12625 NONAME
+ _ZN15QGraphicsAnchor11qt_metacastEPKc @ 12626 NONAME
+ _ZN15QGraphicsAnchor12unsetSpacingEv @ 12627 NONAME
+ _ZN15QGraphicsAnchor16staticMetaObjectE @ 12628 NONAME DATA 16
+ _ZN15QGraphicsAnchor19getStaticMetaObjectEv @ 12629 NONAME
+ _ZN15QGraphicsAnchorC1EP21QGraphicsAnchorLayout @ 12630 NONAME
+ _ZN15QGraphicsAnchorC2EP21QGraphicsAnchorLayout @ 12631 NONAME
+ _ZN15QGraphicsAnchorD0Ev @ 12632 NONAME
+ _ZN15QGraphicsAnchorD1Ev @ 12633 NONAME
+ _ZN15QGraphicsAnchorD2Ev @ 12634 NONAME
+ _ZN15QGraphicsEffect19getStaticMetaObjectEv @ 12635 NONAME
+ _ZN15QGraphicsEffect6updateEv @ 12636 NONAME
+ _ZN15QGraphicsObject19getStaticMetaObjectEv @ 12637 NONAME
+ _ZN15QGraphicsWidget19getStaticMetaObjectEv @ 12638 NONAME
+ _ZN15QProgressDialog19getStaticMetaObjectEv @ 12639 NONAME
+ _ZN15QSessionManager19getStaticMetaObjectEv @ 12640 NONAME
+ _ZN15QSplitterHandle19getStaticMetaObjectEv @ 12641 NONAME
+ _ZN15QTextBlockGroup19getStaticMetaObjectEv @ 12642 NONAME
+ _ZN16QAbstractSpinBox19getStaticMetaObjectEv @ 12643 NONAME
+ _ZN16QDialogButtonBox19getStaticMetaObjectEv @ 12644 NONAME
+ _ZN16QDoubleValidator19getStaticMetaObjectEv @ 12645 NONAME
+ _ZN16QFileSystemModel19getStaticMetaObjectEv @ 12646 NONAME
+ _ZN16QPainterReplayer14setupTransformEP8QPainter @ 12647 NONAME
+ _ZN16QPainterReplayer4drawERK12QPaintBufferP8QPainteri @ 12648 NONAME
+ _ZN16QPainterReplayer7processERK19QPaintBufferCommand @ 12649 NONAME
+ _ZN16QRegExpValidator19getStaticMetaObjectEv @ 12650 NONAME
+ _ZN16QStringListModel19getStaticMetaObjectEv @ 12651 NONAME
+ _ZN16QStyleSheetStyle19getStaticMetaObjectEv @ 12652 NONAME
+ _ZN17QAbstractItemView19getStaticMetaObjectEv @ 12653 NONAME
+ _ZN17QDataWidgetMapper19getStaticMetaObjectEv @ 12654 NONAME
+ _ZN17QDockWidgetLayout19getStaticMetaObjectEv @ 12655 NONAME
+ _ZN17QFileInfoGatherer19getStaticMetaObjectEv @ 12656 NONAME
+ _ZN17QGraphicsRotation19getStaticMetaObjectEv @ 12657 NONAME
+ _ZN17QGraphicsTextItem19getStaticMetaObjectEv @ 12658 NONAME
+ _ZN17QIconEnginePlugin19getStaticMetaObjectEv @ 12659 NONAME
+ _ZN17QMainWindowLayout19getStaticMetaObjectEv @ 12660 NONAME
+ _ZN17QPixmapBlurFilter19getStaticMetaObjectEv @ 12661 NONAME
+ _ZN18QCommandLinkButton19getStaticMetaObjectEv @ 12662 NONAME
+ _ZN18QGraphicsTransform19getStaticMetaObjectEv @ 12663 NONAME
+ _ZN18QStandardItemModel19getStaticMetaObjectEv @ 12664 NONAME
+ _ZN18QSyntaxHighlighter19getStaticMetaObjectEv @ 12665 NONAME
+ _ZN19QAbstractProxyModel19getStaticMetaObjectEv @ 12666 NONAME
+ _ZN19QAbstractScrollArea19getStaticMetaObjectEv @ 12667 NONAME
+ _ZN19QApplicationPrivate14navigationModeE @ 12668 NONAME DATA 4
+ _ZN19QApplicationPrivate17setNavigationModeEN2Qt14NavigationModeE @ 12669 NONAME
+ _ZN19QCoeFepInputContext19getStaticMetaObjectEv @ 12670 NONAME
+ _ZN19QEventDispatcherS6019getStaticMetaObjectEv @ 12671 NONAME
+ _ZN19QGraphicsBlurEffect19getStaticMetaObjectEv @ 12672 NONAME
+ _ZN19QGraphicsSceneIndex19getStaticMetaObjectEv @ 12673 NONAME
+ _ZN19QIconEnginePluginV219getStaticMetaObjectEv @ 12674 NONAME
+ _ZN19QInputContextPlugin19getStaticMetaObjectEv @ 12675 NONAME
+ _ZN19QItemSelectionModel19getStaticMetaObjectEv @ 12676 NONAME
+ _ZN19QKeyEventTransition19getStaticMetaObjectEv @ 12677 NONAME
+ _ZN19QStyledItemDelegate19getStaticMetaObjectEv @ 12678 NONAME
+ _ZN19QTextDocumentLayout19getStaticMetaObjectEv @ 12679 NONAME
+ _ZN20QGraphicsItemPrivate11setSubFocusEP13QGraphicsItem @ 12680 NONAME
+ _ZN20QGraphicsItemPrivate13clearSubFocusEP13QGraphicsItem @ 12681 NONAME
+ _ZN20QGraphicsItemPrivate14setFocusHelperEN2Qt11FocusReasonEb @ 12682 NONAME
+ _ZN20QGraphicsItemPrivate18subFocusItemChangeEv @ 12683 NONAME
+ _ZN20QGraphicsProxyWidget19getStaticMetaObjectEv @ 12684 NONAME
+ _ZN20QGraphicsViewPrivate20_q_setViewportCursorERK7QCursor @ 12685 NONAME
+ _ZN20QGraphicsViewPrivate22_q_unsetViewportCursorEv @ 12686 NONAME
+ _ZN20QPaintBufferResource11qt_metacallEN11QMetaObject4CallEiPPv @ 12687 NONAME
+ _ZN20QPaintBufferResource11qt_metacastEPKc @ 12688 NONAME
+ _ZN20QPaintBufferResource16staticMetaObjectE @ 12689 NONAME DATA 16
+ _ZN20QPaintBufferResource19getStaticMetaObjectEv @ 12690 NONAME
+ _ZN20QPaintBufferResource5valueEPK19QPaintBufferPrivate @ 12691 NONAME
+ _ZN20QPaintBufferResource6insertEPK19QPaintBufferPrivatePv @ 12692 NONAME
+ _ZN20QPaintBufferResource6removeEPK19QPaintBufferPrivate @ 12693 NONAME
+ _ZN20QPaintBufferResourceC1EPFvPvEP7QObject @ 12694 NONAME
+ _ZN20QPaintBufferResourceC2EPFvPvEP7QObject @ 12695 NONAME
+ _ZN20QPaintBufferResourceD0Ev @ 12696 NONAME
+ _ZN20QPaintBufferResourceD1Ev @ 12697 NONAME
+ _ZN20QPaintBufferResourceD2Ev @ 12698 NONAME
+ _ZN20QPictureFormatPlugin19getStaticMetaObjectEv @ 12699 NONAME
+ _ZN20QWidgetResizeHandler19getStaticMetaObjectEv @ 12700 NONAME
+ _ZN21QAbstractItemDelegate19getStaticMetaObjectEv @ 12701 NONAME
+ _ZN21QGraphicsAnchorLayout10addAnchorsEP19QGraphicsLayoutItemS1_6QFlagsIN2Qt11OrientationEE @ 12702 NONAME
+ _ZN21QGraphicsAnchorLayout6anchorEP19QGraphicsLayoutItemN2Qt11AnchorPointES1_S3_ @ 12703 NONAME
+ _ZN21QGraphicsEffectSource19getStaticMetaObjectEv @ 12704 NONAME
+ _ZN21QGraphicsSystemPlugin19getStaticMetaObjectEv @ 12705 NONAME
+ _ZN21QMouseEventTransition19getStaticMetaObjectEv @ 12706 NONAME
+ _ZN21QPixmapColorizeFilter11setStrengthEf @ 12707 NONAME
+ _ZN21QPixmapColorizeFilter19getStaticMetaObjectEv @ 12708 NONAME
+ _ZN21QSortFilterProxyModel19getStaticMetaObjectEv @ 12709 NONAME
+ _ZN22QGraphicsItemAnimation19getStaticMetaObjectEv @ 12710 NONAME
+ _ZN22QGraphicsOpacityEffect10setOpacityEf @ 12711 NONAME
+ _ZN22QGraphicsOpacityEffect11qt_metacallEN11QMetaObject4CallEiPPv @ 12712 NONAME
+ _ZN22QGraphicsOpacityEffect11qt_metacastEPKc @ 12713 NONAME
+ _ZN22QGraphicsOpacityEffect14opacityChangedEf @ 12714 NONAME
+ _ZN22QGraphicsOpacityEffect14setOpacityMaskERK6QBrush @ 12715 NONAME
+ _ZN22QGraphicsOpacityEffect16staticMetaObjectE @ 12716 NONAME DATA 16
+ _ZN22QGraphicsOpacityEffect18opacityMaskChangedERK6QBrush @ 12717 NONAME
+ _ZN22QGraphicsOpacityEffect19getStaticMetaObjectEv @ 12718 NONAME
+ _ZN22QGraphicsOpacityEffect4drawEP8QPainterP21QGraphicsEffectSource @ 12719 NONAME
+ _ZN22QGraphicsOpacityEffectC1EP7QObject @ 12720 NONAME
+ _ZN22QGraphicsOpacityEffectC2EP7QObject @ 12721 NONAME
+ _ZN22QGraphicsOpacityEffectD0Ev @ 12722 NONAME
+ _ZN22QGraphicsOpacityEffectD1Ev @ 12723 NONAME
+ _ZN22QGraphicsOpacityEffectD2Ev @ 12724 NONAME
+ _ZN22QPaintEngineExReplayer7processERK19QPaintBufferCommand @ 12725 NONAME
+ _ZN23QGraphicsColorizeEffect11setStrengthEf @ 12726 NONAME
+ _ZN23QGraphicsColorizeEffect15strengthChangedEf @ 12727 NONAME
+ _ZN23QGraphicsColorizeEffect19getStaticMetaObjectEv @ 12728 NONAME
+ _ZN23QGraphicsPixelizeEffect19getStaticMetaObjectEv @ 12729 NONAME
+ _ZN23QPaintBufferSignalProxy11qt_metacallEN11QMetaObject4CallEiPPv @ 12730 NONAME
+ _ZN23QPaintBufferSignalProxy11qt_metacastEPKc @ 12731 NONAME
+ _ZN23QPaintBufferSignalProxy14aboutToDestroyEPK19QPaintBufferPrivate @ 12732 NONAME
+ _ZN23QPaintBufferSignalProxy16staticMetaObjectE @ 12733 NONAME DATA 16
+ _ZN23QPaintBufferSignalProxy19getStaticMetaObjectEv @ 12734 NONAME
+ _ZN23QPaintBufferSignalProxy8instanceEv @ 12735 NONAME
+ _ZN23QPixmapDropShadowFilter19getStaticMetaObjectEv @ 12736 NONAME
+ _ZN24QBasicKeyEventTransition19getStaticMetaObjectEv @ 12737 NONAME
+ _ZN24QComboBoxPrivateScroller19getStaticMetaObjectEv @ 12738 NONAME
+ _ZN24QGraphicsGrayscaleEffect11setStrengthEf @ 12739 NONAME
+ _ZN24QGraphicsGrayscaleEffect15strengthChangedEf @ 12740 NONAME
+ _ZN24QGraphicsGrayscaleEffect19getStaticMetaObjectEv @ 12741 NONAME
+ _ZN24QPixmapConvolutionFilter19getStaticMetaObjectEv @ 12742 NONAME
+ _ZN24QPlainTextDocumentLayout19getStaticMetaObjectEv @ 12743 NONAME
+ _ZN25QComboBoxPrivateContainer19getStaticMetaObjectEv @ 12744 NONAME
+ _ZN25QGraphicsDropShadowEffect19getStaticMetaObjectEv @ 12745 NONAME
+ _ZN25QGraphicsSceneLinearIndex19getStaticMetaObjectEv @ 12746 NONAME
+ _ZN26QBasicMouseEventTransition19getStaticMetaObjectEv @ 12747 NONAME
+ _ZN26QGraphicsSceneBspTreeIndex19getStaticMetaObjectEv @ 12748 NONAME
+ _ZN27QAbstractTextDocumentLayout19getStaticMetaObjectEv @ 12749 NONAME
+ _ZN5QDial19getStaticMetaObjectEv @ 12750 NONAME
+ _ZN5QDrag19getStaticMetaObjectEv @ 12751 NONAME
+ _ZN5QFont19getStaticMetaObjectEv @ 12752 NONAME
+ _ZN5QMenu19getStaticMetaObjectEv @ 12753 NONAME
+ _ZN6QColor6setHslEiiii @ 12754 NONAME
+ _ZN6QColor7fromHslEiiii @ 12755 NONAME
+ _ZN6QColor7setHslFEffff @ 12756 NONAME
+ _ZN6QColor8fromHslFEffff @ 12757 NONAME
+ _ZN6QFrame19getStaticMetaObjectEv @ 12758 NONAME
+ _ZN6QLabel19getStaticMetaObjectEv @ 12759 NONAME
+ _ZN6QMovie19getStaticMetaObjectEv @ 12760 NONAME
+ _ZN6QSound19getStaticMetaObjectEv @ 12761 NONAME
+ _ZN6QStyle19getStaticMetaObjectEv @ 12762 NONAME
+ _ZN7QAction19getStaticMetaObjectEv @ 12763 NONAME
+ _ZN7QCursor8setShapeEN2Qt11CursorShapeE @ 12764 NONAME
+ _ZN7QCursorC1EN2Qt11CursorShapeE @ 12765 NONAME
+ _ZN7QCursorC1ERK7QBitmapS2_ii @ 12766 NONAME
+ _ZN7QCursorC1ERK7QPixmapii @ 12767 NONAME
+ _ZN7QCursorC1ERKS_ @ 12768 NONAME
+ _ZN7QCursorC1Ev @ 12769 NONAME
+ _ZN7QCursorC2EN2Qt11CursorShapeE @ 12770 NONAME
+ _ZN7QCursorC2ERK7QBitmapS2_ii @ 12771 NONAME
+ _ZN7QCursorC2ERK7QPixmapii @ 12772 NONAME
+ _ZN7QCursorC2ERKS_ @ 12773 NONAME
+ _ZN7QCursorC2Ev @ 12774 NONAME
+ _ZN7QCursorD1Ev @ 12775 NONAME
+ _ZN7QCursorD2Ev @ 12776 NONAME
+ _ZN7QCursoraSERKS_ @ 12777 NONAME
+ _ZN7QDialog19getStaticMetaObjectEv @ 12778 NONAME
+ _ZN7QLayout19getStaticMetaObjectEv @ 12779 NONAME
+ _ZN7QSlider19getStaticMetaObjectEv @ 12780 NONAME
+ _ZN7QTabBar19getStaticMetaObjectEv @ 12781 NONAME
+ _ZN7QWidget11unsetCursorEv @ 12782 NONAME
+ _ZN7QWidget18setContentsMarginsERK8QMargins @ 12783 NONAME
+ _ZN7QWidget19getStaticMetaObjectEv @ 12784 NONAME
+ _ZN7QWidget9grabMouseERK7QCursor @ 12785 NONAME
+ _ZN7QWidget9setCursorERK7QCursor @ 12786 NONAME
+ _ZN7QWizard19getStaticMetaObjectEv @ 12787 NONAME
+ _ZN8QGesture19getStaticMetaObjectEv @ 12788 NONAME
+ _ZN8QMdiArea19getStaticMetaObjectEv @ 12789 NONAME
+ _ZN8QMenuBar19getStaticMetaObjectEv @ 12790 NONAME
+ _ZN8QPainter17endNativePaintingEv @ 12791 NONAME
+ _ZN8QPainter19beginNativePaintingEv @ 12792 NONAME
+ _ZN8QPainter19getStaticMetaObjectEv @ 12793 NONAME
+ _ZN8QPalette19getStaticMetaObjectEv @ 12794 NONAME
+ _ZN8QSidebar19getStaticMetaObjectEv @ 12795 NONAME
+ _ZN8QSpinBox19getStaticMetaObjectEv @ 12796 NONAME
+ _ZN8QToolBar19getStaticMetaObjectEv @ 12797 NONAME
+ _ZN8QToolBox19getStaticMetaObjectEv @ 12798 NONAME
+ _ZN9QCheckBox19getStaticMetaObjectEv @ 12799 NONAME
+ _ZN9QComboBox19getStaticMetaObjectEv @ 12800 NONAME
+ _ZN9QDateEdit19getStaticMetaObjectEv @ 12801 NONAME
+ _ZN9QDirModel19getStaticMetaObjectEv @ 12802 NONAME
+ _ZN9QGradient19getStaticMetaObjectEv @ 12803 NONAME
+ _ZN9QGroupBox19getStaticMetaObjectEv @ 12804 NONAME
+ _ZN9QLineEdit19getStaticMetaObjectEv @ 12805 NONAME
+ _ZN9QListView19getStaticMetaObjectEv @ 12806 NONAME
+ _ZN9QS60Style19getStaticMetaObjectEv @ 12807 NONAME
+ _ZN9QS60Style5eventEP6QEvent @ 12808 NONAME
+ _ZN9QShortcut19getStaticMetaObjectEv @ 12809 NONAME
+ _ZN9QSizeGrip19getStaticMetaObjectEv @ 12810 NONAME
+ _ZN9QSplitter19getStaticMetaObjectEv @ 12811 NONAME
+ _ZN9QTextEdit19getStaticMetaObjectEv @ 12812 NONAME
+ _ZN9QTextList19getStaticMetaObjectEv @ 12813 NONAME
+ _ZN9QTimeEdit19getStaticMetaObjectEv @ 12814 NONAME
+ _ZN9QTreeView19getStaticMetaObjectEv @ 12815 NONAME
+ _ZN9QUndoView19getStaticMetaObjectEv @ 12816 NONAME
+ _ZN9QUrlModel19getStaticMetaObjectEv @ 12817 NONAME
+ _ZNK11QPanGesture6offsetEv @ 12818 NONAME
+ _ZNK12QImageReader23decideFormatFromContentEv @ 12819 NONAME
+ _ZNK12QPaintBuffer11paintEngineEv @ 12820 NONAME
+ _ZNK12QPaintBuffer12boundingRectEv @ 12821 NONAME
+ _ZNK12QPaintBuffer4drawEP8QPainteri @ 12822 NONAME
+ _ZNK12QPaintBuffer6metricEN12QPaintDevice17PaintDeviceMetricE @ 12823 NONAME
+ _ZNK12QPaintBuffer7devTypeEv @ 12824 NONAME
+ _ZNK12QPaintBuffer7isEmptyEv @ 12825 NONAME
+ _ZNK12QPaintBuffer9numFramesEv @ 12826 NONAME
+ _ZNK13QGraphicsItem14focusScopeItemEv @ 12827 NONAME
+ _ZNK13QGraphicsItem5panelEv @ 12828 NONAME
+ _ZNK13QGraphicsItem6cursorEv @ 12829 NONAME
+ _ZNK13QGraphicsItem7isPanelEv @ 12830 NONAME
+ _ZNK13QGraphicsItem8isActiveEv @ 12831 NONAME
+ _ZNK13QGraphicsItem9hasCursorEv @ 12832 NONAME
+ _ZNK13QPinchGesture11whatChangedEv @ 12833 NONAME
+ _ZNK13QPinchGesture16totalScaleFactorEv @ 12834 NONAME
+ _ZNK13QPinchGesture18totalRotationAngleEv @ 12835 NONAME
+ _ZNK13QSwipeGesture10metaObjectEv @ 12836 NONAME
+ _ZNK13QSwipeGesture10swipeAngleEv @ 12837 NONAME
+ _ZNK13QSwipeGesture17verticalDirectionEv @ 12838 NONAME
+ _ZNK13QSwipeGesture19horizontalDirectionEv @ 12839 NONAME
+ _ZNK14QGraphicsScene11activePanelEv @ 12840 NONAME
+ _ZNK14QGraphicsScene8isActiveEv @ 12841 NONAME
+ _ZNK15QGraphicsAnchor10metaObjectEv @ 12842 NONAME
+ _ZNK15QGraphicsAnchor7spacingEv @ 12843 NONAME
+ _ZNK20QPaintBufferResource10metaObjectEv @ 12844 NONAME
+ _ZNK21QPixmapColorizeFilter8strengthEv @ 12845 NONAME
+ _ZNK22QGraphicsOpacityEffect10metaObjectEv @ 12846 NONAME
+ _ZNK22QGraphicsOpacityEffect11opacityMaskEv @ 12847 NONAME
+ _ZNK22QGraphicsOpacityEffect7opacityEv @ 12848 NONAME
+ _ZNK23QGraphicsColorizeEffect8strengthEv @ 12849 NONAME
+ _ZNK23QPaintBufferSignalProxy10metaObjectEv @ 12850 NONAME
+ _ZNK24QGraphicsGrayscaleEffect8strengthEv @ 12851 NONAME
+ _ZNK6QColor10lightnessFEv @ 12852 NONAME
+ _ZNK6QColor13hslSaturationEv @ 12853 NONAME
+ _ZNK6QColor13hsvSaturationEv @ 12854 NONAME
+ _ZNK6QColor14hslSaturationFEv @ 12855 NONAME
+ _ZNK6QColor14hsvSaturationFEv @ 12856 NONAME
+ _ZNK6QColor5toHslEv @ 12857 NONAME
+ _ZNK6QColor6getHslEPiS0_S0_S0_ @ 12858 NONAME
+ _ZNK6QColor6hslHueEv @ 12859 NONAME
+ _ZNK6QColor6hsvHueEv @ 12860 NONAME
+ _ZNK6QColor7getHslFEPfS0_S0_S0_ @ 12861 NONAME
+ _ZNK6QColor7hslHueFEv @ 12862 NONAME
+ _ZNK6QColor7hsvHueFEv @ 12863 NONAME
+ _ZNK6QColor9lightnessEv @ 12864 NONAME
+ _ZNK7QCursor4maskEv @ 12865 NONAME
+ _ZNK7QCursor5shapeEv @ 12866 NONAME
+ _ZNK7QCursor6bitmapEv @ 12867 NONAME
+ _ZNK7QCursor6handleEv @ 12868 NONAME
+ _ZNK7QCursor6pixmapEv @ 12869 NONAME
+ _ZNK7QCursor7hotSpotEv @ 12870 NONAME
+ _ZNK7QCursorcv8QVariantEv @ 12871 NONAME
+ _ZNK7QWidget15contentsMarginsEv @ 12872 NONAME
+ _ZNK7QWidget6cursorEv @ 12873 NONAME
+ _ZTI10AnchorData @ 12874 NONAME ; #<TI>#
+ _ZTI11PixmapEntry @ 12875 NONAME ; #<TI>#
+ _ZTI12QPaintBuffer @ 12876 NONAME ; #<TI>#
+ _ZTI13QS60MainAppUi @ 12877 NONAME ; #<TI>#
+ _ZTI13QSwipeGesture @ 12878 NONAME ; #<TI>#
+ _ZTI13ScalableEntry @ 12879 NONAME ; #<TI>#
+ _ZTI15QGesturePrivate @ 12880 NONAME ; #<TI>#
+ _ZTI15QGraphicsAnchor @ 12881 NONAME ; #<TI>#
+ _ZTI16QPainterReplayer @ 12882 NONAME ; #<TI>#
+ _ZTI16QS60MainDocument @ 12883 NONAME ; #<TI>#
+ _ZTI16QTreeViewPrivate @ 12884 NONAME ; #<TI>#
+ _ZTI17QIconLoaderEngine @ 12885 NONAME ; #<TI>#
+ _ZTI17QIconModeViewBase @ 12886 NONAME ; #<TI>#
+ _ZTI17QListModeViewBase @ 12887 NONAME ; #<TI>#
+ _ZTI18ParallelAnchorData @ 12888 NONAME ; #<TI>#
+ _ZTI18QHeaderViewPrivate @ 12889 NONAME ; #<TI>#
+ _ZTI18QPaintBufferEngine @ 12890 NONAME ; #<TI>#
+ _ZTI18QPanGesturePrivate @ 12891 NONAME ; #<TI>#
+ _ZTI19QCommonListViewBase @ 12892 NONAME ; #<TI>#
+ _ZTI19QS60MainApplication @ 12893 NONAME ; #<TI>#
+ _ZTI20QPaintBufferResource @ 12894 NONAME ; #<TI>#
+ _ZTI20QPinchGesturePrivate @ 12895 NONAME ; #<TI>#
+ _ZTI20QSwipeGesturePrivate @ 12896 NONAME ; #<TI>#
+ _ZTI20SequentialAnchorData @ 12897 NONAME ; #<TI>#
+ _ZTI22QGraphicsAnchorPrivate @ 12898 NONAME ; #<TI>#
+ _ZTI22QGraphicsOpacityEffect @ 12899 NONAME ; #<TI>#
+ _ZTI22QPaintEngineExReplayer @ 12900 NONAME ; #<TI>#
+ _ZTI23QPaintBufferSignalProxy @ 12901 NONAME ; #<TI>#
+ _ZTI26QGraphicsSceneIndexPrivate @ 12902 NONAME ; #<TI>#
+ _ZTI26QWidgetEffectSourcePrivate @ 12903 NONAME ; #<TI>#
+ _ZTI32QGraphicsItemEffectSourcePrivate @ 12904 NONAME ; #<TI>#
+ _ZTI8QSimplex @ 12905 NONAME ; #<TI>#
+ _ZTV10AnchorData @ 12906 NONAME ; #<VT>#
+ _ZTV11PixmapEntry @ 12907 NONAME ; #<VT>#
+ _ZTV12QPaintBuffer @ 12908 NONAME ; #<VT>#
+ _ZTV13QS60MainAppUi @ 12909 NONAME ; #<VT>#
+ _ZTV13QSwipeGesture @ 12910 NONAME ; #<VT>#
+ _ZTV13ScalableEntry @ 12911 NONAME ; #<VT>#
+ _ZTV15QGesturePrivate @ 12912 NONAME ; #<VT>#
+ _ZTV15QGraphicsAnchor @ 12913 NONAME ; #<VT>#
+ _ZTV16QPainterReplayer @ 12914 NONAME ; #<VT>#
+ _ZTV16QS60MainDocument @ 12915 NONAME ; #<VT>#
+ _ZTV16QTreeViewPrivate @ 12916 NONAME ; #<VT>#
+ _ZTV17QIconLoaderEngine @ 12917 NONAME ; #<VT>#
+ _ZTV17QIconModeViewBase @ 12918 NONAME ; #<VT>#
+ _ZTV17QListModeViewBase @ 12919 NONAME ; #<VT>#
+ _ZTV18ParallelAnchorData @ 12920 NONAME ; #<VT>#
+ _ZTV18QHeaderViewPrivate @ 12921 NONAME ; #<VT>#
+ _ZTV18QPaintBufferEngine @ 12922 NONAME ; #<VT>#
+ _ZTV18QPanGesturePrivate @ 12923 NONAME ; #<VT>#
+ _ZTV19QCommonListViewBase @ 12924 NONAME ; #<VT>#
+ _ZTV19QS60MainApplication @ 12925 NONAME ; #<VT>#
+ _ZTV20QPaintBufferResource @ 12926 NONAME ; #<VT>#
+ _ZTV20QPinchGesturePrivate @ 12927 NONAME ; #<VT>#
+ _ZTV20QSwipeGesturePrivate @ 12928 NONAME ; #<VT>#
+ _ZTV20SequentialAnchorData @ 12929 NONAME ; #<VT>#
+ _ZTV22QGraphicsAnchorPrivate @ 12930 NONAME ; #<VT>#
+ _ZTV22QGraphicsOpacityEffect @ 12931 NONAME ; #<VT>#
+ _ZTV22QPaintEngineExReplayer @ 12932 NONAME ; #<VT>#
+ _ZTV23QPaintBufferSignalProxy @ 12933 NONAME ; #<VT>#
+ _ZTV26QGraphicsSceneIndexPrivate @ 12934 NONAME ; #<VT>#
+ _ZTV26QWidgetEffectSourcePrivate @ 12935 NONAME ; #<VT>#
+ _ZTV32QGraphicsItemEffectSourcePrivate @ 12936 NONAME ; #<VT>#
+ _ZTV8QSimplex @ 12937 NONAME ; #<VT>#
+ _ZlsR11QDataStreamRK12QPaintBuffer @ 12938 NONAME
+ _ZlsR11QDataStreamRK7QCursor @ 12939 NONAME
+ _ZrsR11QDataStreamR12QPaintBuffer @ 12940 NONAME
+ _ZrsR11QDataStreamR7QCursor @ 12941 NONAME
diff --git a/src/s60installs/eabi/QtMultimediau.def b/src/s60installs/eabi/QtMultimediau.def
index b1cd682..6e5e8ba 100644
--- a/src/s60installs/eabi/QtMultimediau.def
+++ b/src/s60installs/eabi/QtMultimediau.def
@@ -156,4 +156,136 @@ EXPORTS
_ZThn8_N18QAudioEnginePluginD1Ev @ 155 NONAME
_ZlsR11QDataStreamRK14QAudioDeviceId @ 156 NONAME
_ZrsR11QDataStreamR14QAudioDeviceId @ 157 NONAME
+ _ZN11QAudioInput19getStaticMetaObjectEv @ 158 NONAME
+ _ZN11QVideoFrame10setEndTimeEx @ 159 NONAME
+ _ZN11QVideoFrame12setFieldTypeENS_9FieldTypeE @ 160 NONAME
+ _ZN11QVideoFrame12setStartTimeEx @ 161 NONAME
+ _ZN11QVideoFrame21equivalentImageFormatENS_11PixelFormatE @ 162 NONAME
+ _ZN11QVideoFrame21equivalentPixelFormatEN6QImage6FormatE @ 163 NONAME
+ _ZN11QVideoFrame3mapEN20QAbstractVideoBuffer7MapModeE @ 164 NONAME
+ _ZN11QVideoFrame4bitsEv @ 165 NONAME
+ _ZN11QVideoFrame5unmapEv @ 166 NONAME
+ _ZN11QVideoFrameC1EP20QAbstractVideoBufferRK5QSizeNS_11PixelFormatE @ 167 NONAME
+ _ZN11QVideoFrameC1ERK6QImage @ 168 NONAME
+ _ZN11QVideoFrameC1ERKS_ @ 169 NONAME
+ _ZN11QVideoFrameC1EiRK5QSizeiNS_11PixelFormatE @ 170 NONAME
+ _ZN11QVideoFrameC1Ev @ 171 NONAME
+ _ZN11QVideoFrameC2EP20QAbstractVideoBufferRK5QSizeNS_11PixelFormatE @ 172 NONAME
+ _ZN11QVideoFrameC2ERK6QImage @ 173 NONAME
+ _ZN11QVideoFrameC2ERKS_ @ 174 NONAME
+ _ZN11QVideoFrameC2EiRK5QSizeiNS_11PixelFormatE @ 175 NONAME
+ _ZN11QVideoFrameC2Ev @ 176 NONAME
+ _ZN11QVideoFrameD1Ev @ 177 NONAME
+ _ZN11QVideoFrameD2Ev @ 178 NONAME
+ _ZN11QVideoFrameaSERKS_ @ 179 NONAME
+ _ZN12QAudioOutput19getStaticMetaObjectEv @ 180 NONAME
+ _ZN16QAudioDeviceInfo19getStaticMetaObjectEv @ 181 NONAME
+ _ZN17QImageVideoBuffer3mapEN20QAbstractVideoBuffer7MapModeEPiS2_ @ 182 NONAME
+ _ZN17QImageVideoBuffer5unmapEv @ 183 NONAME
+ _ZN17QImageVideoBufferC1ERK6QImage @ 184 NONAME
+ _ZN17QImageVideoBufferC2ERK6QImage @ 185 NONAME
+ _ZN17QImageVideoBufferD0Ev @ 186 NONAME
+ _ZN17QImageVideoBufferD1Ev @ 187 NONAME
+ _ZN17QImageVideoBufferD2Ev @ 188 NONAME
+ _ZN18QAudioEnginePlugin19getStaticMetaObjectEv @ 189 NONAME
+ _ZN18QMemoryVideoBuffer3mapEN20QAbstractVideoBuffer7MapModeEPiS2_ @ 190 NONAME
+ _ZN18QMemoryVideoBuffer5unmapEv @ 191 NONAME
+ _ZN18QMemoryVideoBufferC1ERK10QByteArrayi @ 192 NONAME
+ _ZN18QMemoryVideoBufferC2ERK10QByteArrayi @ 193 NONAME
+ _ZN18QMemoryVideoBufferD0Ev @ 194 NONAME
+ _ZN18QMemoryVideoBufferD1Ev @ 195 NONAME
+ _ZN18QMemoryVideoBufferD2Ev @ 196 NONAME
+ _ZN19QAbstractAudioInput19getStaticMetaObjectEv @ 197 NONAME
+ _ZN19QVideoSurfaceFormat11setPropertyEPKcRK8QVariant @ 198 NONAME
+ _ZN19QVideoSurfaceFormat11setViewportERK5QRect @ 199 NONAME
+ _ZN19QVideoSurfaceFormat12setFrameRateERK5QPairIiiE @ 200 NONAME
+ _ZN19QVideoSurfaceFormat12setFrameRateEii @ 201 NONAME
+ _ZN19QVideoSurfaceFormat12setFrameSizeERK5QSizeNS_12ViewportModeE @ 202 NONAME
+ _ZN19QVideoSurfaceFormat12setFrameSizeEiiNS_12ViewportModeE @ 203 NONAME
+ _ZN19QVideoSurfaceFormat16setYuvColorSpaceENS_13YuvColorSpaceE @ 204 NONAME
+ _ZN19QVideoSurfaceFormat19setPixelAspectRatioERK5QSize @ 205 NONAME
+ _ZN19QVideoSurfaceFormat19setPixelAspectRatioEii @ 206 NONAME
+ _ZN19QVideoSurfaceFormat20setScanLineDirectionENS_9DirectionE @ 207 NONAME
+ _ZN19QVideoSurfaceFormatC1ERK5QSizeN11QVideoFrame11PixelFormatEN20QAbstractVideoBuffer10HandleTypeE @ 208 NONAME
+ _ZN19QVideoSurfaceFormatC1ERKS_ @ 209 NONAME
+ _ZN19QVideoSurfaceFormatC1Ev @ 210 NONAME
+ _ZN19QVideoSurfaceFormatC2ERK5QSizeN11QVideoFrame11PixelFormatEN20QAbstractVideoBuffer10HandleTypeE @ 211 NONAME
+ _ZN19QVideoSurfaceFormatC2ERKS_ @ 212 NONAME
+ _ZN19QVideoSurfaceFormatC2Ev @ 213 NONAME
+ _ZN19QVideoSurfaceFormatD1Ev @ 214 NONAME
+ _ZN19QVideoSurfaceFormatD2Ev @ 215 NONAME
+ _ZN19QVideoSurfaceFormataSERKS_ @ 216 NONAME
+ _ZN20QAbstractAudioOutput19getStaticMetaObjectEv @ 217 NONAME
+ _ZN20QAbstractVideoBufferC2ENS_10HandleTypeE @ 218 NONAME
+ _ZN20QAbstractVideoBufferC2ER27QAbstractVideoBufferPrivateNS_10HandleTypeE @ 219 NONAME
+ _ZN20QAbstractVideoBufferD0Ev @ 220 NONAME
+ _ZN20QAbstractVideoBufferD1Ev @ 221 NONAME
+ _ZN20QAbstractVideoBufferD2Ev @ 222 NONAME
+ _ZN21QAbstractVideoSurface11qt_metacallEN11QMetaObject4CallEiPPv @ 223 NONAME
+ _ZN21QAbstractVideoSurface11qt_metacastEPKc @ 224 NONAME
+ _ZN21QAbstractVideoSurface14startedChangedEb @ 225 NONAME
+ _ZN21QAbstractVideoSurface16staticMetaObjectE @ 226 NONAME DATA 16
+ _ZN21QAbstractVideoSurface19getStaticMetaObjectEv @ 227 NONAME
+ _ZN21QAbstractVideoSurface20surfaceFormatChangedERK19QVideoSurfaceFormat @ 228 NONAME
+ _ZN21QAbstractVideoSurface23supportedFormatsChangedEv @ 229 NONAME
+ _ZN21QAbstractVideoSurface4stopEv @ 230 NONAME
+ _ZN21QAbstractVideoSurface5startERK19QVideoSurfaceFormat @ 231 NONAME
+ _ZN21QAbstractVideoSurface8setErrorENS_5ErrorE @ 232 NONAME
+ _ZN21QAbstractVideoSurfaceC2EP7QObject @ 233 NONAME
+ _ZN21QAbstractVideoSurfaceC2ER28QAbstractVideoSurfacePrivateP7QObject @ 234 NONAME
+ _ZN21QAbstractVideoSurfaceD0Ev @ 235 NONAME
+ _ZN21QAbstractVideoSurfaceD1Ev @ 236 NONAME
+ _ZN21QAbstractVideoSurfaceD2Ev @ 237 NONAME
+ _ZN24QAbstractAudioDeviceInfo19getStaticMetaObjectEv @ 238 NONAME
+ _ZNK11QVideoFrame10handleTypeEv @ 239 NONAME
+ _ZNK11QVideoFrame10isReadableEv @ 240 NONAME
+ _ZNK11QVideoFrame10isWritableEv @ 241 NONAME
+ _ZNK11QVideoFrame11pixelFormatEv @ 242 NONAME
+ _ZNK11QVideoFrame12bytesPerLineEv @ 243 NONAME
+ _ZNK11QVideoFrame4bitsEv @ 244 NONAME
+ _ZNK11QVideoFrame4sizeEv @ 245 NONAME
+ _ZNK11QVideoFrame5widthEv @ 246 NONAME
+ _ZNK11QVideoFrame6handleEv @ 247 NONAME
+ _ZNK11QVideoFrame6heightEv @ 248 NONAME
+ _ZNK11QVideoFrame7endTimeEv @ 249 NONAME
+ _ZNK11QVideoFrame7isValidEv @ 250 NONAME
+ _ZNK11QVideoFrame7mapModeEv @ 251 NONAME
+ _ZNK11QVideoFrame8isMappedEv @ 252 NONAME
+ _ZNK11QVideoFrame8numBytesEv @ 253 NONAME
+ _ZNK11QVideoFrame9fieldTypeEv @ 254 NONAME
+ _ZNK11QVideoFrame9startTimeEv @ 255 NONAME
+ _ZNK17QImageVideoBuffer7mapModeEv @ 256 NONAME
+ _ZNK18QMemoryVideoBuffer7mapModeEv @ 257 NONAME
+ _ZNK19QVideoSurfaceFormat10frameWidthEv @ 258 NONAME
+ _ZNK19QVideoSurfaceFormat10handleTypeEv @ 259 NONAME
+ _ZNK19QVideoSurfaceFormat11frameHeightEv @ 260 NONAME
+ _ZNK19QVideoSurfaceFormat11pixelFormatEv @ 261 NONAME
+ _ZNK19QVideoSurfaceFormat13propertyNamesEv @ 262 NONAME
+ _ZNK19QVideoSurfaceFormat13yuvColorSpaceEv @ 263 NONAME
+ _ZNK19QVideoSurfaceFormat16pixelAspectRatioEv @ 264 NONAME
+ _ZNK19QVideoSurfaceFormat17scanLineDirectionEv @ 265 NONAME
+ _ZNK19QVideoSurfaceFormat7isValidEv @ 266 NONAME
+ _ZNK19QVideoSurfaceFormat8propertyEPKc @ 267 NONAME
+ _ZNK19QVideoSurfaceFormat8sizeHintEv @ 268 NONAME
+ _ZNK19QVideoSurfaceFormat8viewportEv @ 269 NONAME
+ _ZNK19QVideoSurfaceFormat9frameRateEv @ 270 NONAME
+ _ZNK19QVideoSurfaceFormat9frameSizeEv @ 271 NONAME
+ _ZNK19QVideoSurfaceFormateqERKS_ @ 272 NONAME
+ _ZNK19QVideoSurfaceFormatneERKS_ @ 273 NONAME
+ _ZNK20QAbstractVideoBuffer10handleTypeEv @ 274 NONAME
+ _ZNK20QAbstractVideoBuffer6handleEv @ 275 NONAME
+ _ZNK21QAbstractVideoSurface10metaObjectEv @ 276 NONAME
+ _ZNK21QAbstractVideoSurface13surfaceFormatEv @ 277 NONAME
+ _ZNK21QAbstractVideoSurface17isFormatSupportedERK19QVideoSurfaceFormatPS0_ @ 278 NONAME
+ _ZNK21QAbstractVideoSurface5errorEv @ 279 NONAME
+ _ZNK21QAbstractVideoSurface9isStartedEv @ 280 NONAME
+ _ZTI17QImageVideoBuffer @ 281 NONAME ; #<TI>#
+ _ZTI18QMemoryVideoBuffer @ 282 NONAME ; #<TI>#
+ _ZTI20QAbstractVideoBuffer @ 283 NONAME ; #<TI>#
+ _ZTI21QAbstractVideoSurface @ 284 NONAME ; #<TI>#
+ _ZTV17QImageVideoBuffer @ 285 NONAME ; #<VT>#
+ _ZTV18QMemoryVideoBuffer @ 286 NONAME ; #<VT>#
+ _ZTV20QAbstractVideoBuffer @ 287 NONAME ; #<VT>#
+ _ZTV21QAbstractVideoSurface @ 288 NONAME ; #<VT>#
+ _Zls6QDebugRK19QVideoSurfaceFormat @ 289 NONAME
diff --git a/src/s60installs/eabi/QtNetworku.def b/src/s60installs/eabi/QtNetworku.def
index d03e3f8..bd026e0 100644
--- a/src/s60installs/eabi/QtNetworku.def
+++ b/src/s60installs/eabi/QtNetworku.def
@@ -1364,4 +1364,34 @@ EXPORTS
_ZNK13QNetworkReply9isRunningEv @ 1363 NONAME
_ZNK17QHttpNetworkReply23bytesAvailableNextBlockEv @ 1364 NONAME
_ZNK19QHttpNetworkRequest16uploadByteDeviceEv @ 1365 NONAME
+ _ZN10QSslSocket19getStaticMetaObjectEv @ 1366 NONAME
+ _ZN10QTcpServer19getStaticMetaObjectEv @ 1367 NONAME
+ _ZN10QTcpSocket19getStaticMetaObjectEv @ 1368 NONAME
+ _ZN10QUdpSocket19getStaticMetaObjectEv @ 1369 NONAME
+ _ZN12QLocalServer19getStaticMetaObjectEv @ 1370 NONAME
+ _ZN12QLocalSocket19getStaticMetaObjectEv @ 1371 NONAME
+ _ZN13QNetworkReply19getStaticMetaObjectEv @ 1372 NONAME
+ _ZN15QAbstractSocket19getStaticMetaObjectEv @ 1373 NONAME
+ _ZN17QHttpNetworkReply19getStaticMetaObjectEv @ 1374 NONAME
+ _ZN17QHttpSocketEngine19getStaticMetaObjectEv @ 1375 NONAME
+ _ZN17QNetworkCookieJar19getStaticMetaObjectEv @ 1376 NONAME
+ _ZN17QNetworkDiskCache19getStaticMetaObjectEv @ 1377 NONAME
+ _ZN19QHttpNetworkRequest20setPipeliningAllowedEb @ 1378 NONAME
+ _ZN19QNativeSocketEngine19getStaticMetaObjectEv @ 1379 NONAME
+ _ZN19QSocks5SocketEngine19getStaticMetaObjectEv @ 1380 NONAME
+ _ZN20QNetworkProxyFactory32setUseSystemConfigurationEnabledEb @ 1381 NONAME
+ _ZN21QAbstractNetworkCache19getStaticMetaObjectEv @ 1382 NONAME
+ _ZN21QAbstractSocketEngine19getStaticMetaObjectEv @ 1383 NONAME
+ _ZN21QNetworkAccessManager19getStaticMetaObjectEv @ 1384 NONAME
+ _ZN22QHttpNetworkConnection19getStaticMetaObjectEv @ 1385 NONAME
+ _ZN22QHttpNetworkConnectionC1EtRK7QStringtbP7QObject @ 1386 NONAME
+ _ZN22QHttpNetworkConnectionC2EtRK7QStringtbP7QObject @ 1387 NONAME
+ _ZN4QFtp19getStaticMetaObjectEv @ 1388 NONAME
+ _ZN5QHttp19getStaticMetaObjectEv @ 1389 NONAME
+ _ZNK17QHttpNetworkReply16isPipeliningUsedEv @ 1390 NONAME
+ _ZNK19QHttpNetworkRequest19isPipeliningAllowedEv @ 1391 NONAME
+ _ZTI24QNetworkReplyImplPrivate @ 1392 NONAME ; #<TI>#
+ _ZTI29QHttpNetworkConnectionChannel @ 1393 NONAME ; #<TI>#
+ _ZTV24QNetworkReplyImplPrivate @ 1394 NONAME ; #<VT>#
+ _ZTV29QHttpNetworkConnectionChannel @ 1395 NONAME ; #<VT>#
diff --git a/src/s60installs/eabi/QtSqlu.def b/src/s60installs/eabi/QtSqlu.def
index 4822dce..0dbfc55 100644
--- a/src/s60installs/eabi/QtSqlu.def
+++ b/src/s60installs/eabi/QtSqlu.def
@@ -473,4 +473,10 @@ EXPORTS
_ZNK10QSqlDriver24numericalPrecisionPolicyEv @ 472 NONAME
_ZNK10QSqlResult24numericalPrecisionPolicyEv @ 473 NONAME
_ZNK12QSqlDatabase24numericalPrecisionPolicyEv @ 474 NONAME
+ _ZN10QSqlDriver19getStaticMetaObjectEv @ 475 NONAME
+ _ZN13QSQLiteDriver19getStaticMetaObjectEv @ 476 NONAME
+ _ZN14QSqlQueryModel19getStaticMetaObjectEv @ 477 NONAME
+ _ZN14QSqlTableModel19getStaticMetaObjectEv @ 478 NONAME
+ _ZN16QSqlDriverPlugin19getStaticMetaObjectEv @ 479 NONAME
+ _ZN24QSqlRelationalTableModel19getStaticMetaObjectEv @ 480 NONAME
diff --git a/src/s60installs/eabi/QtSvgu.def b/src/s60installs/eabi/QtSvgu.def
index ce93613..4dd3da5 100644
--- a/src/s60installs/eabi/QtSvgu.def
+++ b/src/s60installs/eabi/QtSvgu.def
@@ -202,4 +202,13 @@ EXPORTS
_ZThn8_N16QGraphicsSvgItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 201 NONAME
_ZThn8_NK16QGraphicsSvgItem12boundingRectEv @ 202 NONAME
_ZThn8_NK16QGraphicsSvgItem4typeEv @ 203 NONAME
+ _ZN10QSvgWidget19getStaticMetaObjectEv @ 204 NONAME
+ _ZN12QSvgRenderer19getStaticMetaObjectEv @ 205 NONAME
+ _ZN16QGraphicsSvgItem19getStaticMetaObjectEv @ 206 NONAME
+ _ZN16QSvgTinyDocument12addNamedNodeERK7QStringP8QSvgNode @ 207 NONAME
+ _ZN16QSvgTinyDocument13addNamedStyleERK7QStringP21QSvgFillStyleProperty @ 208 NONAME
+ _ZNK16QSvgTinyDocument10namedStyleERK7QString @ 209 NONAME
+ _ZNK16QSvgTinyDocument9namedNodeERK7QString @ 210 NONAME
+ _ZTI21QSvgFillStyleProperty @ 211 NONAME ; #<TI>#
+ _ZTV21QSvgFillStyleProperty @ 212 NONAME ; #<VT>#
diff --git a/src/s60installs/eabi/QtTestu.def b/src/s60installs/eabi/QtTestu.def
index f4cc77f..ea1b3e1 100644
--- a/src/s60installs/eabi/QtTestu.def
+++ b/src/s60installs/eabi/QtTestu.def
@@ -80,4 +80,25 @@ EXPORTS
_ZTV22QBenchmarkTimeMeasurer @ 79 NONAME ABSENT
_ZN5QTest29QBenchmarkIterationControllerC1ENS0_7RunModeE @ 80 NONAME
_ZN5QTest29QBenchmarkIterationControllerC2ENS0_7RunModeE @ 81 NONAME
+ _ZN14QTestEventLoop19getStaticMetaObjectEv @ 82 NONAME
+ _ZTI11QTestLogger @ 83 NONAME ; #<TI>#
+ _ZTI12QTestElement @ 84 NONAME ; #<TI>#
+ _ZTI13QTestCoreListI12QTestElementE @ 85 NONAME ; #<TI>#
+ _ZTI13QTestCoreListI21QTestElementAttributeE @ 86 NONAME ; #<TI>#
+ _ZTI16QTestCoreElementI12QTestElementE @ 87 NONAME ; #<TI>#
+ _ZTI16QTestXmlStreamer @ 88 NONAME ; #<TI>#
+ _ZTI18QTestBasicStreamer @ 89 NONAME ; #<TI>#
+ _ZTI18QTestXunitStreamer @ 90 NONAME ; #<TI>#
+ _ZTI21QTestElementAttribute @ 91 NONAME ; #<TI>#
+ _ZTI21QTestLightXmlStreamer @ 92 NONAME ; #<TI>#
+ _ZTV11QTestLogger @ 93 NONAME ; #<VT>#
+ _ZTV12QTestElement @ 94 NONAME ; #<VT>#
+ _ZTV13QTestCoreListI12QTestElementE @ 95 NONAME ; #<VT>#
+ _ZTV13QTestCoreListI21QTestElementAttributeE @ 96 NONAME ; #<VT>#
+ _ZTV16QTestCoreElementI12QTestElementE @ 97 NONAME ; #<VT>#
+ _ZTV16QTestXmlStreamer @ 98 NONAME ; #<VT>#
+ _ZTV18QTestBasicStreamer @ 99 NONAME ; #<VT>#
+ _ZTV18QTestXunitStreamer @ 100 NONAME ; #<VT>#
+ _ZTV21QTestElementAttribute @ 101 NONAME ; #<VT>#
+ _ZTV21QTestLightXmlStreamer @ 102 NONAME ; #<VT>#
diff --git a/src/s60installs/eabi/phononu.def b/src/s60installs/eabi/phononu.def
index dde254e..d407ba4 100644
--- a/src/s60installs/eabi/phononu.def
+++ b/src/s60installs/eabi/phononu.def
@@ -558,4 +558,16 @@ EXPORTS
_ZThn8_N6Phonon19AbstractAudioOutputD1Ev @ 557 NONAME
_ZThn8_N6Phonon6EffectD0Ev @ 558 NONAME
_ZThn8_N6Phonon6EffectD1Ev @ 559 NONAME
+ _ZN6Phonon10SeekSlider19getStaticMetaObjectEv @ 560 NONAME
+ _ZN6Phonon11AudioOutput19getStaticMetaObjectEv @ 561 NONAME
+ _ZN6Phonon11MediaObject19getStaticMetaObjectEv @ 562 NONAME
+ _ZN6Phonon11VideoPlayer19getStaticMetaObjectEv @ 563 NONAME
+ _ZN6Phonon11VideoWidget19getStaticMetaObjectEv @ 564 NONAME
+ _ZN6Phonon12EffectWidget19getStaticMetaObjectEv @ 565 NONAME
+ _ZN6Phonon12VolumeSlider19getStaticMetaObjectEv @ 566 NONAME
+ _ZN6Phonon15MediaController19getStaticMetaObjectEv @ 567 NONAME
+ _ZN6Phonon17VolumeFaderEffect19getStaticMetaObjectEv @ 568 NONAME
+ _ZN6Phonon19AbstractAudioOutput19getStaticMetaObjectEv @ 569 NONAME
+ _ZN6Phonon19AbstractMediaStream19getStaticMetaObjectEv @ 570 NONAME
+ _ZN6Phonon6Effect19getStaticMetaObjectEv @ 571 NONAME