summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dist/changes-4.6.38
-rw-r--r--mkspecs/common/symbian/symbian.conf6
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog46
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.pro4
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameView.cpp75
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameView.h7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ScrollView.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ScrollView.h3
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBlock.h1
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp15
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp19
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/ChangeLog12
-rw-r--r--src/corelib/animation/qanimationgroup.cpp4
-rw-r--r--src/corelib/animation/qanimationgroup_p.h15
-rw-r--r--src/corelib/animation/qparallelanimationgroup.cpp15
-rw-r--r--src/corelib/animation/qparallelanimationgroup_p.h2
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.cpp13
-rw-r--r--src/corelib/animation/qsequentialanimationgroup_p.h2
-rw-r--r--src/corelib/global/qglobal.h9
-rw-r--r--src/corelib/io/qprocess_symbian.cpp8
-rw-r--r--src/corelib/kernel/qcore_symbian_p.cpp25
-rw-r--r--src/corelib/kernel/qcore_symbian_p.h9
-rw-r--r--src/corelib/kernel/qobjectdefs.h2
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp11
-rw-r--r--src/corelib/statemachine/qstatemachine_p.h2
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp6
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicswidget.h8
-rw-r--r--src/gui/kernel/qsound.cpp3
-rw-r--r--src/gui/kernel/qwidget_x11.cpp38
-rw-r--r--src/gui/s60framework/qs60mainapplication.cpp7
-rw-r--r--src/gui/s60framework/qs60mainappui.cpp10
-rw-r--r--src/gui/s60framework/s60framework.pri3
-rw-r--r--src/gui/styles/qs60style.cpp56
-rw-r--r--src/gui/styles/qs60style_s60.cpp2
-rw-r--r--src/gui/styles/qwindowsmobilestyle.cpp17
-rw-r--r--src/gui/text/qfontengine.cpp15
-rw-r--r--src/gui/text/qfontengine_p.h3
-rw-r--r--src/gui/text/qfontengine_win.cpp24
-rw-r--r--src/gui/text/qfontengine_win_p.h2
-rw-r--r--src/gui/text/qfontmetrics.cpp21
-rw-r--r--src/gui/text/qtextlayout.cpp122
-rw-r--r--src/gui/widgets/qspinbox.cpp15
-rw-r--r--src/network/kernel/qhostinfo.cpp1
-rw-r--r--src/network/kernel/qhostinfo_p.h3
-rw-r--r--src/openvg/qpixmapdata_vg.cpp78
-rw-r--r--src/s60installs/s60installs.pro8
-rw-r--r--src/script/api/qscriptengine.cpp2
-rw-r--r--src/script/bridge/qscriptclassobject.cpp4
-rw-r--r--src/tools/moc/generator.cpp43
-rw-r--r--src/tools/moc/keywords.cpp30
-rw-r--r--src/tools/moc/moc.cpp44
-rw-r--r--src/tools/moc/moc.h4
-rw-r--r--src/tools/moc/token.cpp1
-rw-r--r--src/tools/moc/token.h1
-rw-r--r--src/tools/moc/util/generate_keywords.cpp2
-rw-r--r--tests/auto/moc/tst_moc.cpp51
-rw-r--r--tests/auto/qaccessibility/tst_qaccessibility.cpp3
-rw-r--r--tests/auto/qfiledialog2/tst_qfiledialog2.cpp76
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp146
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp4
-rw-r--r--tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp17
-rw-r--r--tests/auto/qscriptclass/tst_qscriptclass.cpp118
-rw-r--r--tests/auto/qscriptengine/tst_qscriptengine.cpp31
-rw-r--r--tests/auto/qstatemachine/tst_qstatemachine.cpp59
-rw-r--r--tests/auto/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp22
-rw-r--r--tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp62
-rw-r--r--tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp22
-rw-r--r--tests/auto/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp24
-rw-r--r--tests/auto/qvectornd/tst_qvectornd.cpp166
-rw-r--r--tests/auto/xmlpatternsdiagnosticsts/tst_xmlpatternsdiagnosticsts.cpp10
-rw-r--r--tools/runonphone/main.cpp42
-rw-r--r--tools/runonphone/serenum_stub.cpp2
-rw-r--r--tools/runonphone/serenum_unix.cpp2
-rw-r--r--tools/runonphone/trksignalhandler.cpp30
79 files changed, 1308 insertions, 498 deletions
diff --git a/dist/changes-4.6.3 b/dist/changes-4.6.3
index 57cc453..d8e9fb4 100644
--- a/dist/changes-4.6.3
+++ b/dist/changes-4.6.3
@@ -138,6 +138,14 @@ Qt for Windows CE
-
+Qt for Symbian
+--------------
+
+ - [QT-567] Implementation of QtMultimedia QAudio* APIs
+ - [QTBUG-8919] Modified Phonon MMF backend to support video playback on
+ platforms which use graphics surfaces (i.e. platforms using the
+ New Graphics Architecture a.k.a. ScreenPlay)
+
****************************************************************************
* Tools *
****************************************************************************
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index 77b42a9..1d00b03 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -70,11 +70,15 @@ QMAKE_LIBS_GUI = $$QMAKE_LIBS_CORE -lfbscli -lbitgdi -lhal -lgdi -lws32
QMAKE_LIBS_NETWORK =
QMAKE_LIBS_EGL = -llibEGL
QMAKE_LIBS_OPENGL =
-QMAKE_LIBS_OPENVG = -llibOpenVG -lgraphicsresource -lfbscli -lbitgdi -lgdi
+QMAKE_LIBS_OPENVG = -llibOpenVG -lfbscli -lbitgdi -lgdi
QMAKE_LIBS_COMPAT =
QMAKE_LIBS_QT_ENTRY = -llibcrt0.lib
QMAKE_LIBS_S60 = -lavkon
+exists($${EPOCROOT}epoc32/include/platform/sgresource/sgimage.h) {
+ QMAKE_LIBS_OPENVG += -lsgresource
+}
+
contains(QMAKE_HOST.os,Windows) {
QMAKE_COPY = copy /y
QMAKE_COPY_DIR = xcopy /s /q /y /i
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index a2d5f37..def66ef 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -8,4 +8,4 @@ The commit imported was from the
and has the sha1 checksum
- 266a6c4f1938dd9edf4a8125faf91c62495e3ce2
+ d95c54951e7af2aa7def4346a142b2162bd89bbd
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index a3f70d3..869e225 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,49 @@
+2010-01-31 Benjamin Poulain <benjamin.poulain@nokia.com>
+
+ Reviewed by Eric Seidel.
+
+ [Qt] Enable FAST_MOBILE_SCROLLING on Qt embedded platforms
+ https://bugs.webkit.org/show_bug.cgi?id=34168
+
+ Enable FAST_MOBILE_SCROLLING for Qt on Maemo 5, Linux embedded
+ and Symbian
+
+ * WebCore.pro:
+
+2010-01-19 Daniel Bates <dbates@rim.com>
+
+ Reviewed by Adam Treat.
+
+ https://bugs.webkit.org/show_bug.cgi?id=33408
+
+ Implements an optimization to ignore fixed background images
+ (i.e. background-attachment: fixed) when a page does not contain
+ any fixed position elements so as to allow fast repaints (via bit
+ blit) when scrolling a page.
+
+ Currently, if a page has elements that specify either a fixed
+ background or a fixed position then we perform a slow repaint
+ (i.e disable blitting) so as to avoid rendering artifacts.
+ However, on low-powered/mobile devices slow repaints can cause
+ noticeable delays when scrolling a page with a fixed background
+ image. By sacrificing support for fixed background images when
+ there are no fixed elements on the page and with come care, we
+ don't need to force slow repaints and can avoid rendering artifacts.
+ Hence, on such devices we can improve the responsiveness of
+ scrolling a page with a fixed background image.
+
+ Note, this optimization is only enabled if the WebKit is built
+ with FAST_MOBILE_SCROLLING enabled.
+
+ Tests: fast/fast-mobile-scrolling/fixed-position-element.html
+ fast/fast-mobile-scrolling/no-fixed-position-elements.html
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry):
+ Disable fixed background attachment if we can blit on scroll.
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::styleWillChange):
+
2010-03-11 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Tor Arne Vestbø.
diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro
index 5654a18..735c8ef 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.pro
+++ b/src/3rdparty/webkit/WebCore/WebCore.pro
@@ -162,6 +162,10 @@ contains(DEFINES, ENABLE_SINGLE_THREADED=1) {
DEFINES += ENABLE_SVG_FONTS=0 ENABLE_SVG_FOREIGN_OBJECT=0 ENABLE_SVG_ANIMATION=0 ENABLE_SVG_AS_IMAGE=0 ENABLE_SVG_USE=0
}
+mameo5|symbian|embedded {
+ DEFINES += ENABLE_FAST_MOBILE_SCROLLING=1
+}
+
# HTML5 ruby support
!contains(DEFINES, ENABLE_RUBY=.): DEFINES += ENABLE_RUBY=1
diff --git a/src/3rdparty/webkit/WebCore/page/FrameView.cpp b/src/3rdparty/webkit/WebCore/page/FrameView.cpp
index bc4e4f2..4c3a0ab 100644
--- a/src/3rdparty/webkit/WebCore/page/FrameView.cpp
+++ b/src/3rdparty/webkit/WebCore/page/FrameView.cpp
@@ -106,6 +106,7 @@ struct ScheduledEvent {
FrameView::FrameView(Frame* frame)
: m_frame(frame)
, m_slowRepaintObjectCount(0)
+ , m_fixedObjectCount(0)
, m_layoutTimer(this, &FrameView::layoutTimerFired)
, m_layoutRoot(0)
, m_postLayoutTasksTimer(this, &FrameView::postLayoutTimerFired)
@@ -735,7 +736,7 @@ String FrameView::mediaType() const
bool FrameView::useSlowRepaints() const
{
- return m_useSlowRepaints || m_slowRepaintObjectCount > 0 || m_isOverlapped || !m_contentIsOpaque;
+ return m_useSlowRepaints || m_slowRepaintObjectCount > 0 || (platformWidget() && m_fixedObjectCount > 0) || m_isOverlapped || !m_contentIsOpaque;
}
void FrameView::setUseSlowRepaints()
@@ -759,6 +760,78 @@ void FrameView::removeSlowRepaintObject()
setCanBlitOnScroll(!useSlowRepaints());
}
+void FrameView::addFixedObject()
+{
+ if (!m_fixedObjectCount && platformWidget())
+ setCanBlitOnScroll(false);
+ ++m_fixedObjectCount;
+}
+
+void FrameView::removeFixedObject()
+{
+ ASSERT(m_fixedObjectCount > 0);
+ m_fixedObjectCount--;
+ if (!m_fixedObjectCount)
+ setCanBlitOnScroll(!useSlowRepaints());
+}
+
+void FrameView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect)
+{
+ const size_t fixedObjectThreshold = 5;
+
+ ListHashSet<RenderBox*>* positionedObjects = 0;
+ if (RenderView* root = m_frame->contentRenderer())
+ positionedObjects = root->positionedObjects();
+
+ if (!positionedObjects || positionedObjects->isEmpty()) {
+ hostWindow()->scroll(scrollDelta, rectToScroll, clipRect);
+ return;
+ }
+
+ // Get the rects of the fixed objects visible in the rectToScroll
+ Vector<IntRect, fixedObjectThreshold> subRectToUpdate;
+ bool updateInvalidatedSubRect = true;
+ ListHashSet<RenderBox*>::const_iterator end = positionedObjects->end();
+ for (ListHashSet<RenderBox*>::const_iterator it = positionedObjects->begin(); it != end; ++it) {
+ RenderBox* renderBox = *it;
+ if (renderBox->style()->position() != FixedPosition)
+ continue;
+ IntRect topLevelRect;
+ IntRect updateRect = renderBox->paintingRootRect(topLevelRect);
+ updateRect.move(-scrollX(), -scrollY());
+ updateRect.intersect(rectToScroll);
+ if (!updateRect.isEmpty()) {
+ if (subRectToUpdate.size() >= fixedObjectThreshold) {
+ updateInvalidatedSubRect = false;
+ break;
+ }
+ subRectToUpdate.append(updateRect);
+ }
+ }
+
+ // Scroll the view
+ if (updateInvalidatedSubRect) {
+ // 1) scroll
+ hostWindow()->scroll(scrollDelta, rectToScroll, clipRect);
+
+ // 2) update the area of fixed objets that has been invalidated
+ size_t fixObjectsCount = subRectToUpdate.size();
+ for (size_t i = 0; i < fixObjectsCount; ++i) {
+ IntRect updateRect = subRectToUpdate[i];
+ IntRect scrolledRect = updateRect;
+ scrolledRect.move(scrollDelta);
+ updateRect.unite(scrolledRect);
+ updateRect.intersect(rectToScroll);
+ hostWindow()->repaint(updateRect, true, false, true);
+ }
+ } else {
+ // the number of fixed objects exceed the threshold, so we repaint everything.
+ IntRect updateRect = clipRect;
+ updateRect.intersect(rectToScroll);
+ hostWindow()->repaint(updateRect, true, false, true);
+ }
+}
+
void FrameView::setIsOverlapped(bool isOverlapped)
{
if (isOverlapped == m_isOverlapped)
diff --git a/src/3rdparty/webkit/WebCore/page/FrameView.h b/src/3rdparty/webkit/WebCore/page/FrameView.h
index 3d17d2c..5243c02 100644
--- a/src/3rdparty/webkit/WebCore/page/FrameView.h
+++ b/src/3rdparty/webkit/WebCore/page/FrameView.h
@@ -143,6 +143,9 @@ public:
void addSlowRepaintObject();
void removeSlowRepaintObject();
+ void addFixedObject();
+ void removeFixedObject();
+
void beginDeferredRepaints();
void endDeferredRepaints();
void checkStopDelayingDeferredRepaints();
@@ -196,6 +199,9 @@ public:
bool isFrameViewScrollCorner(RenderScrollbarPart* scrollCorner) const { return m_scrollCorner == scrollCorner; }
void invalidateScrollCorner();
+protected:
+ virtual void scrollContentsFastPath(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect);
+
private:
FrameView(Frame*);
@@ -261,6 +267,7 @@ private:
bool m_isOverlapped;
bool m_contentIsOpaque;
unsigned m_slowRepaintObjectCount;
+ unsigned m_fixedObjectCount;
int m_borderX, m_borderY;
diff --git a/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp b/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp
index e67daf9..9e15c43 100644
--- a/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp
@@ -509,7 +509,7 @@ void ScrollView::scrollContents(const IntSize& scrollDelta)
if (canBlitOnScroll()) { // The main frame can just blit the WebView window
// FIXME: Find a way to blit subframes without blitting overlapping content
- hostWindow()->scroll(-scrollDelta, scrollViewRect, clipRect);
+ scrollContentsFastPath(-scrollDelta, scrollViewRect, clipRect);
} else {
// We need to go ahead and repaint the entire backing store. Do it now before moving the
// windowed plugins.
@@ -524,6 +524,11 @@ void ScrollView::scrollContents(const IntSize& scrollDelta)
hostWindow()->paint();
}
+void ScrollView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect)
+{
+ hostWindow()->scroll(scrollDelta, rectToScroll, clipRect);
+}
+
IntPoint ScrollView::windowToContents(const IntPoint& windowPoint) const
{
IntPoint viewPoint = convertFromContainingWindow(windowPoint);
diff --git a/src/3rdparty/webkit/WebCore/platform/ScrollView.h b/src/3rdparty/webkit/WebCore/platform/ScrollView.h
index 5dacff5..7060d07 100644
--- a/src/3rdparty/webkit/WebCore/platform/ScrollView.h
+++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.h
@@ -244,6 +244,9 @@ protected:
IntRect scrollCornerRect() const;
virtual void updateScrollCorner();
virtual void paintScrollCorner(GraphicsContext*, const IntRect& cornerRect);
+
+ // Scroll the content by blitting the pixels
+ virtual void scrollContentsFastPath(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect);
private:
RefPtr<Scrollbar> m_horizontalScrollbar;
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h b/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h
index 7ba5fce..3300d01 100644
--- a/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h
+++ b/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h
@@ -75,6 +75,7 @@ public:
void insertPositionedObject(RenderBox*);
void removePositionedObject(RenderBox*);
void removePositionedObjects(RenderBlock*);
+ ListHashSet<RenderBox*>* positionedObjects() const { return m_positionedObjects; }
void addPercentHeightDescendant(RenderBox*);
static void removePercentHeightDescendant(RenderBox*);
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp
index 1df82a4..7ca2ff8 100644
--- a/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp
+++ b/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp
@@ -145,6 +145,16 @@ void RenderBox::styleWillChange(StyleDifference diff, const RenderStyle* newStyl
removeFloatingOrPositionedChildFromBlockLists();
}
}
+ if (FrameView *frameView = view()->frameView()) {
+ bool newStyleIsFixed = newStyle && newStyle->position() == FixedPosition;
+ bool oldStyleIsFixed = style() && style()->position() == FixedPosition;
+ if (newStyleIsFixed != oldStyleIsFixed) {
+ if (newStyleIsFixed)
+ frameView->addFixedObject();
+ else
+ frameView->removeFixedObject();
+ }
+ }
RenderBoxModelObject::styleWillChange(diff, newStyle);
}
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp
index 23dad2d..9d0f1ed 100644
--- a/src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp
+++ b/src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp
@@ -557,6 +557,17 @@ void RenderBoxModelObject::calculateBackgroundImageGeometry(const FillLayer* fil
// Determine the background positioning area and set destRect to the background painting area.
// destRect will be adjusted later if the background is non-repeating.
bool fixedAttachment = fillLayer->attachment() == FixedBackgroundAttachment;
+
+#if ENABLE(FAST_MOBILE_SCROLLING)
+ if (view()->frameView() && view()->frameView()->canBlitOnScroll()) {
+ // As a side effect of an optimization to blit on scroll, we do not honor the CSS
+ // property "background-attachment: fixed" because it may result in rendering
+ // artifacts. Note, these artifacts only appear if we are blitting on scroll of
+ // a page that has fixed background images.
+ fixedAttachment = false;
+ }
+#endif
+
if (!fixedAttachment) {
destRect = IntRect(tx, ty, w, h);
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp
index a10ffd9..199de4a 100644
--- a/src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp
+++ b/src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp
@@ -1591,10 +1591,17 @@ void RenderObject::styleWillChange(StyleDifference diff, const RenderStyle* newS
s_affectsParentBlock = false;
if (view()->frameView()) {
- // FIXME: A better solution would be to only invalidate the fixed regions when scrolling. It's overkill to
- // prevent the entire view from blitting on a scroll.
- bool newStyleSlowScroll = newStyle && (newStyle->position() == FixedPosition || newStyle->hasFixedBackgroundImage());
- bool oldStyleSlowScroll = m_style && (m_style->position() == FixedPosition || m_style->hasFixedBackgroundImage());
+ bool shouldBlitOnFixedBackgroundImage = false;
+#if ENABLE(FAST_MOBILE_SCROLLING)
+ // On low-powered/mobile devices, preventing blitting on a scroll can cause noticeable delays
+ // when scrolling a page with a fixed background image. As an optimization, assuming there are
+ // no fixed positoned elements on the page, we can acclerate scrolling (via blitting) if we
+ // ignore the CSS property "background-attachment: fixed".
+ shouldBlitOnFixedBackgroundImage = true;
+#endif
+
+ bool newStyleSlowScroll = newStyle && !shouldBlitOnFixedBackgroundImage && newStyle->hasFixedBackgroundImage();
+ bool oldStyleSlowScroll = m_style && !shouldBlitOnFixedBackgroundImage && m_style->hasFixedBackgroundImage();
if (oldStyleSlowScroll != newStyleSlowScroll) {
if (oldStyleSlowScroll)
view()->frameView()->removeSlowRepaintObject();
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
index ceb5ee1..a80c5d3 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
@@ -30,6 +30,7 @@
#include <QtGui/qapplication.h>
#include <QtGui/qgraphicssceneevent.h>
#include <QtGui/qstyleoption.h>
+#include <QtGui/qinputcontext.h>
#if defined(Q_WS_X11)
#include <QX11Info>
#endif
@@ -63,6 +64,8 @@ public:
void _q_doLoadFinished(bool success);
+ void _q_updateMicroFocus();
+
QGraphicsWebView* q;
QWebPage* page;
};
@@ -80,6 +83,20 @@ void QGraphicsWebViewPrivate::_q_doLoadFinished(bool success)
emit q->loadFinished(success);
}
+void QGraphicsWebViewPrivate::_q_updateMicroFocus()
+{
+#if !defined(QT_NO_IM) && (defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN))
+ // Ideally, this should be handled by a common call to an updateMicroFocus function
+ // in QGraphicsItem. See http://bugreports.qt.nokia.com/browse/QTBUG-7578.
+ QList<QGraphicsView*> views = q->scene()->views();
+ for (int c = 0; c < views.size(); ++c) {
+ QInputContext* ic = views.at(c)->inputContext();
+ if (ic)
+ ic->update();
+ }
+#endif
+}
+
void QGraphicsWebViewPrivate::scroll(int dx, int dy, const QRect& rectToScroll)
{
q->scroll(qreal(dx), qreal(dy), QRectF(rectToScroll));
@@ -435,6 +452,8 @@ void QGraphicsWebView::setPage(QWebPage* page)
this, SIGNAL(statusBarMessage(QString)));
connect(d->page, SIGNAL(linkClicked(QUrl)),
this, SIGNAL(linkClicked(QUrl)));
+ connect(d->page, SIGNAL(microFocusChanged()),
+ this, SLOT(_q_updateMicroFocus()));
}
/*!
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h
index f3afb4c..68379a2 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h
@@ -140,3 +140,4 @@ private:
};
#endif // QGraphicsWebView_h
+ Q_PRIVATE_SLOT(d, void _q_updateMicroFocus())
diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog
index e54c176..a5441cd 100644
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog
@@ -1,3 +1,15 @@
+2010-03-21 Kristian Amlie <kristian.amlie@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ Fixed updating the VKB display when inputting into QGraphicsWebView.
+ https://bugs.webkit.org/show_bug.cgi?id=36292
+
+ * Api/qgraphicswebview.cpp:
+ (QGraphicsWebViewPrivate::_q_updateMicroFocus):
+ (QGraphicsWebView::setPage):
+ * Api/qgraphicswebview.h:
+
2010-03-04 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Kenneth Rohde Christiansen.
diff --git a/src/corelib/animation/qanimationgroup.cpp b/src/corelib/animation/qanimationgroup.cpp
index a89f949..2decda3 100644
--- a/src/corelib/animation/qanimationgroup.cpp
+++ b/src/corelib/animation/qanimationgroup.cpp
@@ -244,7 +244,7 @@ QAbstractAnimation *QAnimationGroup::takeAnimation(int index)
// in ChildRemoved event
d->animations.removeAt(index);
animation->setParent(0);
- d->animationRemovedAt(index);
+ d->animationRemoved(index, animation);
return animation;
}
@@ -285,7 +285,7 @@ bool QAnimationGroup::event(QEvent *event)
}
-void QAnimationGroupPrivate::animationRemovedAt(int index)
+void QAnimationGroupPrivate::animationRemoved(int index, QAbstractAnimation *)
{
Q_Q(QAnimationGroup);
Q_UNUSED(index);
diff --git a/src/corelib/animation/qanimationgroup_p.h b/src/corelib/animation/qanimationgroup_p.h
index 394773b..45603b3 100644
--- a/src/corelib/animation/qanimationgroup_p.h
+++ b/src/corelib/animation/qanimationgroup_p.h
@@ -72,8 +72,19 @@ public:
isGroup = true;
}
- virtual void animationInsertedAt(int index) { Q_UNUSED(index) };
- virtual void animationRemovedAt(int index);
+ virtual void animationInsertedAt(int) { }
+ virtual void animationRemoved(int, QAbstractAnimation *);
+
+ void disconnectUncontrolledAnimation(QAbstractAnimation *anim)
+ {
+ //0 for the signal here because we might be called from the animation destructor
+ QObject::disconnect(anim, 0, q_func(), SLOT(_q_uncontrolledAnimationFinished()));
+ }
+
+ void connectUncontrolledAnimation(QAbstractAnimation *anim)
+ {
+ QObject::connect(anim, SIGNAL(finished()), q_func(), SLOT(_q_uncontrolledAnimationFinished()));
+ }
QList<QAbstractAnimation *> animations;
};
diff --git a/src/corelib/animation/qparallelanimationgroup.cpp b/src/corelib/animation/qparallelanimationgroup.cpp
index eaa0364..280afed 100644
--- a/src/corelib/animation/qparallelanimationgroup.cpp
+++ b/src/corelib/animation/qparallelanimationgroup.cpp
@@ -246,11 +246,9 @@ void QParallelAnimationGroupPrivate::_q_uncontrolledAnimationFinished()
void QParallelAnimationGroupPrivate::disconnectUncontrolledAnimations()
{
- Q_Q(QParallelAnimationGroup);
-
QHash<QAbstractAnimation *, int>::iterator it = uncontrolledFinishTime.begin();
while (it != uncontrolledFinishTime.end()) {
- QObject::disconnect(it.key(), SIGNAL(finished()), q, SLOT(_q_uncontrolledAnimationFinished()));
+ disconnectUncontrolledAnimation(it.key());
++it;
}
@@ -259,13 +257,11 @@ void QParallelAnimationGroupPrivate::disconnectUncontrolledAnimations()
void QParallelAnimationGroupPrivate::connectUncontrolledAnimations()
{
- Q_Q(QParallelAnimationGroup);
-
for (int i = 0; i < animations.size(); ++i) {
QAbstractAnimation *animation = animations.at(i);
if (animation->duration() == -1 || animation->loopCount() < 0) {
uncontrolledFinishTime[animation] = -1;
- QObject::connect(animation, SIGNAL(finished()), q, SLOT(_q_uncontrolledAnimationFinished()));
+ connectUncontrolledAnimation(animation);
}
}
}
@@ -305,6 +301,13 @@ bool QParallelAnimationGroupPrivate::isUncontrolledAnimationFinished(QAbstractAn
return uncontrolledFinishTime.value(anim, -1) >= 0;
}
+void QParallelAnimationGroupPrivate::animationRemoved(int index, QAbstractAnimation *anim)
+{
+ QAnimationGroupPrivate::animationRemoved(index, anim);
+ disconnectUncontrolledAnimation(anim);
+ uncontrolledFinishTime.remove(anim);
+}
+
/*!
\reimp
*/
diff --git a/src/corelib/animation/qparallelanimationgroup_p.h b/src/corelib/animation/qparallelanimationgroup_p.h
index a74d496..cab4fa9 100644
--- a/src/corelib/animation/qparallelanimationgroup_p.h
+++ b/src/corelib/animation/qparallelanimationgroup_p.h
@@ -80,6 +80,8 @@ public:
void connectUncontrolledAnimations();
void disconnectUncontrolledAnimations();
+ void animationRemoved(int index, QAbstractAnimation *);
+
// private slot
void _q_uncontrolledAnimationFinished();
};
diff --git a/src/corelib/animation/qsequentialanimationgroup.cpp b/src/corelib/animation/qsequentialanimationgroup.cpp
index 8ab084a..7617c1f 100644
--- a/src/corelib/animation/qsequentialanimationgroup.cpp
+++ b/src/corelib/animation/qsequentialanimationgroup.cpp
@@ -479,7 +479,7 @@ void QSequentialAnimationGroupPrivate::activateCurrentAnimation(bool intermediat
// connects to the finish signal of uncontrolled animations
if (currentAnimation->totalDuration() == -1)
- QObject::connect(currentAnimation, SIGNAL(finished()), q, SLOT(_q_uncontrolledAnimationFinished()));
+ connectUncontrolledAnimation(currentAnimation);
currentAnimation->start();
if (!intermediate && state == QSequentialAnimationGroup::Paused)
@@ -496,7 +496,7 @@ void QSequentialAnimationGroupPrivate::_q_uncontrolledAnimationFinished()
actualDuration.append(-1);
actualDuration[currentAnimationIndex] = currentAnimation->currentTime();
- QObject::disconnect(currentAnimation, SIGNAL(finished()), q, SLOT(_q_uncontrolledAnimationFinished()));
+ disconnectUncontrolledAnimation(currentAnimation);
if ((direction == QAbstractAnimation::Forward && currentAnimation == animations.last())
|| (direction == QAbstractAnimation::Backward && currentAnimationIndex == 0)) {
@@ -543,10 +543,10 @@ void QSequentialAnimationGroupPrivate::animationInsertedAt(int index)
the group at index \a index. The animation is no more listed when this
method is called.
*/
-void QSequentialAnimationGroupPrivate::animationRemovedAt(int index)
+void QSequentialAnimationGroupPrivate::animationRemoved(int index, QAbstractAnimation *anim)
{
Q_Q(QSequentialAnimationGroup);
- QAnimationGroupPrivate::animationRemovedAt(index);
+ QAnimationGroupPrivate::animationRemoved(index, anim);
Q_ASSERT(currentAnimation); // currentAnimation should always be set
@@ -555,7 +555,10 @@ void QSequentialAnimationGroupPrivate::animationRemovedAt(int index)
const int currentIndex = animations.indexOf(currentAnimation);
if (currentIndex == -1) {
- //we're removing the current animation, let's update it to another one
+ //we're removing the current animation
+
+ disconnectUncontrolledAnimation(currentAnimation);
+
if (index < animations.count())
setCurrentAnimation(index); //let's try to take the next one
else if (index > 0)
diff --git a/src/corelib/animation/qsequentialanimationgroup_p.h b/src/corelib/animation/qsequentialanimationgroup_p.h
index a55e136..de69916 100644
--- a/src/corelib/animation/qsequentialanimationgroup_p.h
+++ b/src/corelib/animation/qsequentialanimationgroup_p.h
@@ -85,7 +85,7 @@ public:
void activateCurrentAnimation(bool intermediate = false);
void animationInsertedAt(int index);
- void animationRemovedAt(int index);
+ void animationRemoved(int index, QAbstractAnimation *anim);
bool atEnd() const;
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index 82210f3..fcfeaf9 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -2414,12 +2414,15 @@ QT3_SUPPORT Q_CORE_EXPORT const char *qInstallPathSysconf();
#define Q_SYMBIAN_FIXED_POINTER_CURSORS
#define Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE
#define Q_SYMBIAN_WINDOW_SIZE_CACHE
-//enabling new graphics resources
-#define QT_SYMBIAN_SUPPORTS_SGIMAGE
#define QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER
+//enabling new graphics resources
+#ifdef SYMBIAN_GRAPHICS_EGL_SGIMAGELITE
+# define QT_SYMBIAN_SUPPORTS_SGIMAGE
+#endif
+
#ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS
-#define Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE
+# define Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE
#endif
#endif
diff --git a/src/corelib/io/qprocess_symbian.cpp b/src/corelib/io/qprocess_symbian.cpp
index e37bdda..85c89d5 100644
--- a/src/corelib/io/qprocess_symbian.cpp
+++ b/src/corelib/io/qprocess_symbian.cpp
@@ -237,11 +237,15 @@ static void qt_create_symbian_commandline(const QStringList &arguments, QString
--i;
endQuote += QLatin1String("\\");
}
- commandLine += QLatin1String(" \"") + tmp.left(i) + endQuote;
+ commandLine += QLatin1String("\"") + tmp.left(i) + endQuote + QLatin1Char(' ');
} else {
- commandLine += QLatin1Char(' ') + tmp;
+ commandLine += tmp + QLatin1Char(' ');
}
}
+
+ // Chop the extra trailing space if any arguments were appended
+ if (arguments.size())
+ commandLine.chop(1);
}
static TInt qt_create_symbian_process(RProcess **proc, const QString &programName, const QStringList &arguments)
diff --git a/src/corelib/kernel/qcore_symbian_p.cpp b/src/corelib/kernel/qcore_symbian_p.cpp
index a0a80c8..402eccf 100644
--- a/src/corelib/kernel/qcore_symbian_p.cpp
+++ b/src/corelib/kernel/qcore_symbian_p.cpp
@@ -132,27 +132,10 @@ private:
void init()
{
#ifdef Q_WS_S60
-# if defined(QT_LIBINFIX)
-# define S60_LIBNAME_3_1 "qts60plugin_3_1" QT_LIBINFIX ".dll"
-# define S60_LIBNAME_3_2 "qts60plugin_3_2" QT_LIBINFIX ".dll"
-# define S60_LIBNAME_5_0 "qts60plugin_5_0" QT_LIBINFIX ".dll"
-
- TPtrC8 ptrLibName_3_1(reinterpret_cast<const TUint8 *>(S60_LIBNAME_3_1));
- TPtrC8 ptrLibName_3_2(reinterpret_cast<const TUint8 *>(S60_LIBNAME_3_2));
- TPtrC8 ptrLibName_5_0(reinterpret_cast<const TUint8 *>(S60_LIBNAME_5_0));
-
- TFileName KLibName_3_1;
- TFileName KLibName_3_2;
- TFileName KLibName_5_0;
-
- KLibName_3_1.Copy(ptrLibName_3_1);
- KLibName_3_2.Copy(ptrLibName_3_2);
- KLibName_5_0.Copy(ptrLibName_5_0);
-# else
- _LIT(KLibName_3_1, "qts60plugin_3_1.dll");
- _LIT(KLibName_3_2, "qts60plugin_3_2.dll");
- _LIT(KLibName_5_0, "qts60plugin_5_0.dll");
-# endif
+ _LIT(KLibName_3_1, "qts60plugin_3_1" QT_LIBINFIX_UNICODE L".dll");
+ _LIT(KLibName_3_2, "qts60plugin_3_2" QT_LIBINFIX_UNICODE L".dll");
+ _LIT(KLibName_5_0, "qts60plugin_5_0" QT_LIBINFIX_UNICODE L".dll");
+
TPtrC libName;
TInt uidValue;
switch (QSysInfo::s60Version()) {
diff --git a/src/corelib/kernel/qcore_symbian_p.h b/src/corelib/kernel/qcore_symbian_p.h
index 9f282d5..4a515ce 100644
--- a/src/corelib/kernel/qcore_symbian_p.h
+++ b/src/corelib/kernel/qcore_symbian_p.h
@@ -60,6 +60,15 @@
#include <qhash.h>
#include <f32file.h>
+#define QT_LSTRING2(x) L##x
+#define QT_LSTRING(x) QT_LSTRING2(x)
+
+#if defined(QT_LIBINFIX)
+# define QT_LIBINFIX_UNICODE QT_LSTRING(QT_LIBINFIX)
+#else
+# define QT_LIBINFIX_UNICODE L""
+#endif
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/kernel/qobjectdefs.h b/src/corelib/kernel/qobjectdefs.h
index 8ed7f3f..f496354 100644
--- a/src/corelib/kernel/qobjectdefs.h
+++ b/src/corelib/kernel/qobjectdefs.h
@@ -78,6 +78,7 @@ class QString;
#define Q_CLASSINFO(name, value)
#define Q_INTERFACES(x)
#define Q_PROPERTY(text)
+#define Q_PRIVATE_PROPERTY(d, text)
#define Q_OVERRIDE(text)
#define Q_ENUMS(x)
#define Q_FLAGS(x)
@@ -178,6 +179,7 @@ private:
#define Q_CLASSINFO(name, value) Q_CLASSINFO(name, value)
#define Q_INTERFACES(x) Q_INTERFACES(x)
#define Q_PROPERTY(text) Q_PROPERTY(text)
+#define Q_PRIVATE_PROPERTY(d, text) Q_PRIVATE_PROPERTY(d, text)
#define Q_OVERRIDE(text) Q_OVERRIDE(text)
#define Q_ENUMS(x) Q_ENUMS(x)
#define Q_FLAGS(x) Q_FLAGS(x)
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp
index bd7e626..9d5c49f 100644
--- a/src/corelib/statemachine/qstatemachine.cpp
+++ b/src/corelib/statemachine/qstatemachine.cpp
@@ -1175,6 +1175,16 @@ void QStateMachinePrivate::removeStartState()
_startState = 0;
}
+void QStateMachinePrivate::clearHistory()
+{
+ Q_Q(QStateMachine);
+ QList<QHistoryState*> historyStates = qFindChildren<QHistoryState*>(q);
+ for (int i = 0; i < historyStates.size(); ++i) {
+ QHistoryState *h = historyStates.at(i);
+ QHistoryStatePrivate::get(h)->configuration.clear();
+ }
+}
+
void QStateMachinePrivate::_q_start()
{
Q_Q(QStateMachine);
@@ -1186,6 +1196,7 @@ void QStateMachinePrivate::_q_start()
internalEventQueue.clear();
qDeleteAll(externalEventQueue);
externalEventQueue.clear();
+ clearHistory();
#ifdef QSTATEMACHINE_DEBUG
qDebug() << q << ": starting";
diff --git a/src/corelib/statemachine/qstatemachine_p.h b/src/corelib/statemachine/qstatemachine_p.h
index 0fead5d..5e1015f 100644
--- a/src/corelib/statemachine/qstatemachine_p.h
+++ b/src/corelib/statemachine/qstatemachine_p.h
@@ -126,6 +126,8 @@ public:
QState *startState();
void removeStartState();
+ void clearHistory();
+
void microstep(QEvent *event, const QList<QAbstractTransition*> &transitionList);
bool isPreempted(const QAbstractState *s, const QSet<QAbstractTransition*> &transitions) const;
QSet<QAbstractTransition*> selectTransitions(QEvent *event) const;
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 4ee2301..6934abc 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -4285,6 +4285,12 @@ static void _q_paintIntoCache(QPixmap *pix, QGraphicsItem *item, const QRegion &
if (!subPix.isNull()) {
// Blit the subpixmap into the main pixmap.
pixmapPainter.begin(pix);
+ if (item->cacheMode() == QGraphicsItem::DeviceCoordinateCache
+ && itemToPixmap.type() > QTransform::TxTranslate) {
+ pixmapPainter.setCompositionMode(QPainter::CompositionMode_SourceAtop);
+ } else {
+ pixmapPainter.setCompositionMode(QPainter::CompositionMode_Source);
+ }
pixmapPainter.setClipRegion(pixmapExposed);
pixmapPainter.drawPixmap(br.topLeft(), subPix);
pixmapPainter.end();
diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp
index 5e01785..f42fe4f 100644
--- a/src/gui/graphicsview/qgraphicswidget.cpp
+++ b/src/gui/graphicsview/qgraphicswidget.cpp
@@ -384,7 +384,7 @@ void QGraphicsWidget::setGeometry(const QRectF &rect)
}
QSizeF oldSize = size();
QGraphicsLayoutItem::setGeometry(newGeom);
-
+ emit geometryChanged();
// Send resize event
bool resized = newGeom.size() != oldSize;
if (resized) {
diff --git a/src/gui/graphicsview/qgraphicswidget.h b/src/gui/graphicsview/qgraphicswidget.h
index f1d382b..468a134 100644
--- a/src/gui/graphicsview/qgraphicswidget.h
+++ b/src/gui/graphicsview/qgraphicswidget.h
@@ -73,7 +73,7 @@ class Q_GUI_EXPORT QGraphicsWidget : public QGraphicsObject, public QGraphicsLay
Q_PROPERTY(QPalette palette READ palette WRITE setPalette)
Q_PROPERTY(QFont font READ font WRITE setFont)
Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection RESET unsetLayoutDirection)
- Q_PROPERTY(QSizeF size READ size WRITE resize)
+ Q_PROPERTY(QSizeF size READ size WRITE resize NOTIFY geometryChanged)
Q_PROPERTY(QSizeF minimumSize READ minimumSize WRITE setMinimumSize)
Q_PROPERTY(QSizeF preferredSize READ preferredSize WRITE setPreferredSize)
Q_PROPERTY(QSizeF maximumSize READ maximumSize WRITE setMaximumSize)
@@ -81,11 +81,10 @@ class Q_GUI_EXPORT QGraphicsWidget : public QGraphicsObject, public QGraphicsLay
Q_PROPERTY(Qt::FocusPolicy focusPolicy READ focusPolicy WRITE setFocusPolicy)
Q_PROPERTY(Qt::WindowFlags windowFlags READ windowFlags WRITE setWindowFlags)
Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle)
- Q_PROPERTY(QRectF geometry READ geometry WRITE setGeometry)
+ Q_PROPERTY(QRectF geometry READ geometry WRITE setGeometry NOTIFY geometryChanged)
public:
QGraphicsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0);
~QGraphicsWidget();
-
QGraphicsLayout *layout() const;
void setLayout(QGraphicsLayout *layout);
void adjustSize();
@@ -175,6 +174,9 @@ public:
using QObject::children;
#endif
+Q_SIGNALS:
+ void geometryChanged();
+
public Q_SLOTS:
bool close();
diff --git a/src/gui/kernel/qsound.cpp b/src/gui/kernel/qsound.cpp
index 165e6ce..9d8ffa5 100644
--- a/src/gui/kernel/qsound.cpp
+++ b/src/gui/kernel/qsound.cpp
@@ -147,12 +147,13 @@ public:
supports WAVE and AU files.
\row
\o Mac OS X
- \o NSSound is used. All formats that NSSound supports, including QuickTime formats,
+ \o NSSound is used. All formats that NSSound supports, including QuickTime formats,
are supported by Qt for Mac OS X.
\row
\o Qt for Embedded Linux
\o A built-in mixing sound server is used, accessing \c /dev/dsp
directly. Only the WAVE format is supported.
+ \row
\o Symbian
\o CMdaAudioPlayerUtility is used. All formats that Symbian OS or devices support
are supported also by Qt.
diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp
index 10fb009..9660de5 100644
--- a/src/gui/kernel/qwidget_x11.cpp
+++ b/src/gui/kernel/qwidget_x11.cpp
@@ -369,7 +369,7 @@ Q_GUI_EXPORT void qt_x11_wait_for_window_manager(QWidget* w)
// ConfigureNotify ... MapNotify ... Expose
enum State {
- Initial, Reparented, Mapped
+ Initial, Mapped
} state = Initial;
do {
@@ -377,33 +377,15 @@ Q_GUI_EXPORT void qt_x11_wait_for_window_manager(QWidget* w)
XNextEvent(X11->display, &ev);
qApp->x11ProcessEvent(&ev);
- if (w->windowFlags() & Qt::X11BypassWindowManagerHint) {
- switch (state) {
- case Initial:
- case Reparented:
- if (ev.type == MapNotify && ev.xany.window == winid)
- state = Mapped;
- break;
- case Mapped:
- if (ev.type == Expose && ev.xany.window == winid)
- return;
- break;
- }
- } else {
- switch (state) {
- case Initial:
- if (ev.type == ReparentNotify && ev.xany.window == winid)
- state = Reparented;
- break;
- case Reparented:
- if (ev.type == MapNotify && ev.xany.window == winid)
- state = Mapped;
- break;
- case Mapped:
- if (ev.type == Expose && ev.xany.window == winid)
- return;
- break;
- }
+ switch (state) {
+ case Initial:
+ if (ev.type == MapNotify && ev.xany.window == winid)
+ state = Mapped;
+ break;
+ case Mapped:
+ if (ev.type == Expose && ev.xany.window == winid)
+ return;
+ break;
}
} else {
if (!XEventsQueued(X11->display, QueuedAfterFlush))
diff --git a/src/gui/s60framework/qs60mainapplication.cpp b/src/gui/s60framework/qs60mainapplication.cpp
index 2a7c4aa..41ac1a8 100644
--- a/src/gui/s60framework/qs60mainapplication.cpp
+++ b/src/gui/s60framework/qs60mainapplication.cpp
@@ -41,6 +41,7 @@
// INCLUDE FILES
#include <exception>
+#include <private/qcore_symbian_p.h>
#include "qs60maindocument.h"
#include "qs60mainapplication_p.h"
#include "qs60mainapplication.h"
@@ -57,17 +58,17 @@ CApaApplication *newS60Application()
return new QS60MainApplication;
}
-_LIT(KQtWrapperResourceFile, "\\resource\\apps\\s60main.rsc");
+_LIT(KQtWrapperResourceFile, "\\resource\\apps\\s60main" QT_LIBINFIX_UNICODE L".rsc");
/*!
\class QS60MainApplication
\since 4.6
\brief The QS60MainApplication class provides support for migration from S60.
-
+
\warning This class is provided only to get access to S60 specific
functionality in the application framework classes. It is not
portable. We strongly recommend against using it in new applications.
-
+
The QS60MainApplication provides a helper class for use in migrating
from existing S60 based applications to Qt based applications. It is
used in the exact same way as the \c CAknApplication class from
diff --git a/src/gui/s60framework/qs60mainappui.cpp b/src/gui/s60framework/qs60mainappui.cpp
index 012985b..3b5b9d3 100644
--- a/src/gui/s60framework/qs60mainappui.cpp
+++ b/src/gui/s60framework/qs60mainappui.cpp
@@ -45,7 +45,15 @@
#include <eikmenub.h>
#include <eikmenup.h>
#include <barsread.h>
-#include <s60main.rsg>
+#include <qconfig.h>
+#if defined(QT_LIBINFIX_UNQUOTED)
+// Two level macro needed for proper expansion of libinfix
+# define QT_S60MAIN_RSG_2(x) <s60main##x##.rsg>
+# define QT_S60MAIN_RSG(x) QT_S60MAIN_RSG_2(x)
+# include QT_S60MAIN_RSG(QT_LIBINFIX_UNQUOTED)
+#else
+# include <s60main.rsg>
+#endif
#include <avkon.rsg>
#include "qs60mainappui.h"
diff --git a/src/gui/s60framework/s60framework.pri b/src/gui/s60framework/s60framework.pri
index 6080e6d..d30f80a 100644
--- a/src/gui/s60framework/s60framework.pri
+++ b/src/gui/s60framework/s60framework.pri
@@ -4,6 +4,7 @@
minimalAppResource31 = \
"SOURCEPATH s60framework" \
"START RESOURCE s60main.rss" \
+ "TARGET s60main$${QT_LIBINFIX}" \
"HEADER" \
"TARGETPATH /resource/apps" \
"END"
@@ -17,3 +18,5 @@ HEADERS += s60framework/qs60mainapplication_p.h \
s60framework/qs60mainapplication.h \
s60framework/qs60mainappui.h \
s60framework/qs60maindocument.h
+
+!isEmpty(QT_LIBINFIX): DEFINES += QT_LIBINFIX_UNQUOTED=$$QT_LIBINFIX \ No newline at end of file
diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index a2ebebb..6448417 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -1964,40 +1964,37 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option,
case CE_MenuScroller:
break;
case CE_FocusFrame: {
- // The pen width should nearly fill the layoutspacings around the widget
- const int penWidth =
- qMin(pixelMetric(QS60Style::PM_LayoutVerticalSpacing), pixelMetric(QS60Style::PM_LayoutHorizontalSpacing))
- - 2; // But keep 1 pixel distance to the focus widget and 1 pixel to the adjacent widgets
-
#ifdef QT_KEYPAD_NAVIGATION
bool editFocus = false;
if (const QFocusFrame *focusFrame = qobject_cast<const QFocusFrame*>(widget)) {
if (focusFrame->widget() && focusFrame->widget()->hasEditFocus())
editFocus = true;
}
- const qreal opacity = editFocus ? 0.65 : 0.45; // Trial and error factors. Feel free to improve.
+ const qreal opacity = editFocus ? 1 : 0.75; // Trial and error factors. Feel free to improve.
#else
- const qreal opacity = 0.5;
+ const qreal opacity = 0.85;
#endif
- // Because of Qts coordinate system, we need to tweak the rect by .5 pixels, otherwise it gets blurred.
- const qreal rectAdjustment = (penWidth % 2) ? -.5 : 0;
-
- // Make sure that the pen stroke is inside the rect
- const QRectF adjustedRect =
- QRectF(option->rect).adjusted(
- rectAdjustment + penWidth,
- rectAdjustment + penWidth,
- -rectAdjustment - penWidth,
- -rectAdjustment - penWidth
- );
-
- const qreal roundRectRadius = penWidth * goldenRatio;
+ // We need to reduce the focus frame size if LayoutSpacing is smaller than FocusFrameMargin
+ // Otherwise, we would overlay adjacent widgets.
+ const int frameHeightReduction =
+ qMin(0, pixelMetric(QStyle::PM_LayoutVerticalSpacing)
+ - pixelMetric(QStyle::PM_FocusFrameVMargin));
+ const int frameWidthReduction =
+ qMin(0, pixelMetric(QStyle::PM_LayoutHorizontalSpacing)
+ - pixelMetric(QStyle::PM_FocusFrameHMargin));
+ const int rounding =
+ qMin(pixelMetric(QStyle::PM_FocusFrameVMargin),
+ pixelMetric(QStyle::PM_LayoutVerticalSpacing));
+ const QRect frameRect =
+ option->rect.adjusted(-frameWidthReduction, -frameHeightReduction,
+ frameWidthReduction, frameHeightReduction);
+ QPainterPath framePath;
+ framePath.addRoundedRect(frameRect, rounding, rounding);
painter->save();
painter->setRenderHint(QPainter::Antialiasing);
painter->setOpacity(opacity);
- painter->setPen(QPen(option->palette.color(QPalette::Text), penWidth));
- painter->drawRoundedRect(adjustedRect, roundRectRadius, roundRectRadius);
+ painter->fillPath(framePath, option->palette.color(QPalette::Text));
painter->restore();
}
break;
@@ -2069,11 +2066,11 @@ void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *opti
break;
case PE_IndicatorViewItemCheck:
#ifndef QT_NO_ITEMVIEWS
- if (const QListView *listItem = (qobject_cast<const QListView *>(widget))) {
+ if (const QAbstractItemView *itemView = (qobject_cast<const QAbstractItemView *>(widget))) {
if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(option)) {
const bool checkBoxVisible = vopt->features & QStyleOptionViewItemV2::HasCheckIndicator;
- const bool singleSelection = listItem->selectionMode() ==
- QAbstractItemView::SingleSelection || listItem->selectionMode() == QAbstractItemView::NoSelection;
+ const bool singleSelection = itemView->selectionMode() ==
+ QAbstractItemView::SingleSelection || itemView->selectionMode() == QAbstractItemView::NoSelection;
// draw either checkbox at the beginning
if (checkBoxVisible && singleSelection) {
drawPrimitive(PE_IndicatorCheckBox, option, painter, widget);
@@ -2475,6 +2472,12 @@ int QS60Style::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
{
int retValue = -1;
switch (sh) {
+ case SH_RequestSoftwareInputPanel:
+ if (QS60StylePrivate::isSingleClickUi())
+ retValue = RSIP_OnMouseClick;
+ else
+ retValue = RSIP_OnMouseClickAndAlreadyFocused;
+ break;
case SH_ComboBox_Popup:
retValue = true;
break;
@@ -2531,9 +2534,6 @@ int QS60Style::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
case SH_UnderlineShortcut:
retValue = 0;
break;
- case SH_RequestSoftwareInputPanel:
- retValue = RSIP_OnMouseClickAndAlreadyFocused;
- break;
case SH_FormLayoutWrapPolicy:
retValue = QFormLayout::WrapLongRows;
break;
diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp
index 5202701..14782d8 100644
--- a/src/gui/styles/qs60style_s60.cpp
+++ b/src/gui/styles/qs60style_s60.cpp
@@ -1121,7 +1121,7 @@ QColor QS60StylePrivate::s60Color(QS60StyleEnums::ColorLists list,
&KAknsIIDQsnParentColors,
&KAknsIIDQsnTextColors
};
- Q_ASSERT((int)list <= (int)sizeof(idMap)/sizeof(idMap[0]));
+ Q_ASSERT((int)list < (int)sizeof(idMap)/sizeof(idMap[0]));
const QColor color = QS60StyleModeSpecifics::colorValue(*idMap[(int) list], index - 1);
return option ? QS60StylePrivate::stateColor(color, option) : color;
}
diff --git a/src/gui/styles/qwindowsmobilestyle.cpp b/src/gui/styles/qwindowsmobilestyle.cpp
index 6e77409..5f939d0 100644
--- a/src/gui/styles/qwindowsmobilestyle.cpp
+++ b/src/gui/styles/qwindowsmobilestyle.cpp
@@ -5076,6 +5076,10 @@ void QWindowsMobileStyle::drawPrimitive(PrimitiveElement element, const QStyleOp
color = option->palette.buttonText().color();
QImage image;
int xoffset, yoffset;
+ bool isTabBarArrow = widget && widget->parent()
+ && widget->inherits("QToolButton")
+ && widget->parent()->inherits("QTabBar");
+
switch (element) {
case PE_IndicatorArrowUp:
image = d->imageArrowUp;
@@ -5090,12 +5094,12 @@ void QWindowsMobileStyle::drawPrimitive(PrimitiveElement element, const QStyleOp
case PE_IndicatorArrowLeft:
image = d->imageArrowLeft;
xoffset = 8;
- yoffset = 2;
+ yoffset = isTabBarArrow ? 12 : 2;
break;
case PE_IndicatorArrowRight:
image = d->imageArrowRight;
xoffset = 8;
- yoffset = 2;
+ yoffset = isTabBarArrow ? 12 : 2;
break;
case PE_IndicatorArrowUpBig:
image = d->imageArrowUpBig;
@@ -6949,10 +6953,11 @@ int QWindowsMobileStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, co
case PM_SliderThickness:
ret = d->doubleControls ? windowsMobileSliderThickness * 2: windowsMobileSliderThickness;
break;
- case PM_TabBarScrollButtonWidth:
- ret = d->doubleControls ? 14 * 2 : 18;
- case PM_CheckBoxLabelSpacing:
- case PM_RadioButtonLabelSpacing:
+ case PM_TabBarScrollButtonWidth:
+ ret = d->doubleControls ? 14 * 2 : 18;
+ break;
+ case PM_CheckBoxLabelSpacing:
+ case PM_RadioButtonLabelSpacing:
ret = d->doubleControls ? 6 * 2 : 6;
break;
// Returns the number of pixels to use for the business part of the
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index c000457..629db66 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -379,6 +379,15 @@ void QFontEngine::getGlyphPositions(const QGlyphLayout &glyphs, const QTransform
Q_ASSERT(positions.size() == glyphs_out.size());
}
+void QFontEngine::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qreal *rightBearing)
+{
+ glyph_metrics_t gi = boundingBox(glyph);
+ bool isValid = gi.isValid();
+ if (leftBearing != 0)
+ *leftBearing = isValid ? gi.x.toReal() : 0.0;
+ if (rightBearing != 0)
+ *rightBearing = isValid ? (gi.xoff - gi.x - gi.width).toReal() : 0.0;
+}
glyph_metrics_t QFontEngine::tightBoundingBox(const QGlyphLayout &glyphs)
{
@@ -1385,6 +1394,12 @@ glyph_metrics_t QFontEngineMulti::boundingBox(const QGlyphLayout &glyphs)
return overall;
}
+void QFontEngineMulti::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qreal *rightBearing)
+{
+ int which = highByte(glyph);
+ engine(which)->getGlyphBearings(stripped(glyph), leftBearing, rightBearing);
+}
+
void QFontEngineMulti::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs,
QPainterPath *path, QTextItem::RenderFlags flags)
{
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index 71ab5a5..e645caf 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -206,6 +206,8 @@ public:
virtual qreal minLeftBearing() const { return qreal(); }
virtual qreal minRightBearing() const { return qreal(); }
+ virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = 0, qreal *rightBearing = 0);
+
virtual const char *name() const = 0;
virtual bool canRender(const QChar *string, int len) = 0;
@@ -374,6 +376,7 @@ public:
virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const;
virtual void doKerning(QGlyphLayout *, QTextEngine::ShaperFlags) const;
virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags);
+ virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = 0, qreal *rightBearing = 0);
virtual QFixed ascent() const;
virtual QFixed descent() const;
diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp
index 1a815d3..a133b48 100644
--- a/src/gui/text/qfontengine_win.cpp
+++ b/src/gui/text/qfontengine_win.cpp
@@ -649,6 +649,30 @@ static const ushort char_table[] = {
static const int char_table_entries = sizeof(char_table)/sizeof(ushort);
+void QFontEngineWin::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qreal *rightBearing)
+{
+ HDC hdc = shared_dc();
+ SelectObject(hdc, hfont);
+
+#ifndef Q_WS_WINCE
+ if (ttf)
+#endif
+
+ {
+ ABC abcWidths;
+ GetCharABCWidthsI(hdc, glyph, 1, 0, &abcWidths);
+ if (leftBearing)
+ *leftBearing = abcWidths.abcA;
+ if (rightBearing)
+ *rightBearing = abcWidths.abcC;
+ }
+
+#ifndef Q_WS_WINCE
+ else {
+ QFontEngine::getGlyphBearings(glyph, leftBearing, rightBearing);
+ }
+#endif
+}
qreal QFontEngineWin::minLeftBearing() const
{
diff --git a/src/gui/text/qfontengine_win_p.h b/src/gui/text/qfontengine_win_p.h
index f9d8f8b..f19e48e 100644
--- a/src/gui/text/qfontengine_win_p.h
+++ b/src/gui/text/qfontengine_win_p.h
@@ -106,6 +106,8 @@ public:
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &xform);
virtual QImage alphaRGBMapForGlyph(glyph_t t, int margin, const QTransform &xform);
+ virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = 0, qreal *rightBearing = 0);
+
int getGlyphIndexes(const QChar *ch, int numChars, QGlyphLayout *glyphs, bool mirrored) const;
void getCMap();
diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp
index 41d0af1..44a18de 100644
--- a/src/gui/text/qfontmetrics.cpp
+++ b/src/gui/text/qfontmetrics.cpp
@@ -472,8 +472,9 @@ int QFontMetrics::leftBearing(QChar ch) const
int nglyphs = 9;
engine->stringToCMap(&ch, 1, &glyphs, &nglyphs, 0);
// ### can nglyphs != 1 happen at all? Not currently I think
- glyph_metrics_t gi = engine->boundingBox(glyphs.glyphs[0]);
- return qRound(gi.x);
+ qreal lb;
+ engine->getGlyphBearings(glyphs.glyphs[0], &lb);
+ return qRound(lb);
}
/*!
@@ -506,8 +507,9 @@ int QFontMetrics::rightBearing(QChar ch) const
int nglyphs = 9;
engine->stringToCMap(&ch, 1, &glyphs, &nglyphs, 0);
// ### can nglyphs != 1 happen at all? Not currently I think
- glyph_metrics_t gi = engine->boundingBox(glyphs.glyphs[0]);
- return qRound(gi.xoff - gi.x - gi.width);
+ qreal rb;
+ engine->getGlyphBearings(glyphs.glyphs[0], 0, &rb);
+ return qRound(rb);
}
/*!
@@ -1317,8 +1319,9 @@ qreal QFontMetricsF::leftBearing(QChar ch) const
int nglyphs = 9;
engine->stringToCMap(&ch, 1, &glyphs, &nglyphs, 0);
// ### can nglyphs != 1 happen at all? Not currently I think
- glyph_metrics_t gi = engine->boundingBox(glyphs.glyphs[0]);
- return gi.x.toReal();
+ qreal lb;
+ engine->getGlyphBearings(glyphs.glyphs[0], &lb);
+ return lb;
}
/*!
@@ -1351,8 +1354,10 @@ qreal QFontMetricsF::rightBearing(QChar ch) const
int nglyphs = 9;
engine->stringToCMap(&ch, 1, &glyphs, &nglyphs, 0);
// ### can nglyphs != 1 happen at all? Not currently I think
- glyph_metrics_t gi = engine->boundingBox(glyphs.glyphs[0]);
- return (gi.xoff - gi.x - gi.width).toReal();
+ qreal rb;
+ engine->getGlyphBearings(glyphs.glyphs[0], 0, &rb);
+ return rb;
+
}
/*!
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index af91603..3c0e85e 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1644,28 +1644,67 @@ namespace {
struct LineBreakHelper
{
- LineBreakHelper() : glyphCount(0), maxGlyphs(0), manualWrap(false) {}
+ LineBreakHelper()
+ : glyphCount(0), maxGlyphs(0), currentPosition(0), fontEngine(0), logClusters(0),
+ manualWrap(false)
+ {
+ }
+
QScriptLine tmpData;
QScriptLine spaceData;
+ QGlyphLayout glyphs;
+
int glyphCount;
int maxGlyphs;
+ int currentPosition;
QFixed minw;
QFixed softHyphenWidth;
QFixed rightBearing;
+ QFixed minimumRightBearing;
+
+ QFontEngine *fontEngine;
+ const unsigned short *logClusters;
bool manualWrap;
bool checkFullOtherwiseExtend(QScriptLine &line);
+
+ QFixed calculateNewWidth(const QScriptLine &line) const {
+ return line.textWidth + tmpData.textWidth + spaceData.textWidth + softHyphenWidth
+ - qMin(rightBearing, QFixed());
+ }
+
+ inline glyph_t currentGlyph() const
+ {
+ Q_ASSERT(currentPosition > 0);
+ return glyphs.glyphs[logClusters[currentPosition - 1]];
+ }
+
+ inline void adjustRightBearing()
+ {
+ if (currentPosition <= 0)
+ return;
+
+ qreal rb;
+ fontEngine->getGlyphBearings(currentGlyph(), 0, &rb);
+ rightBearing = qMin(QFixed(), QFixed::fromReal(rb));
+ }
+
+ inline void resetRightBearing()
+ {
+ rightBearing = QFixed(1); // Any positive number is defined as invalid since only
+ // negative right bearings are interesting to us.
+ }
};
inline bool LineBreakHelper::checkFullOtherwiseExtend(QScriptLine &line)
{
LB_DEBUG("possible break width %f, spacew=%f", tmpData.textWidth.toReal(), spaceData.textWidth.toReal());
- QFixed newWidth = line.textWidth + tmpData.textWidth + spaceData.textWidth + softHyphenWidth + rightBearing;
+ QFixed newWidth = calculateNewWidth(line);
if (line.length && !manualWrap && (newWidth > line.width || glyphCount > maxGlyphs))
return true;
@@ -1741,13 +1780,12 @@ void QTextLine::layout_helper(int maxGlyphs)
Qt::Alignment alignment = eng->option.alignment();
const HB_CharAttributes *attributes = eng->attributes();
- int pos = line.from;
+ lbh.currentPosition = line.from;
int end = 0;
- QGlyphLayout glyphs;
- const unsigned short *logClusters = eng->layoutData->logClustersPtr;
+ lbh.logClusters = eng->layoutData->logClustersPtr;
while (newItem < eng->layoutData->items.size()) {
- lbh.rightBearing = 0;
+ lbh.resetRightBearing();
lbh.softHyphenWidth = 0;
if (newItem != item) {
item = newItem;
@@ -1755,13 +1793,19 @@ void QTextLine::layout_helper(int maxGlyphs)
if (!current.num_glyphs) {
eng->shape(item);
attributes = eng->attributes();
- logClusters = eng->layoutData->logClustersPtr;
+ lbh.logClusters = eng->layoutData->logClustersPtr;
}
- pos = qMax(line.from, current.position);
+ lbh.currentPosition = qMax(line.from, current.position);
end = current.position + eng->length(item);
- glyphs = eng->shapedGlyphs(&current);
+ lbh.glyphs = eng->shapedGlyphs(&current);
}
const QScriptItem &current = eng->layoutData->items[item];
+ QFontEngine *fontEngine = eng->fontEngine(current);
+ if (lbh.fontEngine != fontEngine) {
+ lbh.fontEngine = fontEngine;
+ lbh.minimumRightBearing = qMin(QFixed(),
+ QFixed::fromReal(fontEngine->minRightBearing()));
+ }
lbh.tmpData.leading = qMax(lbh.tmpData.leading + lbh.tmpData.ascent,
current.leading + current.ascent) - qMax(lbh.tmpData.ascent,
@@ -1791,8 +1835,8 @@ void QTextLine::layout_helper(int maxGlyphs)
if (!line.length && !lbh.tmpData.length)
line.setDefaultHeight(eng);
if (eng->option.flags() & QTextOption::ShowLineAndParagraphSeparators) {
- addNextCluster(pos, end, lbh.tmpData, lbh.glyphCount,
- current, logClusters, glyphs);
+ addNextCluster(lbh.currentPosition, end, lbh.tmpData, lbh.glyphCount,
+ current, lbh.logClusters, lbh.glyphs);
} else {
lbh.tmpData.length++;
}
@@ -1811,10 +1855,10 @@ void QTextLine::layout_helper(int maxGlyphs)
++lbh.glyphCount;
if (lbh.checkFullOtherwiseExtend(line))
goto found;
- } else if (attributes[pos].whiteSpace) {
- while (pos < end && attributes[pos].whiteSpace)
- addNextCluster(pos, end, lbh.spaceData, lbh.glyphCount,
- current, logClusters, glyphs);
+ } else if (attributes[lbh.currentPosition].whiteSpace) {
+ while (lbh.currentPosition < end && attributes[lbh.currentPosition].whiteSpace)
+ addNextCluster(lbh.currentPosition, end, lbh.spaceData, lbh.glyphCount,
+ current, lbh.logClusters, lbh.glyphs);
if (!lbh.manualWrap && lbh.spaceData.textWidth > line.width) {
lbh.spaceData.textWidth = line.width; // ignore spaces that fall out of the line.
@@ -1823,19 +1867,19 @@ void QTextLine::layout_helper(int maxGlyphs)
} else {
bool sb_or_ws = false;
do {
- addNextCluster(pos, end, lbh.tmpData, lbh.glyphCount,
- current, logClusters, glyphs);
+ addNextCluster(lbh.currentPosition, end, lbh.tmpData, lbh.glyphCount,
+ current, lbh.logClusters, lbh.glyphs);
- if (attributes[pos].whiteSpace || attributes[pos-1].lineBreakType != HB_NoBreak) {
+ if (attributes[lbh.currentPosition].whiteSpace || attributes[lbh.currentPosition-1].lineBreakType != HB_NoBreak) {
sb_or_ws = true;
break;
- } else if (breakany && attributes[pos].charStop) {
+ } else if (breakany && attributes[lbh.currentPosition].charStop) {
break;
}
- } while (pos < end);
+ } while (lbh.currentPosition < end);
lbh.minw = qMax(lbh.tmpData.textWidth, lbh.minw);
- if (pos && attributes[pos - 1].lineBreakType == HB_SoftHyphen) {
+ if (lbh.currentPosition && attributes[lbh.currentPosition - 1].lineBreakType == HB_SoftHyphen) {
// if we are splitting up a word because of
// a soft hyphen then we ...
//
@@ -1853,41 +1897,39 @@ void QTextLine::layout_helper(int maxGlyphs)
// and thus become invisible again.
//
if (line.length)
- lbh.softHyphenWidth = glyphs.advances_x[logClusters[pos - 1]];
+ lbh.softHyphenWidth = lbh.glyphs.advances_x[lbh.logClusters[lbh.currentPosition - 1]];
else if (breakany)
- lbh.tmpData.textWidth += glyphs.advances_x[logClusters[pos - 1]];
+ lbh.tmpData.textWidth += lbh.glyphs.advances_x[lbh.logClusters[lbh.currentPosition - 1]];
}
// The actual width of the text needs to take the right bearing into account. The
// right bearing is left-ward, which means that if the rightmost pixel is to the right
// of the advance of the glyph, the bearing will be negative. We flip the sign
// for the code to be more readable. Logic borrowed from qfontmetrics.cpp.
- if (pos) {
- QFontEngine *fontEngine = eng->fontEngine(current);
- glyph_t glyph = glyphs.glyphs[logClusters[pos - 1]];
- glyph_metrics_t gi = fontEngine->boundingBox(glyph);
- if (gi.isValid())
- lbh.rightBearing = qMax(QFixed(), -(gi.xoff - gi.x - gi.width));
- }
+ // We ignore the right bearing if the minimum negative bearing is too little to
+ // expand the text beyond the edge.
+ if (sb_or_ws|breakany) {
+ if (lbh.calculateNewWidth(line) + lbh.minimumRightBearing > line.width)
+ lbh.adjustRightBearing();
+ if (lbh.checkFullOtherwiseExtend(line)) {
+ if (!breakany) {
+ line.textWidth += lbh.softHyphenWidth;
+ }
- if ((sb_or_ws|breakany) && lbh.checkFullOtherwiseExtend(line)) {
- if (!breakany) {
- line.textWidth += lbh.softHyphenWidth;
+ goto found;
}
-
- line.textWidth += lbh.rightBearing;
-
- goto found;
}
}
- if (pos == end)
+ if (lbh.currentPosition == end)
newItem = item + 1;
}
LB_DEBUG("reached end of line");
lbh.checkFullOtherwiseExtend(line);
- line.textWidth += lbh.rightBearing;
-
found:
+ if (lbh.rightBearing > 0) // If right bearing has not yet been adjusted
+ lbh.adjustRightBearing();
+ line.textWidth -= qMin(QFixed(), lbh.rightBearing);
+
if (line.length == 0) {
LB_DEBUG("no break available in line, adding temp: length %d, width %f, space: length %d, width %f",
lbh.tmpData.length, lbh.tmpData.textWidth.toReal(),
diff --git a/src/gui/widgets/qspinbox.cpp b/src/gui/widgets/qspinbox.cpp
index 726426d..2d871d0 100644
--- a/src/gui/widgets/qspinbox.cpp
+++ b/src/gui/widgets/qspinbox.cpp
@@ -448,11 +448,12 @@ void QSpinBox::setRange(int minimum, int maximum)
}
/*!
- This virtual function is used by the spin box whenever it needs
- to display the given \a value. The default implementation returns
- a string containing \a value printed in the standard way using
- QWidget::locale().toString(). Reimplementations may return anything. (See
- the example in the detailed description.)
+ This virtual function is used by the spin box whenever it needs to
+ display the given \a value. The default implementation returns a
+ string containing \a value printed in the standard way using
+ QWidget::locale().toString(), but with the thousand separator
+ removed. Reimplementations may return anything. (See the example
+ in the detailed description.)
Note: QSpinBox does not call this function for specialValueText()
and that neither prefix() nor suffix() should be included in the
@@ -461,7 +462,7 @@ void QSpinBox::setRange(int minimum, int maximum)
If you reimplement this, you may also need to reimplement
valueFromText() and validate()
- \sa valueFromText(), validate()
+ \sa valueFromText(), validate(), QLocale::groupSeparator()
*/
QString QSpinBox::textFromValue(int value) const
@@ -869,7 +870,7 @@ void QDoubleSpinBox::setDecimals(int decimals)
If you reimplement this, you may also need to reimplement
valueFromText().
- \sa valueFromText()
+ \sa valueFromText(), QLocale::groupSeparator()
*/
diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp
index 7150fb7..6894978 100644
--- a/src/network/kernel/qhostinfo.cpp
+++ b/src/network/kernel/qhostinfo.cpp
@@ -479,6 +479,7 @@ void QHostInfoRunnable::run()
QHostInfoLookupManager::QHostInfoLookupManager() : mutex(QMutex::Recursive), wasDeleted(false)
{
moveToThread(QCoreApplicationPrivate::mainThread());
+ connect(QCoreApplication::instance(), SIGNAL(destroyed()), SLOT(waitForThreadPoolDone()), Qt::DirectConnection);
threadPool.setMaxThreadCount(5); // do 5 DNS lookups in parallel
}
diff --git a/src/network/kernel/qhostinfo_p.h b/src/network/kernel/qhostinfo_p.h
index 2b26b07..4fc74e9 100644
--- a/src/network/kernel/qhostinfo_p.h
+++ b/src/network/kernel/qhostinfo_p.h
@@ -184,6 +184,9 @@ protected:
QMutex mutex;
bool wasDeleted;
+
+private slots:
+ void waitForThreadPoolDone() { threadPool.waitForDone(); }
};
#endif
diff --git a/src/openvg/qpixmapdata_vg.cpp b/src/openvg/qpixmapdata_vg.cpp
index 15a2712..d602790 100644
--- a/src/openvg/qpixmapdata_vg.cpp
+++ b/src/openvg/qpixmapdata_vg.cpp
@@ -45,10 +45,10 @@
#include "qvg_p.h"
#include "qvgimagepool_p.h"
-#ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE
#include <private/qt_s60_p.h>
#include <fbs.h>
-#include <graphics/sgimage.h>
+#ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE
+#include <sgresource/sgimage.h>
typedef EGLImageKHR (*pfnEglCreateImageKHR)(EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, EGLint*);
typedef EGLBoolean (*pfnEglDestroyImageKHR)(EGLDisplay, EGLImageKHR);
typedef VGImage (*pfnVgCreateEGLImageTargetKHR)(VGeglImageKHR);
@@ -464,8 +464,8 @@ void QVGPixmapData::cleanup()
void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
{
-#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL)
if (type == QPixmapData::SgImage && pixmap) {
+#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL)
RSgImage *sgImage = reinterpret_cast<RSgImage*>(pixmap);
destroyImages();
@@ -473,23 +473,24 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
TInt err = 0;
- err = SgDriver::Open();
- if(err != KErrNone) {
+ RSgDriver driver;
+ err = driver.Open();
+ if (err != KErrNone) {
cleanup();
return;
}
- if(sgImage->IsNull()) {
+ if (sgImage->IsNull()) {
cleanup();
- SgDriver::Close();
+ driver.Close();
return;
}
TSgImageInfo sgImageInfo;
err = sgImage->GetInfo(sgImageInfo);
- if(err != KErrNone) {
+ if (err != KErrNone) {
cleanup();
- SgDriver::Close();
+ driver.Close();
return;
}
@@ -497,9 +498,9 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
pfnEglDestroyImageKHR eglDestroyImageKHR = (pfnEglDestroyImageKHR) eglGetProcAddress("eglDestroyImageKHR");
pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR");
- if(eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {
+ if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {
cleanup();
- SgDriver::Close();
+ driver.Close();
return;
}
@@ -510,17 +511,17 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
(EGLClientBuffer)sgImage,
(EGLint*)KEglImageAttribs);
- if(eglGetError() != EGL_SUCCESS) {
+ if (eglGetError() != EGL_SUCCESS) {
cleanup();
- SgDriver::Close();
+ driver.Close();
return;
}
vgImage = vgCreateEGLImageTargetKHR(eglImage);
- if(vgGetError() != VG_NO_ERROR) {
+ if (vgGetError() != VG_NO_ERROR) {
cleanup();
eglDestroyImageKHR(QEglContext::display(), eglImage);
- SgDriver::Close();
+ driver.Close();
return;
}
@@ -534,7 +535,8 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
setSerialNumber(++qt_vg_pixmap_serial);
// release stuff
eglDestroyImageKHR(QEglContext::display(), eglImage);
- SgDriver::Close();
+ driver.Close();
+#endif
} else if (type == QPixmapData::FbsBitmap) {
CFbsBitmap *bitmap = reinterpret_cast<CFbsBitmap*>(pixmap);
@@ -580,41 +582,33 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
if(deleteSourceBitmap)
delete bitmap;
}
-#else
- Q_UNUSED(pixmap);
- Q_UNUSED(type);
-#endif
}
void* QVGPixmapData::toNativeType(NativeType type)
{
-#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL)
if (type == QPixmapData::SgImage) {
+#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL)
toVGImage();
- if(!isValid() || vgImage == VG_INVALID_HANDLE)
+ if (!isValid() || vgImage == VG_INVALID_HANDLE)
return 0;
TInt err = 0;
- err = SgDriver::Open();
- if(err != KErrNone)
+ RSgDriver driver;
+ err = driver.Open();
+ if (err != KErrNone)
return 0;
TSgImageInfo sgInfo;
sgInfo.iPixelFormat = EUidPixelFormatARGB_8888_PRE;
sgInfo.iSizeInPixels.SetSize(w, h);
- sgInfo.iUsage = ESgUsageOpenVgImage | ESgUsageOpenVgTarget;
- sgInfo.iShareable = ETrue;
- sgInfo.iCpuAccess = ESgCpuAccessNone;
- sgInfo.iScreenId = KSgScreenIdMain; //KSgScreenIdAny;
- sgInfo.iUserAttributes = NULL;
- sgInfo.iUserAttributeCount = 0;
+ sgInfo.iUsage = ESgUsageBitOpenVgImage | ESgUsageBitOpenVgSurface;
RSgImage *sgImage = q_check_ptr(new RSgImage());
err = sgImage->Create(sgInfo, NULL, NULL);
- if(err != KErrNone) {
- SgDriver::Close();
+ if (err != KErrNone) {
+ driver.Close();
return 0;
}
@@ -622,8 +616,8 @@ void* QVGPixmapData::toNativeType(NativeType type)
pfnEglDestroyImageKHR eglDestroyImageKHR = (pfnEglDestroyImageKHR) eglGetProcAddress("eglDestroyImageKHR");
pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR");
- if(eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {
- SgDriver::Close();
+ if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {
+ driver.Close();
return 0;
}
@@ -633,17 +627,17 @@ void* QVGPixmapData::toNativeType(NativeType type)
EGL_NATIVE_PIXMAP_KHR,
(EGLClientBuffer)sgImage,
(EGLint*)KEglImageAttribs);
- if(eglGetError() != EGL_SUCCESS) {
+ if (eglGetError() != EGL_SUCCESS) {
sgImage->Close();
- SgDriver::Close();
+ driver.Close();
return 0;
}
VGImage dstVgImage = vgCreateEGLImageTargetKHR(eglImage);
- if(vgGetError() != VG_NO_ERROR) {
+ if (vgGetError() != VG_NO_ERROR) {
eglDestroyImageKHR(QEglContext::display(), eglImage);
sgImage->Close();
- SgDriver::Close();
+ driver.Close();
return 0;
}
@@ -651,15 +645,16 @@ void* QVGPixmapData::toNativeType(NativeType type)
vgImage, 0, 0,
w, h, VG_FALSE);
- if(vgGetError() != VG_NO_ERROR) {
+ if (vgGetError() != VG_NO_ERROR) {
sgImage->Close();
sgImage = 0;
}
// release stuff
vgDestroyImage(dstVgImage);
eglDestroyImageKHR(QEglContext::display(), eglImage);
- SgDriver::Close();
+ driver.Close();
return reinterpret_cast<void*>(sgImage);
+#endif
} else if (type == QPixmapData::FbsBitmap) {
CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap);
@@ -681,10 +676,7 @@ void* QVGPixmapData::toNativeType(NativeType type)
return reinterpret_cast<void*>(bitmap);
}
-#else
- Q_UNUSED(type);
return 0;
-#endif
}
#endif //Q_OS_SYMBIAN
diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro
index ec03673..1f6e72b 100644
--- a/src/s60installs/s60installs.pro
+++ b/src/s60installs/s60installs.pro
@@ -12,10 +12,7 @@ symbian: {
isEmpty(QT_LIBINFIX) {
TARGET.UID3 = 0x2001E61C
- # s60main.rsc and sqlite3 are expected to be already found on phone if
- # infixed configuration is built.
- DEPLOYMENT += qtresources
-
+ # sqlite3 is expected to be already found on phone if infixed configuration is built.
sqlitedeployment = \
"; Deploy sqlite onto phone that does not have it already" \
"@\"$$PWD/sqlite3.sis\", (0x2002af5f)"
@@ -26,8 +23,9 @@ symbian: {
}
VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
- qtresources.sources = $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/s60main.rsc
+ qtresources.sources = $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/s60main$${QT_LIBINFIX}.rsc
qtresources.path = c:$$APP_RESOURCE_DIR
+ DEPLOYMENT += qtresources
qtlibraries.sources = \
QtCore$${QT_LIBINFIX}.dll \
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 1199263..d6d1367 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -2921,7 +2921,7 @@ void QScriptEngine::installTranslatorFunctions(const QScriptValue &object)
JSC::JSValue jscObject = d->scriptValueToJSCValue(object);
JSC::JSGlobalObject *glob = d->originalGlobalObject();
if (!jscObject || !jscObject.isObject())
- jscObject = glob;
+ jscObject = d->globalObject();
// unsigned attribs = JSC::DontEnum;
JSC::asObject(jscObject)->putDirectFunction(exec, new (exec)JSC::NativeFunctionWrapper(exec, glob->prototypeFunctionStructure(), 5, JSC::Identifier(exec, "qsTranslate"), QScript::functionQsTranslate));
JSC::asObject(jscObject)->putDirectFunction(exec, new (exec)JSC::NativeFunctionWrapper(exec, glob->prototypeFunctionStructure(), 2, JSC::Identifier(exec, "QT_TRANSLATE_NOOP"), QScript::functionQsTranslateNoOp));
diff --git a/src/script/bridge/qscriptclassobject.cpp b/src/script/bridge/qscriptclassobject.cpp
index a3dd239..a4d9cc1 100644
--- a/src/script/bridge/qscriptclassobject.cpp
+++ b/src/script/bridge/qscriptclassobject.cpp
@@ -226,7 +226,7 @@ JSC::JSObject* ClassObjectDelegate::construct(JSC::ExecState *exec, JSC::JSObjec
QScriptClass *scriptClass = static_cast<ClassObjectDelegate*>(delegate)->scriptClass();
QScriptEnginePrivate *eng_p = scriptEngineFromExec(exec);
- //JSC::ExecState *oldFrame = eng_p->currentFrame;
+ JSC::ExecState *oldFrame = eng_p->currentFrame;
eng_p->pushContext(exec, JSC::JSValue(), args, callee, true);
QScriptContext *ctx = eng_p->contextForFrame(eng_p->currentFrame);
@@ -234,6 +234,8 @@ JSC::JSObject* ClassObjectDelegate::construct(JSC::ExecState *exec, JSC::JSObjec
QScriptValue result = qvariant_cast<QScriptValue>(scriptClass->extension(QScriptClass::Callable, qVariantFromValue(ctx)));
if (!result.isObject())
result = defaultObject;
+ eng_p->popContext();
+ eng_p->currentFrame = oldFrame;
return JSC::asObject(eng_p->scriptValueToJSCValue(result));
}
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp
index 982d95f5..ff8029b 100644
--- a/src/tools/moc/generator.cpp
+++ b/src/tools/moc/generator.cpp
@@ -738,18 +738,23 @@ void Generator::generateMetacall()
const PropertyDef &p = cdef->propertyList.at(propindex);
if (p.read.isEmpty())
continue;
+ QByteArray prefix;
+ if (p.inPrivateClass.size()) {
+ prefix = p.inPrivateClass;
+ prefix.append("->");
+ }
if (p.gspec == PropertyDef::PointerSpec)
- fprintf(out, " case %d: _a[0] = const_cast<void*>(reinterpret_cast<const void*>(%s())); break;\n",
- propindex, p.read.constData());
+ fprintf(out, " case %d: _a[0] = const_cast<void*>(reinterpret_cast<const void*>(%s%s())); break;\n",
+ propindex, prefix.constData(), p.read.constData());
else if (p.gspec == PropertyDef::ReferenceSpec)
- fprintf(out, " case %d: _a[0] = const_cast<void*>(reinterpret_cast<const void*>(&%s())); break;\n",
- propindex, p.read.constData());
+ fprintf(out, " case %d: _a[0] = const_cast<void*>(reinterpret_cast<const void*>(&%s%s())); break;\n",
+ propindex, prefix.constData(), p.read.constData());
else if (cdef->enumDeclarations.value(p.type, false))
- fprintf(out, " case %d: *reinterpret_cast<int*>(_v) = QFlag(%s()); break;\n",
- propindex, p.read.constData());
+ fprintf(out, " case %d: *reinterpret_cast<int*>(_v) = QFlag(%s%s()); break;\n",
+ propindex, prefix.constData(), p.read.constData());
else
- fprintf(out, " case %d: *reinterpret_cast< %s*>(_v) = %s(); break;\n",
- propindex, p.type.constData(), p.read.constData());
+ fprintf(out, " case %d: *reinterpret_cast< %s*>(_v) = %s%s(); break;\n",
+ propindex, p.type.constData(), prefix.constData(), p.read.constData());
}
fprintf(out, " }\n");
}
@@ -768,12 +773,17 @@ void Generator::generateMetacall()
const PropertyDef &p = cdef->propertyList.at(propindex);
if (p.write.isEmpty())
continue;
+ QByteArray prefix;
+ if (p.inPrivateClass.size()) {
+ prefix = p.inPrivateClass;
+ prefix.append("->");
+ }
if (cdef->enumDeclarations.value(p.type, false)) {
- fprintf(out, " case %d: %s(QFlag(*reinterpret_cast<int*>(_v))); break;\n",
- propindex, p.write.constData());
+ fprintf(out, " case %d: %s%s(QFlag(*reinterpret_cast<int*>(_v))); break;\n",
+ propindex, prefix.constData(), p.write.constData());
} else {
- fprintf(out, " case %d: %s(*reinterpret_cast< %s*>(_v)); break;\n",
- propindex, p.write.constData(), p.type.constData());
+ fprintf(out, " case %d: %s%s(*reinterpret_cast< %s*>(_v)); break;\n",
+ propindex, prefix.constData(), p.write.constData(), p.type.constData());
}
}
fprintf(out, " }\n");
@@ -791,8 +801,13 @@ void Generator::generateMetacall()
const PropertyDef &p = cdef->propertyList.at(propindex);
if (!p.reset.endsWith(')'))
continue;
- fprintf(out, " case %d: %s; break;\n",
- propindex, p.reset.constData());
+ QByteArray prefix;
+ if (p.inPrivateClass.size()) {
+ prefix = p.inPrivateClass;
+ prefix.append("->");
+ }
+ fprintf(out, " case %d: %s%s; break;\n",
+ propindex, prefix.constData(), p.reset.constData());
}
fprintf(out, " }\n");
}
diff --git a/src/tools/moc/keywords.cpp b/src/tools/moc/keywords.cpp
index abc6be0..df1ba0d 100644
--- a/src/tools/moc/keywords.cpp
+++ b/src/tools/moc/keywords.cpp
@@ -43,12 +43,12 @@
// DO NOT EDIT.
static const short keyword_trans[][128] = {
- {0,0,0,0,0,0,0,0,0,525,522,0,0,0,0,0,
+ {0,0,0,0,0,0,0,0,0,533,530,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 525,252,523,526,0,38,239,524,25,26,236,234,30,235,27,237,
+ 533,252,531,534,0,38,239,532,25,26,236,234,30,235,27,237,
22,22,22,22,22,22,22,22,22,22,34,41,23,39,24,43,
0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
- 8,21,8,8,8,8,8,8,8,8,8,31,527,32,238,8,
+ 8,21,8,8,8,8,8,8,8,8,8,31,535,32,238,8,
0,1,2,3,4,5,6,7,8,9,8,8,10,11,12,13,
14,8,15,16,17,18,19,20,8,8,8,36,245,37,248,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -190,7 +190,7 @@ static const short keyword_trans[][128] = {
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,42,0,0,0,28,0,
- 530,530,530,530,530,530,530,530,530,530,0,0,0,0,0,0,
+ 538,538,538,538,538,538,538,538,538,538,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -349,7 +349,7 @@ static const short keyword_trans[][128] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,529,0,0,0,0,528,
+ 0,0,0,0,0,0,0,0,0,0,537,0,0,0,0,536,
0,0,0,0,0,0,0,0,0,0,0,0,0,258,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -430,6 +430,14 @@ static const short keyword_trans[][128] = {
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 522,0,0,481,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,497,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,486,
@@ -925,12 +933,12 @@ static const struct
{CHARACTER, 0, 84, 478, CHARACTER},
{CHARACTER, 0, 69, 479, CHARACTER},
{CHARACTER, 0, 95, 480, CHARACTER},
- {CHARACTER, 0, 83, 481, CHARACTER},
+ {CHARACTER, 48, 0, 0, CHARACTER},
{CHARACTER, 0, 76, 482, CHARACTER},
{CHARACTER, 0, 79, 483, CHARACTER},
{CHARACTER, 0, 84, 484, CHARACTER},
{Q_PRIVATE_SLOT_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 48, 0, 0, CHARACTER},
+ {CHARACTER, 49, 0, 0, CHARACTER},
{CHARACTER, 0, 77, 487, CHARACTER},
{CHARACTER, 0, 79, 488, CHARACTER},
{CHARACTER, 0, 67, 489, CHARACTER},
@@ -967,6 +975,14 @@ static const struct
{CHARACTER, 0, 76, 520, CHARACTER},
{CHARACTER, 0, 69, 521, CHARACTER},
{Q_SCRIPTABLE_TOKEN, 0, 0, 0, CHARACTER},
+ {CHARACTER, 0, 82, 523, CHARACTER},
+ {CHARACTER, 0, 79, 524, CHARACTER},
+ {CHARACTER, 0, 80, 525, CHARACTER},
+ {CHARACTER, 0, 69, 526, CHARACTER},
+ {CHARACTER, 0, 82, 527, CHARACTER},
+ {CHARACTER, 0, 84, 528, CHARACTER},
+ {CHARACTER, 0, 89, 529, CHARACTER},
+ {Q_PRIVATE_PROPERTY_TOKEN, 0, 0, 0, CHARACTER},
{NEWLINE, 0, 0, 0, NOTOKEN},
{QUOTE, 0, 0, 0, NOTOKEN},
{SINGLEQUOTE, 0, 0, 0, NOTOKEN},
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp
index 94ad56f..680b8a5 100644
--- a/src/tools/moc/moc.cpp
+++ b/src/tools/moc/moc.cpp
@@ -658,6 +658,9 @@ void Moc::parse()
case Q_PRIVATE_SLOT_TOKEN:
parseSlotInPrivate(&def, access);
break;
+ case Q_PRIVATE_PROPERTY_TOKEN:
+ parsePrivateProperty(&def);
+ break;
case ENUM: {
EnumDef enumDef;
if (parseEnum(&enumDef))
@@ -872,11 +875,8 @@ void Moc::parseSignals(ClassDef *def)
}
}
-
-void Moc::parseProperty(ClassDef *def)
+void Moc::createPropertyDef(PropertyDef &propDef)
{
- next(LPAREN);
- PropertyDef propDef;
QByteArray type = parseType().name;
if (type.isEmpty())
error();
@@ -964,7 +964,6 @@ void Moc::parseProperty(ClassDef *def)
error(2);
}
}
- next(RPAREN);
if (propDef.read.isNull()) {
QByteArray msg;
msg += "Property declaration ";
@@ -988,6 +987,41 @@ void Moc::parseProperty(ClassDef *def)
propDef.constant = false;
warning(msg.constData());
}
+}
+
+void Moc::parseProperty(ClassDef *def)
+{
+ next(LPAREN);
+ PropertyDef propDef;
+ createPropertyDef(propDef);
+ next(RPAREN);
+
+
+ if(!propDef.notify.isEmpty())
+ def->notifyableProperties++;
+ def->propertyList += propDef;
+}
+
+void Moc::parsePrivateProperty(ClassDef *def)
+{
+ next(LPAREN);
+ PropertyDef propDef;
+ next(IDENTIFIER);
+ propDef.inPrivateClass = lexem();
+ while (test(SCOPE)) {
+ propDef.inPrivateClass += lexem();
+ next(IDENTIFIER);
+ propDef.inPrivateClass += lexem();
+ }
+ // also allow void functions
+ if (test(LPAREN)) {
+ next(RPAREN);
+ propDef.inPrivateClass += "()";
+ }
+
+ next(COMMA);
+
+ createPropertyDef(propDef);
if(!propDef.notify.isEmpty())
def->notifyableProperties++;
diff --git a/src/tools/moc/moc.h b/src/tools/moc/moc.h
index 10abfc6..d365ed5 100644
--- a/src/tools/moc/moc.h
+++ b/src/tools/moc/moc.h
@@ -116,7 +116,7 @@ struct FunctionDef
struct PropertyDef
{
PropertyDef():notifyId(-1), constant(false), final(false), gspec(ValueSpec){}
- QByteArray name, type, read, write, reset, designable, scriptable, editable, stored, user, notify;
+ QByteArray name, type, read, write, reset, designable, scriptable, editable, stored, user, notify, inPrivateClass;
int notifyId;
bool constant;
bool final;
@@ -217,6 +217,7 @@ public:
void parseSlots(ClassDef *def, FunctionDef::Access access);
void parseSignals(ClassDef *def);
void parseProperty(ClassDef *def);
+ void createPropertyDef(PropertyDef &def);
void parseEnumOrFlag(ClassDef *def, bool isFlag);
void parseFlag(ClassDef *def);
void parseClassInfo(ClassDef *def);
@@ -224,6 +225,7 @@ public:
void parseDeclareInterface();
void parseDeclareMetatype();
void parseSlotInPrivate(ClassDef *def, FunctionDef::Access access);
+ void parsePrivateProperty(ClassDef *def);
void parseFunctionArguments(FunctionDef *def);
diff --git a/src/tools/moc/token.cpp b/src/tools/moc/token.cpp
index 98307a1..3da9446 100644
--- a/src/tools/moc/token.cpp
+++ b/src/tools/moc/token.cpp
@@ -179,6 +179,7 @@ const char *tokenTypeName(Token t)
case Q_SIGNAL_TOKEN: return "Q_SIGNAL_TOKEN";
case Q_SLOT_TOKEN: return "Q_SLOT_TOKEN";
case Q_PRIVATE_SLOT_TOKEN: return "Q_PRIVATE_SLOT_TOKEN";
+ case Q_PRIVATE_PROPERTY_TOKEN: return "Q_PRIVATE_PROPERTY_TOKEN";
case SPECIAL_TREATMENT_MARK: return "SPECIAL_TREATMENT_MARK";
case MOC_INCLUDE_BEGIN: return "MOC_INCLUDE_BEGIN";
case MOC_INCLUDE_END: return "MOC_INCLUDE_END";
diff --git a/src/tools/moc/token.h b/src/tools/moc/token.h
index 6b1ad7d..6ca3d84 100644
--- a/src/tools/moc/token.h
+++ b/src/tools/moc/token.h
@@ -185,6 +185,7 @@ enum Token {
Q_QT3_SUPPORT_TOKEN,
Q_INVOKABLE_TOKEN,
Q_SCRIPTABLE_TOKEN,
+ Q_PRIVATE_PROPERTY_TOKEN,
Q_META_TOKEN_END,
SPECIAL_TREATMENT_MARK = Q_META_TOKEN_END,
MOC_INCLUDE_BEGIN,
diff --git a/src/tools/moc/util/generate_keywords.cpp b/src/tools/moc/util/generate_keywords.cpp
index 0641b40..88f187d 100644
--- a/src/tools/moc/util/generate_keywords.cpp
+++ b/src/tools/moc/util/generate_keywords.cpp
@@ -248,7 +248,7 @@ static const Keyword keywords[] = {
{ "Q_SIGNAL", "Q_SIGNAL_TOKEN" },
{ "Q_SLOT", "Q_SLOT_TOKEN" },
{ "Q_SCRIPTABLE", "Q_SCRIPTABLE_TOKEN" },
-
+ { "Q_PRIVATE_PROPERTY", "Q_PRIVATE_PROPERTY_TOKEN" },
{ "\n", "NEWLINE" },
{ "\"", "QUOTE" },
{ "\'", "SINGLEQUOTE" },
diff --git a/tests/auto/moc/tst_moc.cpp b/tests/auto/moc/tst_moc.cpp
index fad4845..30c2721 100644
--- a/tests/auto/moc/tst_moc.cpp
+++ b/tests/auto/moc/tst_moc.cpp
@@ -484,6 +484,7 @@ private slots:
void singleFunctionKeywordSignalAndSlot();
void templateGtGt();
void qprivateslots();
+ void qprivateproperties();
void inlineSlotsWithThrowDeclaration();
void warnOnPropertyWithoutREAD();
void constructors();
@@ -1071,6 +1072,56 @@ void tst_Moc::qprivateslots()
QVERIFY(mobj->indexOfMethod("method1()") != -1); //tast204730
}
+class PrivatePropertyTest : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int foo READ foo WRITE setFoo);
+ Q_PRIVATE_PROPERTY(d, int bar READ bar WRITE setBar);
+ Q_PRIVATE_PROPERTY(PrivatePropertyTest::d, int plop READ plop WRITE setPlop);
+ Q_PRIVATE_PROPERTY(PrivatePropertyTest::d_func(), int baz READ baz WRITE setBaz);
+ class MyDPointer {
+ public:
+ MyDPointer() : mBar(0), mPlop(0) {}
+ int bar() { return mBar ; }
+ void setBar(int value) { mBar = value; }
+ int plop() { return mPlop ; }
+ void setPlop(int value) { mPlop = value; }
+ int baz() { return mBaz ; }
+ void setBaz(int value) { mBaz = value; }
+ private:
+ int mBar;
+ int mPlop;
+ int mBaz;
+ };
+public:
+ PrivatePropertyTest() : mFoo(0), d (new MyDPointer) {}
+ int foo() { return mFoo ; }
+ void setFoo(int value) { mFoo = value; }
+ MyDPointer *d_func() {return d;}
+private:
+ int mFoo;
+ MyDPointer *d;
+};
+
+
+void tst_Moc::qprivateproperties()
+{
+ PrivatePropertyTest test;
+
+ test.setProperty("foo", 1);
+ QCOMPARE(test.property("foo"), qVariantFromValue(1));
+
+ test.setProperty("bar", 2);
+ QCOMPARE(test.property("bar"), qVariantFromValue(2));
+
+ test.setProperty("plop", 3);
+ QCOMPARE(test.property("plop"), qVariantFromValue(3));
+
+ test.setProperty("baz", 4);
+ QCOMPARE(test.property("baz"), qVariantFromValue(4));
+
+}
+
#include "task189996.h"
void InlineSlotsWithThrowDeclaration::c() throw() {}
diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp
index 133cb33..e5a332a 100644
--- a/tests/auto/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/qaccessibility/tst_qaccessibility.cpp
@@ -3923,9 +3923,8 @@ void tst_QAccessibility::comboBoxTest()
acc = QAccessible::queryAccessibleInterface(cb);
- QRect accRect = acc->rect(0);
for (int i = 1; i < acc->childCount(); ++i) {
- QVERIFY(accRect.contains(acc->rect(i)));
+ QTRY_VERIFY(acc->rect(0).contains(acc->rect(i)));
}
QCOMPARE(acc->doAction(QAccessible::Press, 2), true);
QTest::qWait(400);
diff --git a/tests/auto/qfiledialog2/tst_qfiledialog2.cpp b/tests/auto/qfiledialog2/tst_qfiledialog2.cpp
index f2e1dbd..6bfa8be 100644
--- a/tests/auto/qfiledialog2/tst_qfiledialog2.cpp
+++ b/tests/auto/qfiledialog2/tst_qfiledialog2.cpp
@@ -87,13 +87,13 @@ public:
}
};
-class tst_QFiledialog : public QObject
+class tst_QFileDialog2 : public QObject
{
Q_OBJECT
public:
- tst_QFiledialog();
- virtual ~tst_QFiledialog();
+ tst_QFileDialog2();
+ virtual ~tst_QFileDialog2();
public slots:
void init();
@@ -138,18 +138,18 @@ private:
QByteArray userSettings;
};
-tst_QFiledialog::tst_QFiledialog()
+tst_QFileDialog2::tst_QFileDialog2()
{
#if defined(Q_OS_WINCE)
qApp->setAutoMaximizeThreshold(-1);
#endif
}
-tst_QFiledialog::~tst_QFiledialog()
+tst_QFileDialog2::~tst_QFileDialog2()
{
}
-void tst_QFiledialog::init()
+void tst_QFileDialog2::init()
{
// Save the developers settings so they don't get mad when their sidebar folders are gone.
QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
@@ -164,14 +164,14 @@ void tst_QFiledialog::init()
#endif
}
-void tst_QFiledialog::cleanup()
+void tst_QFileDialog2::cleanup()
{
QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
settings.beginGroup(QLatin1String("Qt"));
settings.setValue(QLatin1String("filedialog"), userSettings);
}
-void tst_QFiledialog::listRoot()
+void tst_QFileDialog2::listRoot()
{
#if defined QT_BUILD_INTERNAL
QFileInfoGatherer fileInfoGatherer;
@@ -193,7 +193,7 @@ void tst_QFiledialog::listRoot()
#endif
}
-void tst_QFiledialog::heapCorruption()
+void tst_QFileDialog2::heapCorruption()
{
QVector<QNonNativeFileDialog*> dialogs;
for (int i=0; i < 10; i++) {
@@ -205,12 +205,12 @@ void tst_QFiledialog::heapCorruption()
struct FriendlyQFileDialog : public QNonNativeFileDialog
{
- friend class tst_QFileDialog;
+ friend class tst_QFileDialog2;
Q_DECLARE_PRIVATE(QFileDialog)
};
-void tst_QFiledialog::deleteDirAndFiles()
+void tst_QFileDialog2::deleteDirAndFiles()
{
#if defined QT_BUILD_INTERNAL
QString tempPath = QDir::tempPath() + '/' + "QFileDialogTestDir4FullDelete";
@@ -242,7 +242,7 @@ void tst_QFiledialog::deleteDirAndFiles()
#endif
}
-void tst_QFiledialog::filter()
+void tst_QFileDialog2::filter()
{
QNonNativeFileDialog fd;
QAction *hiddenAction = qFindChild<QAction*>(&fd, "qt_show_hidden_action");
@@ -255,7 +255,7 @@ void tst_QFiledialog::filter()
QVERIFY(hiddenAction->isChecked());
}
-void tst_QFiledialog::showNameFilterDetails()
+void tst_QFileDialog2::showNameFilterDetails()
{
QNonNativeFileDialog fd;
QComboBox *filters = qFindChild<QComboBox*>(&fd, "fileTypeCombo");
@@ -280,7 +280,7 @@ void tst_QFiledialog::showNameFilterDetails()
QCOMPARE(filters->itemText(2), filterChoices.at(2));
}
-void tst_QFiledialog::unc()
+void tst_QFileDialog2::unc()
{
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
// Only test UNC on Windows./
@@ -295,7 +295,7 @@ void tst_QFiledialog::unc()
QCOMPARE(model->index(fd.directory().absolutePath()), model->index(dir));
}
-void tst_QFiledialog::emptyUncPath()
+void tst_QFileDialog2::emptyUncPath()
{
QNonNativeFileDialog fd;
fd.show();
@@ -308,7 +308,7 @@ void tst_QFiledialog::emptyUncPath()
QVERIFY(model);
}
-void tst_QFiledialog::task178897_minimumSize()
+void tst_QFileDialog2::task178897_minimumSize()
{
QNonNativeFileDialog fd;
QSize oldMs = fd.layout()->minimumSize();
@@ -322,7 +322,7 @@ void tst_QFiledialog::task178897_minimumSize()
QVERIFY(ms.width() <= oldMs.width());
}
-void tst_QFiledialog::task180459_lastDirectory_data()
+void tst_QFileDialog2::task180459_lastDirectory_data()
{
QTest::addColumn<QString>("path");
QTest::addColumn<QString>("directory");
@@ -345,7 +345,7 @@ void tst_QFiledialog::task180459_lastDirectory_data()
}
-void tst_QFiledialog::task180459_lastDirectory()
+void tst_QFileDialog2::task180459_lastDirectory()
{
//first visit the temp directory and close the dialog
QNonNativeFileDialog *dlg = new QNonNativeFileDialog(0, "", QDir::tempPath());
@@ -449,7 +449,7 @@ QString &dir, const QString &filter)
}
};
-void tst_QFiledialog::task227304_proxyOnFileDialog()
+void tst_QFileDialog2::task227304_proxyOnFileDialog()
{
#if defined QT_BUILD_INTERNAL
QNonNativeFileDialog fd(0, "", QDir::currentPath(), 0);
@@ -488,7 +488,7 @@ void tst_QFiledialog::task227304_proxyOnFileDialog()
#endif
}
-void tst_QFiledialog::task227930_correctNavigationKeyboardBehavior()
+void tst_QFileDialog2::task227930_correctNavigationKeyboardBehavior()
{
QDir current = QDir::currentPath();
current.mkdir("test");
@@ -527,7 +527,7 @@ void tst_QFiledialog::task227930_correctNavigationKeyboardBehavior()
}
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
-void tst_QFiledialog::task226366_lowerCaseHardDriveWindows()
+void tst_QFileDialog2::task226366_lowerCaseHardDriveWindows()
{
QNonNativeFileDialog fd;
fd.setDirectory(QDir::root().path());
@@ -553,7 +553,7 @@ void tst_QFiledialog::task226366_lowerCaseHardDriveWindows()
}
#endif
-void tst_QFiledialog::completionOnLevelAfterRoot()
+void tst_QFileDialog2::completionOnLevelAfterRoot()
{
QNonNativeFileDialog fd;
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
@@ -592,7 +592,7 @@ void tst_QFiledialog::completionOnLevelAfterRoot()
#endif
}
-void tst_QFiledialog::task233037_selectingDirectory()
+void tst_QFileDialog2::task233037_selectingDirectory()
{
QDir current = QDir::currentPath();
current.mkdir("test");
@@ -615,7 +615,7 @@ void tst_QFiledialog::task233037_selectingDirectory()
current.rmdir("test");
}
-void tst_QFiledialog::task235069_hideOnEscape()
+void tst_QFileDialog2::task235069_hideOnEscape()
{
QDir current = QDir::currentPath();
QNonNativeFileDialog fd;
@@ -637,7 +637,7 @@ void tst_QFiledialog::task235069_hideOnEscape()
QCOMPARE(fd2.isVisible(), false);
}
-void tst_QFiledialog::task236402_dontWatchDeletedDir()
+void tst_QFileDialog2::task236402_dontWatchDeletedDir()
{
#if defined QT_BUILD_INTERNAL
//THIS TEST SHOULD NOT DISPLAY WARNINGS
@@ -662,7 +662,7 @@ void tst_QFiledialog::task236402_dontWatchDeletedDir()
#endif
}
-void tst_QFiledialog::task203703_returnProperSeparator()
+void tst_QFileDialog2::task203703_returnProperSeparator()
{
QDir current = QDir::currentPath();
current.mkdir("aaaaaaaaaaaaaaaaaa");
@@ -687,7 +687,7 @@ void tst_QFiledialog::task203703_returnProperSeparator()
current.rmdir("aaaaaaaaaaaaaaaaaa");
}
-void tst_QFiledialog::task228844_ensurePreviousSorting()
+void tst_QFileDialog2::task228844_ensurePreviousSorting()
{
QDir current = QDir::currentPath();
current.mkdir("aaaaaaaaaaaaaaaaaa");
@@ -789,7 +789,7 @@ void tst_QFiledialog::task228844_ensurePreviousSorting()
}
-void tst_QFiledialog::task239706_editableFilterCombo()
+void tst_QFileDialog2::task239706_editableFilterCombo()
{
QNonNativeFileDialog d;
d.setNameFilter("*.cpp *.h");
@@ -812,7 +812,7 @@ void tst_QFiledialog::task239706_editableFilterCombo()
QTest::keyPress(filterCombo, Qt::Key_Enter); // should not trigger assertion failure
}
-void tst_QFiledialog::task218353_relativePaths()
+void tst_QFileDialog2::task218353_relativePaths()
{
QDir appDir = QDir::current();
QVERIFY(appDir.cdUp() != false);
@@ -829,7 +829,7 @@ void tst_QFiledialog::task218353_relativePaths()
appDir.rmdir("test");
}
-void tst_QFiledialog::task251321_sideBarHiddenEntries()
+void tst_QFileDialog2::task251321_sideBarHiddenEntries()
{
#if defined QT_BUILD_INTERNAL
QNonNativeFileDialog fd;
@@ -889,7 +889,7 @@ public :
};
#endif
-void tst_QFiledialog::task251341_sideBarRemoveEntries()
+void tst_QFileDialog2::task251341_sideBarRemoveEntries()
{
#if defined QT_BUILD_INTERNAL
QNonNativeFileDialog fd;
@@ -954,7 +954,7 @@ void tst_QFiledialog::task251341_sideBarRemoveEntries()
#endif
}
-void tst_QFiledialog::task254490_selectFileMultipleTimes()
+void tst_QFileDialog2::task254490_selectFileMultipleTimes()
{
QString tempPath = QDir::tempPath();
QTemporaryFile *t;
@@ -986,7 +986,7 @@ void tst_QFiledialog::task254490_selectFileMultipleTimes()
t->deleteLater();
}
-void tst_QFiledialog::task257579_sideBarWithNonCleanUrls()
+void tst_QFileDialog2::task257579_sideBarWithNonCleanUrls()
{
#if defined QT_BUILD_INTERNAL
QDir tempDir = QDir::temp();
@@ -1012,7 +1012,7 @@ void tst_QFiledialog::task257579_sideBarWithNonCleanUrls()
#endif
}
-void tst_QFiledialog::task259105_filtersCornerCases()
+void tst_QFileDialog2::task259105_filtersCornerCases()
{
QNonNativeFileDialog fd(0, "TestFileDialog");
fd.setNameFilter(QLatin1String("All Files! (*);;Text Files (*.txt)"));
@@ -1056,7 +1056,7 @@ void tst_QFiledialog::task259105_filtersCornerCases()
QCOMPARE(filters->currentText(), QLatin1String("Text Files"));
}
-void tst_QFiledialog::QTBUG4419_lineEditSelectAll()
+void tst_QFileDialog2::QTBUG4419_lineEditSelectAll()
{
QString tempPath = QDir::tempPath();
QTemporaryFile *t;
@@ -1082,7 +1082,7 @@ void tst_QFiledialog::QTBUG4419_lineEditSelectAll()
QCOMPARE(tempPath + QChar('/') + lineEdit->selectedText(), t->fileName());
}
-void tst_QFiledialog::QTBUG6558_showDirsOnly()
+void tst_QFileDialog2::QTBUG6558_showDirsOnly()
{
const QString tempPath = QDir::tempPath();
QDir dirTemp(tempPath);
@@ -1148,7 +1148,7 @@ void tst_QFiledialog::QTBUG6558_showDirsOnly()
dirTemp.rmdir(tempName);
}
-void tst_QFiledialog::QTBUG4842_selectFilterWithHideNameFilterDetails()
+void tst_QFileDialog2::QTBUG4842_selectFilterWithHideNameFilterDetails()
{
QStringList filtersStr;
filtersStr << "Images (*.png *.xpm *.jpg)" << "Text files (*.txt)" << "XML files (*.xml)";
@@ -1188,5 +1188,5 @@ void tst_QFiledialog::QTBUG4842_selectFilterWithHideNameFilterDetails()
}
-QTEST_MAIN(tst_QFiledialog)
+QTEST_MAIN(tst_QFileDialog2)
#include "tst_qfiledialog2.moc"
diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
index 9d437d6..43ce46d 100644
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -283,6 +283,7 @@ private slots:
void task250680_childClip();
void taskQTBUG_5904_crashWithDeviceCoordinateCache();
void taskQT657_paintIntoCacheWithTransparentParts();
+ void taskQTBUG_7863_paintIntoCacheWithTransparentParts();
};
void tst_QGraphicsScene::initTestCase()
@@ -4348,12 +4349,14 @@ void tst_QGraphicsScene::taskQTBUG_5904_crashWithDeviceCoordinateCache()
void tst_QGraphicsScene::taskQT657_paintIntoCacheWithTransparentParts()
{
+ // Test using DeviceCoordinateCache and opaque item
QWidget *w = new QWidget();
- w->setPalette(Qt::blue);
+ w->setPalette(QColor(0, 0, 255));
w->setGeometry(0, 0, 50, 50);
QGraphicsScene *scene = new QGraphicsScene();
- QGraphicsView *view = new QGraphicsView(scene);
+ CustomView *view = new CustomView;
+ view->setScene(scene);
QGraphicsProxyWidget *proxy = scene->addWidget(w);
proxy->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
@@ -4361,13 +4364,14 @@ void tst_QGraphicsScene::taskQT657_paintIntoCacheWithTransparentParts()
view->show();
QTest::qWaitForWindowShown(view);
- w->update(10,10,10,10);
+ view->repaints = 0;
+ proxy->update(10, 10, 10, 10);
QTest::qWait(50);
+ QTRY_VERIFY(view->repaints > 0);
QPixmap pix;
QGraphicsItemPrivate* itemp = QGraphicsItemPrivate::get(proxy);
- QPixmapCache::Key key = itemp->extraItemCache()->deviceData.value(view->viewport()).key;
- QVERIFY(QPixmapCache::find(key, &pix));
+ QTRY_VERIFY(QPixmapCache::find(itemp->extraItemCache()->deviceData.value(view->viewport()).key, &pix));
QTransform t = proxy->sceneTransform();
// Map from scene coordinates to pixmap coordinates.
@@ -4382,6 +4386,138 @@ void tst_QGraphicsScene::taskQT657_paintIntoCacheWithTransparentParts()
for(int j = 0; j < im.height(); j++)
QCOMPARE(qAlpha(im.pixel(i, j)), 255);
}
+
+ delete w;
+}
+
+void tst_QGraphicsScene::taskQTBUG_7863_paintIntoCacheWithTransparentParts()
+{
+ // Test using DeviceCoordinateCache and semi-transparent item
+ {
+ QGraphicsRectItem *backItem = new QGraphicsRectItem(0, 0, 100, 100);
+ backItem->setBrush(QColor(255, 255, 0));
+ QGraphicsRectItem *rectItem = new QGraphicsRectItem(0, 0, 50, 50);
+ rectItem->setBrush(QColor(0, 0, 255, 125));
+ rectItem->setParentItem(backItem);
+
+ QGraphicsScene *scene = new QGraphicsScene();
+ CustomView *view = new CustomView;
+ view->setScene(scene);
+
+ scene->addItem(backItem);
+ rectItem->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
+ backItem->rotate(15);
+
+ view->show();
+ QTest::qWaitForWindowShown(view);
+ view->repaints = 0;
+ rectItem->update(10, 10, 10, 10);
+ QTest::qWait(50);
+ QTRY_VERIFY(view->repaints > 0);
+
+ QPixmap pix;
+ QGraphicsItemPrivate* itemp = QGraphicsItemPrivate::get(rectItem);
+ QTRY_VERIFY(QPixmapCache::find(itemp->extraItemCache()->deviceData.value(view->viewport()).key, &pix));
+
+ QTransform t = rectItem->sceneTransform();
+ // Map from scene coordinates to pixmap coordinates.
+ // X origin in the pixmap is the most-left point
+ // of the item's boundingRect in the scene.
+ qreal adjust = t.mapRect(rectItem->boundingRect().toRect()).left();
+ QRect rect = t.mapRect(QRect(10, 10, 10, 10)).adjusted(-adjust, 0, -adjust + 1, 1);
+ QPixmap subpix = pix.copy(rect);
+
+ QImage im = subpix.toImage();
+ for(int i = 0; i < im.width(); i++) {
+ for(int j = 0; j < im.height(); j++) {
+ QCOMPARE(qAlpha(im.pixel(i, j)), 125);
+ }
+ }
+
+ delete view;
+ }
+
+ // Test using ItemCoordinateCache and opaque item
+ {
+ QGraphicsRectItem *rectItem = new QGraphicsRectItem(0, 0, 50, 50);
+ rectItem->setBrush(QColor(0, 0, 255));
+
+ QGraphicsScene *scene = new QGraphicsScene();
+ CustomView *view = new CustomView;
+ view->setScene(scene);
+
+ scene->addItem(rectItem);
+ rectItem->setCacheMode(QGraphicsItem::ItemCoordinateCache);
+ rectItem->rotate(15);
+
+ view->show();
+ QTest::qWaitForWindowShown(view);
+ view->repaints = 0;
+ rectItem->update(10, 10, 10, 10);
+ QTest::qWait(50);
+ QTRY_VERIFY(view->repaints > 0);
+
+ QPixmap pix;
+ QGraphicsItemPrivate* itemp = QGraphicsItemPrivate::get(rectItem);
+ QTRY_VERIFY(QPixmapCache::find(itemp->extraItemCache()->key, &pix));
+
+ QTransform t = rectItem->sceneTransform();
+ // Map from scene coordinates to pixmap coordinates.
+ // X origin in the pixmap is the most-left point
+ // of the item's boundingRect in the scene.
+ qreal adjust = t.mapRect(rectItem->boundingRect().toRect()).left();
+ QRect rect = t.mapRect(QRect(10, 10, 10, 10)).adjusted(-adjust, 0, -adjust + 1, 1);
+ QPixmap subpix = pix.copy(rect);
+
+ QImage im = subpix.toImage();
+ for(int i = 0; i < im.width(); i++) {
+ for(int j = 0; j < im.height(); j++)
+ QCOMPARE(qAlpha(im.pixel(i, j)), 255);
+ }
+
+ delete view;
+ }
+
+ // Test using ItemCoordinateCache and semi-transparent item
+ {
+ QGraphicsRectItem *rectItem = new QGraphicsRectItem(0, 0, 50, 50);
+ rectItem->setBrush(QColor(0, 0, 255, 125));
+
+ QGraphicsScene *scene = new QGraphicsScene();
+ CustomView *view = new CustomView;
+ view->setScene(scene);
+
+ scene->addItem(rectItem);
+ rectItem->setCacheMode(QGraphicsItem::ItemCoordinateCache);
+ rectItem->rotate(15);
+
+ view->show();
+ QTest::qWaitForWindowShown(view);
+ view->repaints = 0;
+ rectItem->update(10, 10, 10, 10);
+ QTest::qWait(50);
+ QTRY_VERIFY(view->repaints > 0);
+
+ QPixmap pix;
+ QGraphicsItemPrivate* itemp = QGraphicsItemPrivate::get(rectItem);
+ QTRY_VERIFY(QPixmapCache::find(itemp->extraItemCache()->key, &pix));
+
+ QTransform t = rectItem->sceneTransform();
+ // Map from scene coordinates to pixmap coordinates.
+ // X origin in the pixmap is the most-left point
+ // of the item's boundingRect in the scene.
+ qreal adjust = t.mapRect(rectItem->boundingRect().toRect()).left();
+ QRect rect = t.mapRect(QRect(10, 10, 10, 10)).adjusted(-adjust, 0, -adjust + 1, 1);
+ QPixmap subpix = pix.copy(rect);
+
+ QImage im = subpix.toImage();
+ for(int i = 0; i < im.width(); i++) {
+ for(int j = 0; j < im.height(); j++)
+ QCOMPARE(qAlpha(im.pixel(i, j)), 125);
+ }
+
+ delete view;
+ }
}
QTEST_MAIN(tst_QGraphicsScene)
diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
index 4a874be..0d1ad9e 100644
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -765,11 +765,13 @@ void tst_QGraphicsWidget::geometry()
{
SubQGraphicsWidget widget;
QCOMPARE(widget.geometry(), QRectF(widget.pos(), widget.size()));
-
+ QSignalSpy spy(&widget, SIGNAL(geometryChanged()));
QFETCH(QPointF, pos);
QFETCH(QSizeF, size);
widget.setPos(pos);
widget.resize(size);
+ if (!size.isNull())
+ QCOMPARE(spy.count(), 1);
QCOMPARE(widget.geometry(), QRectF(pos, size));
}
diff --git a/tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp b/tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp
index fb0f3e0..d2d86fb 100644
--- a/tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp
+++ b/tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp
@@ -75,6 +75,8 @@ private slots:
void loopCount();
void autoAdd();
void pauseResume();
+
+ void QTBUG8910_crashWhenRemovingUncontrolledAnimation();
};
tst_QParallelAnimationGroup::tst_QParallelAnimationGroup()
@@ -999,9 +1001,22 @@ void tst_QParallelAnimationGroup::pauseResume()
QCOMPARE(spy.count(), 2); //this shouldn't have changed
group.resume();
QCOMPARE(spy.count(), 2); //this shouldn't have changed
+}
-
+void tst_QParallelAnimationGroup::QTBUG8910_crashWhenRemovingUncontrolledAnimation()
+{
+ QParallelAnimationGroup group;
+ TestAnimation *anim = new TestAnimation;
+ anim->setLoopCount(-1);
+ TestAnimation *anim2 = new TestAnimation;
+ anim2->setLoopCount(-1);
+ group.addAnimation(anim);
+ group.addAnimation(anim2);
+ group.start();
+ delete anim;
+ // it would crash here because the internals of the group would still have a reference to anim
+ delete anim2;
}
diff --git a/tests/auto/qscriptclass/tst_qscriptclass.cpp b/tests/auto/qscriptclass/tst_qscriptclass.cpp
index 41c674c..3012da1 100644
--- a/tests/auto/qscriptclass/tst_qscriptclass.cpp
+++ b/tests/auto/qscriptclass/tst_qscriptclass.cpp
@@ -98,7 +98,12 @@ public:
NotCallable,
CallableReturnsSum,
CallableReturnsArgument,
- CallableReturnsInvalidVariant
+ CallableReturnsInvalidVariant,
+ CallableReturnsGlobalObject,
+ CallableReturnsThisObject,
+ CallableReturnsCallee,
+ CallableReturnsArgumentsObject,
+ CallableInitializesThisObject
};
TestClass(QScriptEngine *engine);
@@ -348,7 +353,7 @@ QVariant TestClass::extension(Extension extension,
qsreal sum = 0;
for (int i = 0; i < ctx->argumentCount(); ++i)
sum += ctx->argument(i).toNumber();
- QScriptValueIterator it(ctx->thisObject());
+ QScriptValueIterator it(ctx->callee());
while (it.hasNext()) {
it.next();
sum += it.value().toNumber();
@@ -358,6 +363,17 @@ QVariant TestClass::extension(Extension extension,
return qVariantFromValue(ctx->argument(0));
} else if (m_callableMode == CallableReturnsInvalidVariant) {
return QVariant();
+ } else if (m_callableMode == CallableReturnsGlobalObject) {
+ return qVariantFromValue(engine()->globalObject());
+ } else if (m_callableMode == CallableReturnsThisObject) {
+ return qVariantFromValue(ctx->thisObject());
+ } else if (m_callableMode == CallableReturnsCallee) {
+ return qVariantFromValue(ctx->callee());
+ } else if (m_callableMode == CallableReturnsArgumentsObject) {
+ return qVariantFromValue(ctx->argumentsObject());
+ } else if (m_callableMode == CallableInitializesThisObject) {
+ engine()->newQObject(ctx->thisObject(), engine());
+ return QVariant();
}
} else if (extension == HasInstance) {
Q_ASSERT(m_hasInstance);
@@ -796,9 +812,11 @@ void tst_QScriptClass::extension()
QVERIFY(cls.supportsExtension(QScriptClass::Callable));
QScriptValue obj = eng.newObject(&cls);
+ eng.globalObject().setProperty("obj", obj);
obj.setProperty("one", QScriptValue(&eng, 1));
obj.setProperty("two", QScriptValue(&eng, 2));
obj.setProperty("three", QScriptValue(&eng, 3));
+ // From C++
cls.clearReceivedArgs();
{
QScriptValueList args;
@@ -809,8 +827,18 @@ void tst_QScriptClass::extension()
QVERIFY(ret.isNumber());
QCOMPARE(ret.toNumber(), qsreal(15));
}
+ // From JS
+ cls.clearReceivedArgs();
+ {
+ QScriptValue ret = eng.evaluate("obj(4, 5)");
+ QCOMPARE(cls.lastExtensionType(), QScriptClass::Callable);
+ QCOMPARE(cls.lastExtensionArgument().userType(), qMetaTypeId<QScriptContext*>());
+ QVERIFY(ret.isNumber());
+ QCOMPARE(ret.toNumber(), qsreal(15));
+ }
cls.setCallableMode(TestClass::CallableReturnsArgument);
+ // From C++
cls.clearReceivedArgs();
{
QScriptValue ret = obj.call(obj, QScriptValueList() << 123);
@@ -842,6 +870,13 @@ void tst_QScriptClass::extension()
QScriptValue ret = obj.call(obj, QScriptValueList() << QScriptValue());
QVERIFY(ret.isUndefined());
}
+ // From JS
+ cls.clearReceivedArgs();
+ {
+ QScriptValue ret = eng.evaluate("obj(123)");
+ QVERIFY(ret.isNumber());
+ QCOMPARE(ret.toInt32(), 123);
+ }
cls.setCallableMode(TestClass::CallableReturnsInvalidVariant);
{
@@ -849,13 +884,92 @@ void tst_QScriptClass::extension()
QVERIFY(ret.isUndefined());
}
+ cls.setCallableMode(TestClass::CallableReturnsThisObject);
+ // From C++
+ {
+ QScriptValue ret = obj.call(obj);
+ QVERIFY(ret.isObject());
+ QVERIFY(ret.strictlyEquals(obj));
+ }
+ // From JS
+ {
+ QScriptValue ret = eng.evaluate("obj()");
+ QVERIFY(ret.isObject());
+ QVERIFY(ret.strictlyEquals(eng.globalObject()));
+ }
+
+ cls.setCallableMode(TestClass::CallableReturnsCallee);
+ // From C++
+ {
+ QScriptValue ret = obj.call();
+ QVERIFY(ret.isObject());
+ QVERIFY(ret.strictlyEquals(obj));
+ }
+ // From JS
+ {
+ QScriptValue ret = eng.evaluate("obj()");
+ QVERIFY(ret.isObject());
+ QVERIFY(ret.strictlyEquals(obj));
+ }
+
+ cls.setCallableMode(TestClass::CallableReturnsArgumentsObject);
+ // From C++
+ {
+ QScriptValue ret = obj.call(obj, QScriptValueList() << 123);
+ QVERIFY(ret.isObject());
+ QVERIFY(ret.property("length").isNumber());
+ QCOMPARE(ret.property("length").toInt32(), 1);
+ QVERIFY(ret.property(0).isNumber());
+ QCOMPARE(ret.property(0).toInt32(), 123);
+ }
+ // From JS
+ {
+ QScriptValue ret = eng.evaluate("obj(123)");
+ QVERIFY(ret.isObject());
+ QVERIFY(ret.property("length").isNumber());
+ QCOMPARE(ret.property("length").toInt32(), 1);
+ QVERIFY(ret.property(0).isNumber());
+ QCOMPARE(ret.property(0).toInt32(), 123);
+ }
+
// construct()
+ // From C++
cls.clearReceivedArgs();
+ cls.setCallableMode(TestClass::CallableReturnsGlobalObject);
{
QScriptValue ret = obj.construct();
QCOMPARE(cls.lastExtensionType(), QScriptClass::Callable);
QCOMPARE(cls.lastExtensionArgument().userType(), qMetaTypeId<QScriptContext*>());
QVERIFY(ret.isObject());
+ QVERIFY(ret.strictlyEquals(eng.globalObject()));
+ }
+ // From JS
+ cls.clearReceivedArgs();
+ {
+ QScriptValue ret = eng.evaluate("new obj()");
+ QCOMPARE(cls.lastExtensionType(), QScriptClass::Callable);
+ QCOMPARE(cls.lastExtensionArgument().userType(), qMetaTypeId<QScriptContext*>());
+ QVERIFY(ret.isObject());
+ QVERIFY(ret.strictlyEquals(eng.globalObject()));
+ }
+ // From C++
+ cls.clearReceivedArgs();
+ cls.setCallableMode(TestClass::CallableInitializesThisObject);
+ {
+ QScriptValue ret = obj.construct();
+ QCOMPARE(cls.lastExtensionType(), QScriptClass::Callable);
+ QCOMPARE(cls.lastExtensionArgument().userType(), qMetaTypeId<QScriptContext*>());
+ QVERIFY(ret.isQObject());
+ QCOMPARE(ret.toQObject(), (QObject*)&eng);
+ }
+ // From JS
+ cls.clearReceivedArgs();
+ {
+ QScriptValue ret = eng.evaluate("new obj()");
+ QCOMPARE(cls.lastExtensionType(), QScriptClass::Callable);
+ QCOMPARE(cls.lastExtensionArgument().userType(), qMetaTypeId<QScriptContext*>());
+ QVERIFY(ret.isQObject());
+ QCOMPARE(ret.toQObject(), (QObject*)&eng);
}
}
// HasInstance
diff --git a/tests/auto/qscriptengine/tst_qscriptengine.cpp b/tests/auto/qscriptengine/tst_qscriptengine.cpp
index 8658240..cbc36a7 100644
--- a/tests/auto/qscriptengine/tst_qscriptengine.cpp
+++ b/tests/auto/qscriptengine/tst_qscriptengine.cpp
@@ -150,6 +150,7 @@ private slots:
void getSetAgent();
void reentrancy();
void incDecNonObjectProperty();
+ void installTranslatorFunctions_data();
void installTranslatorFunctions();
void functionScopes();
void nativeFunctionScopes();
@@ -4118,22 +4119,46 @@ void tst_QScriptEngine:: incDecNonObjectProperty()
}
}
+void tst_QScriptEngine::installTranslatorFunctions_data()
+{
+ QTest::addColumn<bool>("useCustomGlobalObject");
+
+ QTest::newRow("Default global object") << false;
+ QTest::newRow("Custom global object") << true;
+}
+
void tst_QScriptEngine::installTranslatorFunctions()
{
+ QFETCH(bool, useCustomGlobalObject);
+
QScriptEngine eng;
- QScriptValue global = eng.globalObject();
+ QScriptValue globalOrig = eng.globalObject();
+ QScriptValue global;
+ if (useCustomGlobalObject) {
+ global = eng.newObject();
+ eng.setGlobalObject(global);
+ } else {
+ global = globalOrig;
+ }
QVERIFY(!global.property("qsTranslate").isValid());
QVERIFY(!global.property("QT_TRANSLATE_NOOP").isValid());
QVERIFY(!global.property("qsTr").isValid());
QVERIFY(!global.property("QT_TR_NOOP").isValid());
- QVERIFY(!global.property("String").property("prototype").property("arg").isValid());
+ QVERIFY(!globalOrig.property("String").property("prototype").property("arg").isValid());
eng.installTranslatorFunctions();
QVERIFY(global.property("qsTranslate").isFunction());
QVERIFY(global.property("QT_TRANSLATE_NOOP").isFunction());
QVERIFY(global.property("qsTr").isFunction());
QVERIFY(global.property("QT_TR_NOOP").isFunction());
- QVERIFY(global.property("String").property("prototype").property("arg").isFunction());
+ QVERIFY(globalOrig.property("String").property("prototype").property("arg").isFunction());
+
+ if (useCustomGlobalObject) {
+ QVERIFY(!globalOrig.property("qsTranslate").isValid());
+ QVERIFY(!globalOrig.property("QT_TRANSLATE_NOOP").isValid());
+ QVERIFY(!globalOrig.property("qsTr").isValid());
+ QVERIFY(!globalOrig.property("QT_TR_NOOP").isValid());
+ }
{
QScriptValue ret = eng.evaluate("qsTr('foo')");
diff --git a/tests/auto/qstatemachine/tst_qstatemachine.cpp b/tests/auto/qstatemachine/tst_qstatemachine.cpp
index 90b5a22..2bf76e7 100644
--- a/tests/auto/qstatemachine/tst_qstatemachine.cpp
+++ b/tests/auto/qstatemachine/tst_qstatemachine.cpp
@@ -155,6 +155,7 @@ private slots:
void clearError();
void historyStateHasNowhereToGo();
void historyStateAsInitialState();
+ void historyStateAfterRestart();
void brokenStateIsNeverEntered();
void customErrorStateNotInGraph();
void transitionToStateNotInGraph();
@@ -906,6 +907,64 @@ void tst_QStateMachine::historyStateHasNowhereToGo()
QCOMPARE(machine.errorString(), QString::fromLatin1("Missing default state in history state 'historyState'"));
}
+void tst_QStateMachine::historyStateAfterRestart()
+{
+ // QTBUG-8842
+ QStateMachine machine;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+ QState *s2 = new QState(&machine);
+ QState *s21 = new QState(s2);
+ QState *s22 = new QState(s2);
+ QHistoryState *s2h = new QHistoryState(s2);
+ s2h->setDefaultState(s21);
+ s1->addTransition(new EventTransition(QEvent::User, s2h));
+ s21->addTransition(new EventTransition(QEvent::User, s22));
+ s2->addTransition(new EventTransition(QEvent::User, s1));
+
+ for (int x = 0; x < 2; ++x) {
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ // s1 -> s2h -> s21 (default state)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ // This used to fail on the 2nd run because the
+ // history had not been cleared.
+ QVERIFY(machine.configuration().contains(s21));
+
+ // s21 -> s22
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+
+ // s2 -> s1 (s22 saved in s2h)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ // s1 -> s2h -> s22 (saved state)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ machine.stop();
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ }
+}
+
void tst_QStateMachine::brokenStateIsNeverEntered()
{
QStateMachine machine;
diff --git a/tests/auto/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp b/tests/auto/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
index 29cb341..4f7822d 100644
--- a/tests/auto/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
+++ b/tests/auto/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
@@ -90,7 +90,7 @@ int distance(TestIterator &a, TestIterator &b)
using namespace QtConcurrent;
-class tst_iteratekernel: public QObject
+class tst_QtConcurrentIterateKernel: public QObject
{
Q_OBJECT
private slots:
@@ -149,13 +149,13 @@ public:
};
-void tst_iteratekernel::instantiate()
+void tst_QtConcurrentIterateKernel::instantiate()
{
startThreadEngine(new PrintFor(0, 40)).startBlocking();
QCOMPARE((int)iterations, 40);
}
-void tst_iteratekernel::cancel()
+void tst_QtConcurrentIterateKernel::cancel()
{
{
QFuture<void> f = startThreadEngine(new SleepPrintFor(0, 40)).startAsynchronously();
@@ -182,7 +182,7 @@ public:
}
};
-void tst_iteratekernel::stresstest()
+void tst_QtConcurrentIterateKernel::stresstest()
{
const int iterations = 1000;
const int times = 50;
@@ -194,7 +194,7 @@ void tst_iteratekernel::stresstest()
}
}
-void tst_iteratekernel::noIterations()
+void tst_QtConcurrentIterateKernel::noIterations()
{
const int times = 20000;
for (int i = 0; i < times; ++i)
@@ -242,7 +242,7 @@ public:
bool throttling;
};
-void tst_iteratekernel::throttling()
+void tst_QtConcurrentIterateKernel::throttling()
{
const int totalIterations = 400;
iterations = 0;
@@ -271,7 +271,7 @@ public:
}
};
-void tst_iteratekernel::blockSize()
+void tst_QtConcurrentIterateKernel::blockSize()
{
#ifdef QT_NO_STL
QSKIP("Missing stl iterators prevent correct block size calculation", SkipAll);
@@ -296,7 +296,7 @@ public:
};
-void tst_iteratekernel::multipleResults()
+void tst_QtConcurrentIterateKernel::multipleResults()
{
#ifdef QT_NO_STL
QSKIP("Missing stl iterators prevent correct summation", SkipAll);
@@ -320,7 +320,7 @@ public:
}
};
-void tst_iteratekernel::instantiateWhile()
+void tst_QtConcurrentIterateKernel::instantiateWhile()
{
PrintWhile w;
w.startBlocking();
@@ -339,7 +339,7 @@ public:
}
};
-void tst_iteratekernel::stresstestWhile()
+void tst_QtConcurrentIterateKernel::stresstestWhile()
{
int iterations = 100000;
StressWhile w(iterations);
@@ -348,7 +348,7 @@ void tst_iteratekernel::stresstestWhile()
}
#endif
-QTEST_MAIN(tst_iteratekernel)
+QTEST_MAIN(tst_QtConcurrentIterateKernel)
#include "tst_qtconcurrentiteratekernel.moc"
diff --git a/tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp b/tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp
index d3417b1..894bac4 100644
--- a/tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp
+++ b/tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp
@@ -56,7 +56,7 @@ Q_DECLARE_METATYPE(QList<int>);
Q_DECLARE_METATYPE(QList<double>);
Q_DECLARE_METATYPE(QList<QString>);
-class tst_map: public QObject
+class tst_QtConcurrentMap: public QObject
{
Q_OBJECT
private slots:
@@ -114,7 +114,7 @@ public:
Q_DECLARE_METATYPE(QList<Number>);
-void tst_map::map()
+void tst_QtConcurrentMap::map()
{
// functors take arguments by reference, modifying the sequence in place
{
@@ -246,7 +246,7 @@ void tst_map::map()
#endif
}
-void tst_map::blocking_map()
+void tst_QtConcurrentMap::blocking_map()
{
// functors take arguments by reference, modifying the sequence in place
{
@@ -428,7 +428,7 @@ public:
}
};
-void tst_map::mapped()
+void tst_QtConcurrentMap::mapped()
{
QList<int> list;
list << 1 << 2 << 3;
@@ -790,7 +790,7 @@ void tst_map::mapped()
}
}
-void tst_map::blocking_mapped()
+void tst_QtConcurrentMap::blocking_mapped()
{
QList<int> list;
list << 1 << 2 << 3;
@@ -1244,7 +1244,7 @@ public:
}
};
-void tst_map::mappedReduced()
+void tst_QtConcurrentMap::mappedReduced()
{
QList<int> list;
list << 1 << 2 << 3;
@@ -1625,7 +1625,7 @@ void tst_map::mappedReduced()
// ### the same as above, with an initial result value
}
-void tst_map::blocking_mappedReduced()
+void tst_QtConcurrentMap::blocking_mappedReduced()
{
QList<int> list;
list << 1 << 2 << 3;
@@ -2010,7 +2010,7 @@ int sleeper(int val)
return val;
}
-void tst_map::assignResult()
+void tst_QtConcurrentMap::assignResult()
{
const QList<int> startList = QList<int>() << 0 << 1 << 2;
QList<int> list = QtConcurrent::blockingMapped(startList, sleeper);
@@ -2077,7 +2077,7 @@ public:
Q_DECLARE_METATYPE(QVector<MemFnTester>);
Q_DECLARE_METATYPE(QList<MemFnTester>);
-void tst_map::functionOverloads()
+void tst_QtConcurrentMap::functionOverloads()
{
QList<int> intList;
const QList<int> constIntList;
@@ -2159,7 +2159,7 @@ void fastReduce(int &result, const InstanceCounter&)
++result;
}
-void tst_map::throttling()
+void tst_QtConcurrentMap::throttling()
{
const int itemcount = 100;
const int allowedTemporaries = QThread::idealThreadCount() * 40;
@@ -2208,7 +2208,7 @@ void throwMapper(int &e)
throw QtConcurrent::Exception();
}
-void tst_map::exceptions()
+void tst_QtConcurrentMap::exceptions()
{
bool caught = false;
try {
@@ -2228,7 +2228,7 @@ int mapper(const int &i)
return i;
}
-void tst_map::incrementalResults()
+void tst_QtConcurrentMap::incrementalResults()
{
const int count = 200;
QList<int> ints;
@@ -2256,7 +2256,7 @@ void tst_map::incrementalResults()
Test that mapped does not cause deep copies when holding
references to Qt containers.
*/
-void tst_map::noDetatch()
+void tst_QtConcurrentMap::noDetatch()
{
{
QList<int> l = QList<int>() << 1;
@@ -2299,7 +2299,7 @@ void tst_map::noDetatch()
}
-void tst_map::stlContainers()
+void tst_QtConcurrentMap::stlContainers()
{
#ifdef QT_NO_STL
QSKIP("Qt compiled without STL support", SkipAll);
@@ -2331,7 +2331,7 @@ InstanceCounter ic_fn(const InstanceCounter & ic)
// Verify that held results are deleted when a future is
// assigned over with operator ==
-void tst_map::qFutureAssignmentLeak()
+void tst_QtConcurrentMap::qFutureAssignmentLeak()
{
currentInstanceCount = 0;
peakInstanceCount = 0;
@@ -2370,7 +2370,7 @@ void add(int &result, const int &sum)
result += sum;
}
-void tst_map::stressTest()
+void tst_QtConcurrentMap::stressTest()
{
const int listSize = 1000;
const int sum = (listSize - 1) * (listSize / 2);
@@ -2399,26 +2399,26 @@ void tst_map::stressTest()
}
}
-QTEST_MAIN(tst_map)
+QTEST_MAIN(tst_QtConcurrentMap)
#else
-void tst_map::map() {}
-void tst_map::blocking_map() {}
-void tst_map::mapped() {}
-void tst_map::blocking_mapped() {}
-void tst_map::mappedReduced() {}
-void tst_map::blocking_mappedReduced() {}
-void tst_map::assignResult() {}
-void tst_map::functionOverloads() {}
+void tst_QtConcurrentMap::map() {}
+void tst_QtConcurrentMap::blocking_map() {}
+void tst_QtConcurrentMap::mapped() {}
+void tst_QtConcurrentMap::blocking_mapped() {}
+void tst_QtConcurrentMap::mappedReduced() {}
+void tst_QtConcurrentMap::blocking_mappedReduced() {}
+void tst_QtConcurrentMap::assignResult() {}
+void tst_QtConcurrentMap::functionOverloads() {}
#ifndef QT_NO_EXCEPTIONS
-void tst_map::exceptions() {}
+void tst_QtConcurrentMap::exceptions() {}
#endif
-void tst_map::incrementalResults() {}
-void tst_map::stressTest() {}
-void tst_map::throttling() {}
-void tst_map::stlContainers() {}
-void tst_map::noDetatch() {}
+void tst_QtConcurrentMap::incrementalResults() {}
+void tst_QtConcurrentMap::stressTest() {}
+void tst_QtConcurrentMap::throttling() {}
+void tst_QtConcurrentMap::stlContainers() {}
+void tst_QtConcurrentMap::noDetatch() {}
QTEST_NOOP_MAIN
diff --git a/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
index b9ab6d3..8fdc50c 100644
--- a/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
+++ b/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
@@ -49,7 +49,7 @@
using namespace QtConcurrent;
-class TestRunFunction: public QObject
+class tst_QtConcurrentRun: public QObject
{
Q_OBJECT
private slots:
@@ -73,7 +73,7 @@ private slots:
#endif
-QTEST_MAIN(TestRunFunction)
+QTEST_MAIN(tst_QtConcurrentRun)
void light()
{
@@ -91,7 +91,7 @@ void heavy()
}
-void TestRunFunction::runLightFunction()
+void tst_QtConcurrentRun::runLightFunction()
{
qDebug("starting function");
QFuture<void> future = run(F(light));
@@ -100,7 +100,7 @@ void TestRunFunction::runLightFunction()
qDebug("done");
}
-void TestRunFunction::runHeavyFunction()
+void tst_QtConcurrentRun::runHeavyFunction()
{
qDebug("starting function");
QFuture<void> future = run(F(heavy));
@@ -141,7 +141,7 @@ public:
int operator()(int in) const { return in; }
};
-void TestRunFunction::returnValue()
+void tst_QtConcurrentRun::returnValue()
{
QFuture<int> f;
@@ -217,7 +217,7 @@ struct TestConstClass
void fooInt(int) const { };
};
-void TestRunFunction::functionObject()
+void tst_QtConcurrentRun::functionObject()
{
QFuture<void> f;
TestClass c;
@@ -235,7 +235,7 @@ void TestRunFunction::functionObject()
}
-void TestRunFunction::memberFunctions()
+void tst_QtConcurrentRun::memberFunctions()
{
TestClass c;
@@ -278,7 +278,7 @@ void stringIntFunction(QString)
}
-void TestRunFunction::implicitConvertibleTypes()
+void tst_QtConcurrentRun::implicitConvertibleTypes()
{
double d;
run(F(doubleFunction), d).waitForFinished();
@@ -294,7 +294,7 @@ void TestRunFunction::implicitConvertibleTypes()
void fn() { }
-void TestRunFunction::runWaitLoop()
+void tst_QtConcurrentRun::runWaitLoop()
{
for (int i = 0; i < 1000; ++i)
run(fn).waitForFinished();
@@ -324,7 +324,7 @@ int recursiveResult(int level)
return 1;
}
-void TestRunFunction::recursive()
+void tst_QtConcurrentRun::recursive()
{
int levels = 15;
@@ -375,7 +375,7 @@ int fn2(double, int *)
}
#if 0
-void TestRunFunction::createFunctor()
+void tst_QtConcurrentRun::createFunctor()
{
e = 0;
::QtConcurrent::createFunctor(vfn0)();
diff --git a/tests/auto/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp b/tests/auto/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
index 6f586d7..23fd19b 100644
--- a/tests/auto/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
+++ b/tests/auto/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
@@ -48,7 +48,7 @@
using namespace QtConcurrent;
-class tst_threadengine: public QObject
+class tst_QtConcurrentThreadEngine: public QObject
{
Q_OBJECT
public:
@@ -79,7 +79,7 @@ public:
}
};
-void tst_threadengine::runDirectly()
+void tst_QtConcurrentThreadEngine::runDirectly()
{
{
PrintUser engine;
@@ -120,7 +120,7 @@ public:
bool done;
};
-void tst_threadengine::result()
+void tst_QtConcurrentThreadEngine::result()
{
StringResultUser engine;
QCOMPARE(*engine.startBlocking(), QString("Foo"));
@@ -147,7 +147,7 @@ public:
bool done;
};
-void tst_threadengine::runThroughStarter()
+void tst_QtConcurrentThreadEngine::runThroughStarter()
{
{
ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser());
@@ -180,7 +180,7 @@ public:
}
};
-void tst_threadengine::cancel()
+void tst_QtConcurrentThreadEngine::cancel()
{
{
CancelUser *engine = new CancelUser();
@@ -234,7 +234,7 @@ public:
// Test that a user task with a thread function that always
// want to be throttled still completes. The thread engine
// should make keep one thread running at all times.
-void tst_threadengine::throttle()
+void tst_QtConcurrentThreadEngine::throttle()
{
const int repeats = 10;
for (int i = 0; i < repeats; ++i) {
@@ -280,7 +280,7 @@ public:
bool finishing;
};
-void tst_threadengine::threadCount()
+void tst_QtConcurrentThreadEngine::threadCount()
{
const int repeats = 10;
for (int i = 0; i < repeats; ++i) {
@@ -320,7 +320,7 @@ public:
};
-void tst_threadengine::multipleResults()
+void tst_QtConcurrentThreadEngine::multipleResults()
{
MultipleResultsUser *engine = new MultipleResultsUser();
QFuture<int> f = engine->startAsynchronously();
@@ -351,7 +351,7 @@ public:
}
};
-void tst_threadengine::stresstest()
+void tst_QtConcurrentThreadEngine::stresstest()
{
const int times = 20000;
@@ -379,7 +379,7 @@ public:
ThreadFunctionResult threadFunction() { QTest::qSleep(sleepTime); return ThreadFinished; }
};
-void tst_threadengine::cancelQueuedSlowUser()
+void tst_QtConcurrentThreadEngine::cancelQueuedSlowUser()
{
const int times = 100;
@@ -436,7 +436,7 @@ public:
QThread *blockThread;
};
-void tst_threadengine::exceptions()
+void tst_QtConcurrentThreadEngine::exceptions()
{
// Asynchronous mode:
{
@@ -527,7 +527,7 @@ void tst_threadengine::exceptions()
#endif
-QTEST_MAIN(tst_threadengine)
+QTEST_MAIN(tst_QtConcurrentThreadEngine)
#include "tst_qtconcurrentthreadengine.moc"
diff --git a/tests/auto/qvectornd/tst_qvectornd.cpp b/tests/auto/qvectornd/tst_qvectornd.cpp
index 2be7264..2850f32 100644
--- a/tests/auto/qvectornd/tst_qvectornd.cpp
+++ b/tests/auto/qvectornd/tst_qvectornd.cpp
@@ -45,12 +45,12 @@
#include <QtGui/qvector3d.h>
#include <QtGui/qvector4d.h>
-class tst_QVector : public QObject
+class tst_QVectorND : public QObject
{
Q_OBJECT
public:
- tst_QVector() {}
- ~tst_QVector() {}
+ tst_QVectorND() {}
+ ~tst_QVectorND() {}
private slots:
void create2();
@@ -155,7 +155,7 @@ static bool fuzzyCompare(qreal x, qreal y)
// Test the creation of QVector2D objects in various ways:
// construct, copy, and modify.
-void tst_QVector::create2()
+void tst_QVectorND::create2()
{
QVector2D null;
QCOMPARE(null.x(), (qreal)0.0f);
@@ -244,7 +244,7 @@ void tst_QVector::create2()
// Test the creation of QVector3D objects in various ways:
// construct, copy, and modify.
-void tst_QVector::create3()
+void tst_QVectorND::create3()
{
QVector3D null;
QCOMPARE(null.x(), (qreal)0.0f);
@@ -370,7 +370,7 @@ void tst_QVector::create3()
// Test the creation of QVector4D objects in various ways:
// construct, copy, and modify.
-void tst_QVector::create4()
+void tst_QVectorND::create4()
{
QVector4D null;
QCOMPARE(null.x(), (qreal)0.0f);
@@ -556,7 +556,7 @@ void tst_QVector::create4()
}
// Test vector length computation for 2D vectors.
-void tst_QVector::length2_data()
+void tst_QVectorND::length2_data()
{
QTest::addColumn<qreal>("x");
QTest::addColumn<qreal>("y");
@@ -569,7 +569,7 @@ void tst_QVector::length2_data()
QTest::newRow("-1y") << (qreal)0.0f << (qreal)-1.0f << (qreal)1.0f;
QTest::newRow("two") << (qreal)2.0f << (qreal)-2.0f << (qreal)qSqrt(8.0f);
}
-void tst_QVector::length2()
+void tst_QVectorND::length2()
{
QFETCH(qreal, x);
QFETCH(qreal, y);
@@ -581,7 +581,7 @@ void tst_QVector::length2()
}
// Test vector length computation for 3D vectors.
-void tst_QVector::length3_data()
+void tst_QVectorND::length3_data()
{
QTest::addColumn<qreal>("x");
QTest::addColumn<qreal>("y");
@@ -597,7 +597,7 @@ void tst_QVector::length3_data()
QTest::newRow("-1z") << (qreal)0.0f << (qreal)0.0f << (qreal)-1.0f << (qreal)1.0f;
QTest::newRow("two") << (qreal)2.0f << (qreal)-2.0f << (qreal)2.0f << (qreal)qSqrt(12.0f);
}
-void tst_QVector::length3()
+void tst_QVectorND::length3()
{
QFETCH(qreal, x);
QFETCH(qreal, y);
@@ -610,7 +610,7 @@ void tst_QVector::length3()
}
// Test vector length computation for 4D vectors.
-void tst_QVector::length4_data()
+void tst_QVectorND::length4_data()
{
QTest::addColumn<qreal>("x");
QTest::addColumn<qreal>("y");
@@ -629,7 +629,7 @@ void tst_QVector::length4_data()
QTest::newRow("-1w") << (qreal)0.0f << (qreal)0.0f << (qreal)0.0f << (qreal)-1.0f << (qreal)1.0f;
QTest::newRow("two") << (qreal)2.0f << (qreal)-2.0f << (qreal)2.0f << (qreal)2.0f << (qreal)qSqrt(16.0f);
}
-void tst_QVector::length4()
+void tst_QVectorND::length4()
{
QFETCH(qreal, x);
QFETCH(qreal, y);
@@ -643,12 +643,12 @@ void tst_QVector::length4()
}
// Test the unit vector conversion for 2D vectors.
-void tst_QVector::normalized2_data()
+void tst_QVectorND::normalized2_data()
{
// Use the same test data as the length test.
length2_data();
}
-void tst_QVector::normalized2()
+void tst_QVectorND::normalized2()
{
QFETCH(qreal, x);
QFETCH(qreal, y);
@@ -665,12 +665,12 @@ void tst_QVector::normalized2()
}
// Test the unit vector conversion for 3D vectors.
-void tst_QVector::normalized3_data()
+void tst_QVectorND::normalized3_data()
{
// Use the same test data as the length test.
length3_data();
}
-void tst_QVector::normalized3()
+void tst_QVectorND::normalized3()
{
QFETCH(qreal, x);
QFETCH(qreal, y);
@@ -689,12 +689,12 @@ void tst_QVector::normalized3()
}
// Test the unit vector conversion for 4D vectors.
-void tst_QVector::normalized4_data()
+void tst_QVectorND::normalized4_data()
{
// Use the same test data as the length test.
length4_data();
}
-void tst_QVector::normalized4()
+void tst_QVectorND::normalized4()
{
QFETCH(qreal, x);
QFETCH(qreal, y);
@@ -715,12 +715,12 @@ void tst_QVector::normalized4()
}
// Test the unit vector conversion for 2D vectors.
-void tst_QVector::normalize2_data()
+void tst_QVectorND::normalize2_data()
{
// Use the same test data as the length test.
length2_data();
}
-void tst_QVector::normalize2()
+void tst_QVectorND::normalize2()
{
QFETCH(qreal, x);
QFETCH(qreal, y);
@@ -735,12 +735,12 @@ void tst_QVector::normalize2()
}
// Test the unit vector conversion for 3D vectors.
-void tst_QVector::normalize3_data()
+void tst_QVectorND::normalize3_data()
{
// Use the same test data as the length test.
length3_data();
}
-void tst_QVector::normalize3()
+void tst_QVectorND::normalize3()
{
QFETCH(qreal, x);
QFETCH(qreal, y);
@@ -756,12 +756,12 @@ void tst_QVector::normalize3()
}
// Test the unit vector conversion for 4D vectors.
-void tst_QVector::normalize4_data()
+void tst_QVectorND::normalize4_data()
{
// Use the same test data as the length test.
length4_data();
}
-void tst_QVector::normalize4()
+void tst_QVectorND::normalize4()
{
QFETCH(qreal, x);
QFETCH(qreal, y);
@@ -778,7 +778,7 @@ void tst_QVector::normalize4()
}
// Test the comparison operators for 2D vectors.
-void tst_QVector::compare2()
+void tst_QVectorND::compare2()
{
QVector2D v1(1, 2);
QVector2D v2(1, 2);
@@ -791,7 +791,7 @@ void tst_QVector::compare2()
}
// Test the comparison operators for 3D vectors.
-void tst_QVector::compare3()
+void tst_QVectorND::compare3()
{
QVector3D v1(1, 2, 4);
QVector3D v2(1, 2, 4);
@@ -806,7 +806,7 @@ void tst_QVector::compare3()
}
// Test the comparison operators for 4D vectors.
-void tst_QVector::compare4()
+void tst_QVectorND::compare4()
{
QVector4D v1(1, 2, 4, 8);
QVector4D v2(1, 2, 4, 8);
@@ -823,7 +823,7 @@ void tst_QVector::compare4()
}
// Test vector addition for 2D vectors.
-void tst_QVector::add2_data()
+void tst_QVectorND::add2_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -852,7 +852,7 @@ void tst_QVector::add2_data()
<< (qreal)4.0f << (qreal)5.0f
<< (qreal)5.0f << (qreal)7.0f;
}
-void tst_QVector::add2()
+void tst_QVectorND::add2()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -876,7 +876,7 @@ void tst_QVector::add2()
}
// Test vector addition for 3D vectors.
-void tst_QVector::add3_data()
+void tst_QVectorND::add3_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -913,7 +913,7 @@ void tst_QVector::add3_data()
<< (qreal)4.0f << (qreal)5.0f << (qreal)-6.0f
<< (qreal)5.0f << (qreal)7.0f << (qreal)-3.0f;
}
-void tst_QVector::add3()
+void tst_QVectorND::add3()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -941,7 +941,7 @@ void tst_QVector::add3()
}
// Test vector addition for 4D vectors.
-void tst_QVector::add4_data()
+void tst_QVectorND::add4_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -986,7 +986,7 @@ void tst_QVector::add4_data()
<< (qreal)4.0f << (qreal)5.0f << (qreal)-6.0f << (qreal)9.0f
<< (qreal)5.0f << (qreal)7.0f << (qreal)-3.0f << (qreal)17.0f;
}
-void tst_QVector::add4()
+void tst_QVectorND::add4()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1018,12 +1018,12 @@ void tst_QVector::add4()
}
// Test vector subtraction for 2D vectors.
-void tst_QVector::subtract2_data()
+void tst_QVectorND::subtract2_data()
{
// Use the same test data as the add test.
add2_data();
}
-void tst_QVector::subtract2()
+void tst_QVectorND::subtract2()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1055,12 +1055,12 @@ void tst_QVector::subtract2()
}
// Test vector subtraction for 3D vectors.
-void tst_QVector::subtract3_data()
+void tst_QVectorND::subtract3_data()
{
// Use the same test data as the add test.
add3_data();
}
-void tst_QVector::subtract3()
+void tst_QVectorND::subtract3()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1097,12 +1097,12 @@ void tst_QVector::subtract3()
}
// Test vector subtraction for 4D vectors.
-void tst_QVector::subtract4_data()
+void tst_QVectorND::subtract4_data()
{
// Use the same test data as the add test.
add4_data();
}
-void tst_QVector::subtract4()
+void tst_QVectorND::subtract4()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1144,7 +1144,7 @@ void tst_QVector::subtract4()
}
// Test component-wise vector multiplication for 2D vectors.
-void tst_QVector::multiply2_data()
+void tst_QVectorND::multiply2_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -1173,7 +1173,7 @@ void tst_QVector::multiply2_data()
<< (qreal)4.0f << (qreal)5.0f
<< (qreal)4.0f << (qreal)10.0f;
}
-void tst_QVector::multiply2()
+void tst_QVectorND::multiply2()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1197,7 +1197,7 @@ void tst_QVector::multiply2()
}
// Test component-wise vector multiplication for 3D vectors.
-void tst_QVector::multiply3_data()
+void tst_QVectorND::multiply3_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -1234,7 +1234,7 @@ void tst_QVector::multiply3_data()
<< (qreal)4.0f << (qreal)5.0f << (qreal)-6.0f
<< (qreal)4.0f << (qreal)10.0f << (qreal)-18.0f;
}
-void tst_QVector::multiply3()
+void tst_QVectorND::multiply3()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1262,7 +1262,7 @@ void tst_QVector::multiply3()
}
// Test component-wise vector multiplication for 4D vectors.
-void tst_QVector::multiply4_data()
+void tst_QVectorND::multiply4_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -1307,7 +1307,7 @@ void tst_QVector::multiply4_data()
<< (qreal)4.0f << (qreal)5.0f << (qreal)-6.0f << (qreal)9.0f
<< (qreal)4.0f << (qreal)10.0f << (qreal)-18.0f << (qreal)72.0f;
}
-void tst_QVector::multiply4()
+void tst_QVectorND::multiply4()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1339,7 +1339,7 @@ void tst_QVector::multiply4()
}
// Test vector multiplication by a factor for 2D vectors.
-void tst_QVector::multiplyFactor2_data()
+void tst_QVectorND::multiplyFactor2_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -1372,7 +1372,7 @@ void tst_QVector::multiplyFactor2_data()
<< (qreal)0.0f
<< (qreal)0.0f << (qreal)0.0f;
}
-void tst_QVector::multiplyFactor2()
+void tst_QVectorND::multiplyFactor2()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1395,7 +1395,7 @@ void tst_QVector::multiplyFactor2()
}
// Test vector multiplication by a factor for 3D vectors.
-void tst_QVector::multiplyFactor3_data()
+void tst_QVectorND::multiplyFactor3_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -1435,7 +1435,7 @@ void tst_QVector::multiplyFactor3_data()
<< (qreal)0.0f
<< (qreal)0.0f << (qreal)0.0f << (qreal)0.0f;
}
-void tst_QVector::multiplyFactor3()
+void tst_QVectorND::multiplyFactor3()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1461,7 +1461,7 @@ void tst_QVector::multiplyFactor3()
}
// Test vector multiplication by a factor for 4D vectors.
-void tst_QVector::multiplyFactor4_data()
+void tst_QVectorND::multiplyFactor4_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -1508,7 +1508,7 @@ void tst_QVector::multiplyFactor4_data()
<< (qreal)0.0f
<< (qreal)0.0f << (qreal)0.0f << (qreal)0.0f << (qreal)0.0f;
}
-void tst_QVector::multiplyFactor4()
+void tst_QVectorND::multiplyFactor4()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1537,12 +1537,12 @@ void tst_QVector::multiplyFactor4()
}
// Test vector division by a factor for 2D vectors.
-void tst_QVector::divide2_data()
+void tst_QVectorND::divide2_data()
{
// Use the same test data as the multiply test.
multiplyFactor2_data();
}
-void tst_QVector::divide2()
+void tst_QVectorND::divide2()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1567,12 +1567,12 @@ void tst_QVector::divide2()
}
// Test vector division by a factor for 3D vectors.
-void tst_QVector::divide3_data()
+void tst_QVectorND::divide3_data()
{
// Use the same test data as the multiply test.
multiplyFactor3_data();
}
-void tst_QVector::divide3()
+void tst_QVectorND::divide3()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1600,12 +1600,12 @@ void tst_QVector::divide3()
}
// Test vector division by a factor for 4D vectors.
-void tst_QVector::divide4_data()
+void tst_QVectorND::divide4_data()
{
// Use the same test data as the multiply test.
multiplyFactor4_data();
}
-void tst_QVector::divide4()
+void tst_QVectorND::divide4()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1636,12 +1636,12 @@ void tst_QVector::divide4()
}
// Test vector negation for 2D vectors.
-void tst_QVector::negate2_data()
+void tst_QVectorND::negate2_data()
{
// Use the same test data as the add test.
add2_data();
}
-void tst_QVector::negate2()
+void tst_QVectorND::negate2()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1653,12 +1653,12 @@ void tst_QVector::negate2()
}
// Test vector negation for 3D vectors.
-void tst_QVector::negate3_data()
+void tst_QVectorND::negate3_data()
{
// Use the same test data as the add test.
add3_data();
}
-void tst_QVector::negate3()
+void tst_QVectorND::negate3()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1671,12 +1671,12 @@ void tst_QVector::negate3()
}
// Test vector negation for 4D vectors.
-void tst_QVector::negate4_data()
+void tst_QVectorND::negate4_data()
{
// Use the same test data as the add test.
add4_data();
}
-void tst_QVector::negate4()
+void tst_QVectorND::negate4()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1690,7 +1690,7 @@ void tst_QVector::negate4()
}
// Test the computation of vector cross-products.
-void tst_QVector::crossProduct_data()
+void tst_QVectorND::crossProduct_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -1721,7 +1721,7 @@ void tst_QVector::crossProduct_data()
<< (qreal)-3.0f << (qreal)6.0f << (qreal)-3.0f
<< (qreal)32.0f;
}
-void tst_QVector::crossProduct()
+void tst_QVectorND::crossProduct()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1751,12 +1751,12 @@ void tst_QVector::crossProduct()
}
// Test the computation of normals.
-void tst_QVector::normal_data()
+void tst_QVectorND::normal_data()
{
// Use the same test data as the crossProduct test.
crossProduct_data();
}
-void tst_QVector::normal()
+void tst_QVectorND::normal()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1780,7 +1780,7 @@ void tst_QVector::normal()
}
// Test distance to plane calculations.
-void tst_QVector::distanceToPlane_data()
+void tst_QVectorND::distanceToPlane_data()
{
QTest::addColumn<qreal>("x1"); // Point on plane
QTest::addColumn<qreal>("y1");
@@ -1823,7 +1823,7 @@ void tst_QVector::distanceToPlane_data()
<< (qreal)0.0f << (qreal)2.0f << (qreal)0.0f
<< (qreal)-2.0f;
}
-void tst_QVector::distanceToPlane()
+void tst_QVectorND::distanceToPlane()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1853,7 +1853,7 @@ void tst_QVector::distanceToPlane()
}
// Test distance to line calculations.
-void tst_QVector::distanceToLine_data()
+void tst_QVectorND::distanceToLine_data()
{
QTest::addColumn<qreal>("x1"); // Point on line
QTest::addColumn<qreal>("y1");
@@ -1896,7 +1896,7 @@ void tst_QVector::distanceToLine_data()
<< (qreal)0.0f << (qreal)5.0f << (qreal)0.0f
<< (qreal)5.0f;
}
-void tst_QVector::distanceToLine()
+void tst_QVectorND::distanceToLine()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1917,7 +1917,7 @@ void tst_QVector::distanceToLine()
}
// Test the computation of dot products for 2D vectors.
-void tst_QVector::dotProduct2_data()
+void tst_QVectorND::dotProduct2_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -1940,7 +1940,7 @@ void tst_QVector::dotProduct2_data()
<< (qreal)4.0f << (qreal)5.0f
<< (qreal)14.0f;
}
-void tst_QVector::dotProduct2()
+void tst_QVectorND::dotProduct2()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1960,12 +1960,12 @@ void tst_QVector::dotProduct2()
}
// Test the computation of dot products for 3D vectors.
-void tst_QVector::dotProduct3_data()
+void tst_QVectorND::dotProduct3_data()
{
// Use the same test data as the crossProduct test.
crossProduct_data();
}
-void tst_QVector::dotProduct3()
+void tst_QVectorND::dotProduct3()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -1994,7 +1994,7 @@ void tst_QVector::dotProduct3()
}
// Test the computation of dot products for 4D vectors.
-void tst_QVector::dotProduct4_data()
+void tst_QVectorND::dotProduct4_data()
{
QTest::addColumn<qreal>("x1");
QTest::addColumn<qreal>("y1");
@@ -2021,7 +2021,7 @@ void tst_QVector::dotProduct4_data()
<< (qreal)4.0f << (qreal)5.0f << (qreal)6.0f << (qreal)7.0f
<< (qreal)60.0f;
}
-void tst_QVector::dotProduct4()
+void tst_QVectorND::dotProduct4()
{
QFETCH(qreal, x1);
QFETCH(qreal, y1);
@@ -2044,14 +2044,14 @@ void tst_QVector::dotProduct4()
QCOMPARE(QVector4D::dotProduct(v1, v2), d);
}
-class tst_QVectorProperties : public QObject
+class tst_QVectorNDProperties : public QObject
{
Q_OBJECT
Q_PROPERTY(QVector2D vector2D READ vector2D WRITE setVector2D)
Q_PROPERTY(QVector3D vector3D READ vector3D WRITE setVector3D)
Q_PROPERTY(QVector4D vector4D READ vector4D WRITE setVector4D)
public:
- tst_QVectorProperties(QObject *parent = 0) : QObject(parent) {}
+ tst_QVectorNDProperties(QObject *parent = 0) : QObject(parent) {}
QVector2D vector2D() const { return v2; }
void setVector2D(const QVector2D& value) { v2 = value; }
@@ -2069,9 +2069,9 @@ private:
};
// Test getting and setting vector properties via the metaobject system.
-void tst_QVector::properties()
+void tst_QVectorND::properties()
{
- tst_QVectorProperties obj;
+ tst_QVectorNDProperties obj;
obj.setVector2D(QVector2D(1.0f, 2.0f));
obj.setVector3D(QVector3D(3.0f, 4.0f, 5.0f));
@@ -2115,7 +2115,7 @@ void tst_QVector::properties()
QCOMPARE(v4.w(), (qreal)-9.0f);
}
-void tst_QVector::metaTypes()
+void tst_QVectorND::metaTypes()
{
QVERIFY(QMetaType::type("QVector2D") == QMetaType::QVector2D);
QVERIFY(QMetaType::type("QVector3D") == QMetaType::QVector3D);
@@ -2137,6 +2137,6 @@ void tst_QVector::metaTypes()
QVERIFY(qMetaTypeId<QVector4D>() == QMetaType::QVector4D);
}
-QTEST_APPLESS_MAIN(tst_QVector)
+QTEST_APPLESS_MAIN(tst_QVectorND)
#include "tst_qvectornd.moc"
diff --git a/tests/auto/xmlpatternsdiagnosticsts/tst_xmlpatternsdiagnosticsts.cpp b/tests/auto/xmlpatternsdiagnosticsts/tst_xmlpatternsdiagnosticsts.cpp
index 4a11404..f4f6181 100644
--- a/tests/auto/xmlpatternsdiagnosticsts/tst_xmlpatternsdiagnosticsts.cpp
+++ b/tests/auto/xmlpatternsdiagnosticsts/tst_xmlpatternsdiagnosticsts.cpp
@@ -52,25 +52,25 @@
\since 4.5
\brief Test QtXmlPatterns test suite driver in tests/auto/xmlpatternsxqts/lib/.
*/
-class tst_XmlPatternsXSLTS : public tst_SuiteTest
+class tst_XmlPatternsDiagnosticsTS : public tst_SuiteTest
{
Q_OBJECT
public:
- tst_XmlPatternsXSLTS();
+ tst_XmlPatternsDiagnosticsTS();
protected:
virtual void catalogPath(QString &write) const;
};
-tst_XmlPatternsXSLTS::tst_XmlPatternsXSLTS() : tst_SuiteTest(tst_SuiteTest::XQuerySuite, true)
+tst_XmlPatternsDiagnosticsTS::tst_XmlPatternsDiagnosticsTS() : tst_SuiteTest(tst_SuiteTest::XQuerySuite, true)
{
}
-void tst_XmlPatternsXSLTS::catalogPath(QString &write) const
+void tst_XmlPatternsDiagnosticsTS::catalogPath(QString &write) const
{
write = QLatin1String("TestSuite/DiagnosticsCatalog.xml");
}
-QTEST_MAIN(tst_XmlPatternsXSLTS)
+QTEST_MAIN(tst_XmlPatternsDiagnosticsTS)
#include "tst_xmlpatternsdiagnosticsts.moc"
#else
diff --git a/tools/runonphone/main.cpp b/tools/runonphone/main.cpp
index 1a5cdee..65085e0 100644
--- a/tools/runonphone/main.cpp
+++ b/tools/runonphone/main.cpp
@@ -44,9 +44,9 @@
#include <QStringList>
#include <QScopedPointer>
#include <QTimer>
-#include "trkutils.h"
-#include "trkdevice.h"
-#include "launcher.h"
+#include "symbianutils/trkutils.h"
+#include "symbianutils/trkdevice.h"
+#include "symbianutils/launcher.h"
#include "trksignalhandler.h"
#include "serenum.h"
@@ -133,28 +133,28 @@ int main(int argc, char *argv[])
return 1;
}
- if(serialPortName.isEmpty()) {
- if(loglevel > 0)
+ if (serialPortName.isEmpty()) {
+ if (loglevel > 0)
outstream << "Detecting serial ports" << endl;
QList <SerialPortId> ports = enumerateSerialPorts();
foreach(SerialPortId id, ports) {
- if(loglevel > 0)
+ if (loglevel > 0)
outstream << "Port Name: " << id.portName << ", "
<< "Friendly Name:" << id.friendlyName << endl;
- if(serialPortName.isEmpty()) {
- if(!id.friendlyName.isEmpty() &&
- serialPortFriendlyName.isEmpty() &&
- (id.friendlyName.contains("symbian", Qt::CaseInsensitive) ||
- id.friendlyName.contains("s60", Qt::CaseInsensitive) ||
- id.friendlyName.contains("nokia", Qt::CaseInsensitive)))
- serialPortName = id.portName;
- else if (!id.friendlyName.isEmpty() &&
- !serialPortFriendlyName.isEmpty() &&
- id.friendlyName.contains(serialPortFriendlyName))
+ if (serialPortName.isEmpty()) {
+ if (!id.friendlyName.isEmpty()
+ && serialPortFriendlyName.isEmpty()
+ && (id.friendlyName.contains("symbian", Qt::CaseInsensitive)
+ || id.friendlyName.contains("s60", Qt::CaseInsensitive)
+ || id.friendlyName.contains("nokia", Qt::CaseInsensitive)))
serialPortName = id.portName;
+ else if (!id.friendlyName.isEmpty()
+ && !serialPortFriendlyName.isEmpty()
+ && id.friendlyName.contains(serialPortFriendlyName))
+ serialPortName = id.portName;
}
}
- if(serialPortName.isEmpty()) {
+ if (serialPortName.isEmpty()) {
errstream << "No phone found, ensure USB cable is connected or specify manually with -p" << endl;
return 1;
}
@@ -162,7 +162,7 @@ int main(int argc, char *argv[])
QScopedPointer<trk::Launcher> launcher;
- if(sisFile.isEmpty()) {
+ if (sisFile.isEmpty()) {
launcher.reset(new trk::Launcher(trk::Launcher::ActionCopyRun));
launcher->setCopyFileName(exeFile, QString("c:\\sys\\bin\\") + exeFile);
errstream << "System TRK required to copy EXE, use --sis if using Application TRK" << endl;
@@ -172,14 +172,14 @@ int main(int argc, char *argv[])
launcher->setCopyFileName(sisFile, "c:\\data\\testtemp.sis");
launcher->setInstallFileName("c:\\data\\testtemp.sis");
}
- if(loglevel > 0)
+ if (loglevel > 0)
outstream << "Connecting to target via " << serialPortName << endl;
launcher->setTrkServerName(serialPortName);
launcher->setFileName(QString("c:\\sys\\bin\\") + exeFile);
launcher->setCommandLineArgs(cmdLine);
- if(loglevel > 1)
+ if (loglevel > 1)
launcher->setVerbose(1);
TrkSignalHandler handler;
@@ -212,7 +212,7 @@ int main(int argc, char *argv[])
}
QString errorMessage;
- if(!launcher->startServer(&errorMessage)) {
+ if (!launcher->startServer(&errorMessage)) {
errstream << errorMessage << endl;
return 1;
}
diff --git a/tools/runonphone/serenum_stub.cpp b/tools/runonphone/serenum_stub.cpp
index f39765e..6f0e1ef 100644
--- a/tools/runonphone/serenum_stub.cpp
+++ b/tools/runonphone/serenum_stub.cpp
@@ -47,7 +47,7 @@
QList<SerialPortId> enumerateSerialPorts()
{
QList<SerialPortId> list;
- qWarning() << "enumerateSerialPorts not implemented" << endl;
+ qWarning() << "enumerateSerialPorts not implemented";
return list;
}
diff --git a/tools/runonphone/serenum_unix.cpp b/tools/runonphone/serenum_unix.cpp
index ca6c437..c8ec021 100644
--- a/tools/runonphone/serenum_unix.cpp
+++ b/tools/runonphone/serenum_unix.cpp
@@ -51,7 +51,7 @@ QList<SerialPortId> enumerateSerialPorts()
QList<SerialPortId> list;
QDir dir("/dev/serial/by-id/");
QFileInfoList ports(dir.entryInfoList());
- foreach(QFileInfo info, ports) {
+ foreach (const QFileInfo &info, ports) {
if (!info.isDir()) {
SerialPortId id;
id.friendlyName = info.fileName();
diff --git a/tools/runonphone/trksignalhandler.cpp b/tools/runonphone/trksignalhandler.cpp
index 138ebc9..18a2c0c 100644
--- a/tools/runonphone/trksignalhandler.cpp
+++ b/tools/runonphone/trksignalhandler.cpp
@@ -58,13 +58,13 @@ private:
void TrkSignalHandler::copyingStarted()
{
- if(d->loglevel > 0)
+ if (d->loglevel > 0)
d->out << "Copying..." << endl;
}
void TrkSignalHandler::canNotConnect(const QString &errorMessage)
{
- d->err << "Cannot Connect - " << errorMessage << endl;
+ d->err << "Cannot connect - " << errorMessage << endl;
}
void TrkSignalHandler::canNotCreateFile(const QString &filename, const QString &errorMessage)
@@ -84,7 +84,7 @@ void TrkSignalHandler::canNotCloseFile(const QString &filename, const QString &e
void TrkSignalHandler::installingStarted()
{
- if(d->loglevel > 0)
+ if (d->loglevel > 0)
d->out << "Installing..." << endl;
}
@@ -95,19 +95,19 @@ void TrkSignalHandler::canNotInstall(const QString &packageFilename, const QStri
void TrkSignalHandler::installingFinished()
{
- if(d->loglevel > 0)
+ if (d->loglevel > 0)
d->out << "Installing finished" << endl;
}
void TrkSignalHandler::startingApplication()
{
- if(d->loglevel > 0)
+ if (d->loglevel > 0)
d->out << "Starting app..." << endl;
}
void TrkSignalHandler::applicationRunning(uint pid)
{
- if(d->loglevel > 0)
+ if (d->loglevel > 0)
d->out << "Running..." << endl;
}
@@ -118,7 +118,7 @@ void TrkSignalHandler::canNotRun(const QString &errorMessage)
void TrkSignalHandler::finished()
{
- if(d->loglevel > 0)
+ if (d->loglevel > 0)
d->out << "Done." << endl;
QCoreApplication::quit();
}
@@ -130,17 +130,17 @@ void TrkSignalHandler::applicationOutputReceived(const QString &output)
void TrkSignalHandler::copyProgress(int percent)
{
- if(d->loglevel > 0) {
+ if (d->loglevel > 0) {
d->out << percent << "% ";
d->out.flush();
- if(percent==100)
+ if (percent==100)
d->out << endl;
}
}
void TrkSignalHandler::stateChanged(int state)
{
- if(d->loglevel > 1)
+ if (d->loglevel > 1)
d->out << "State" << state << endl;
}
@@ -164,10 +164,10 @@ void TrkSignalHandler::timeout()
emit terminate();
}
-TrkSignalHandlerPrivate::TrkSignalHandlerPrivate() :
- out(stdout),
- err(stderr),
- loglevel(0)
+TrkSignalHandlerPrivate::TrkSignalHandlerPrivate()
+ : out(stdout),
+ err(stderr),
+ loglevel(0)
{
}
@@ -179,8 +179,8 @@ TrkSignalHandlerPrivate::~TrkSignalHandlerPrivate()
}
TrkSignalHandler::TrkSignalHandler()
+ : d(new TrkSignalHandlerPrivate())
{
- d = new TrkSignalHandlerPrivate();
}
TrkSignalHandler::~TrkSignalHandler()