[-]
[+]
|
Changed |
_service:tar_git:qtdeclarative.spec
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,6 +2,6 @@
<service name="tar_git">
<param name="url">https://github.com/sailfishos-chum/qtdeclarative.git</param>
<param name="branch"></param>
- <param name="revision">5.15.9+kde24</param>
+ <param name="revision">5.15.10+kde29</param>
</service>
</services>
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/.qmake.conf
^
|
@@ -4,4 +4,4 @@
DEFINES += QT_NO_LINKED_LIST
DEFINES += QT_NO_JAVA_STYLE_ITERATORS
-MODULE_VERSION = 5.15.9
+MODULE_VERSION = 5.15.10
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/3rdparty/masm/assembler/ARM64Assembler.h
^
|
@@ -676,11 +676,11 @@
struct RealTypes {
int64_t m_from : 48;
int64_t m_to : 48;
+ RegisterID m_compareRegister;
JumpType m_type : 8;
JumpLinkType m_linkType : 8;
Condition m_condition : 4;
unsigned m_bitNumber : 6;
- RegisterID m_compareRegister : 6;
bool m_is64Bit : 1;
} realTypes;
} data;
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/3rdparty/masm/wtf/OSAllocatorPosix.cpp
^
|
@@ -111,7 +111,11 @@
(fd == -1 ? MAP_ANON : 0), fd, 0);
if (result == MAP_FAILED)
CRASH();
- madvise(result, bytes, MADV_DONTNEED);
+
+ while (madvise(result, bytes, MADV_DONTNEED)) {
+ if (errno != EAGAIN)
+ CRASH();
+ }
if (fd != -1)
close(fd);
@@ -218,7 +222,12 @@
protection |= PROT_EXEC;
if (mprotect(address, bytes, protection))
CRASH();
- madvise(address, bytes, MADV_WILLNEED);
+
+ while (madvise(address, bytes, MADV_WILLNEED)) {
+ if (errno != EAGAIN)
+ CRASH();
+ }
+
#elif HAVE(MADV_FREE_REUSE)
UNUSED_PARAM(writable);
UNUSED_PARAM(executable);
@@ -238,7 +247,10 @@
// Use PROT_NONE and MAP_LAZY to decommit the pages.
mmap(address, bytes, PROT_NONE, MAP_FIXED | MAP_LAZY | MAP_PRIVATE | MAP_ANON, -1, 0);
#elif OS(LINUX)
- madvise(address, bytes, MADV_DONTNEED);
+ while (madvise(address, bytes, MADV_DONTNEED)) {
+ if (errno != EAGAIN)
+ CRASH();
+ }
if (mprotect(address, bytes, PROT_NONE))
CRASH();
#elif HAVE(MADV_FREE_REUSE)
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/imports/labsmodels/qqmltablemodelcolumn_p.h
^
|
@@ -213,8 +213,6 @@
void setSizeHintChanged();
private:
- int mIndex = -1;
-
// We store these in hashes because QQuickTableModel needs string-based lookup in certain situations.
QHash<QString, QJSValue> mGetters;
QHash<QString, QJSValue> mSetters;
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/packetprotocol/qpacketprotocol.cpp
^
|
@@ -324,3 +324,5 @@
*/
QT_END_NAMESPACE
+
+#include "moc_qpacketprotocol_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_debugger/qqmldebuggerservicefactory.cpp
^
|
@@ -56,3 +56,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmldebuggerservicefactory.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_inspector/globalinspector.cpp
^
|
@@ -407,4 +407,6 @@
QT_END_NAMESPACE
+#include "moc_globalinspector.cpp"
+
#include <globalinspector.moc>
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_messages/qdebugmessageservice.cpp
^
|
@@ -106,3 +106,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qdebugmessageservice.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_nativedebugger/qqmlnativedebugservicefactory.cpp
^
|
@@ -52,3 +52,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmlnativedebugservicefactory.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_preview/qqmldebugtranslationservice.cpp
^
|
@@ -66,3 +66,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmldebugtranslationservice.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewfileloader.cpp
^
|
@@ -197,3 +197,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmlpreviewfileloader.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewhandler.cpp
^
|
@@ -456,3 +456,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmlpreviewhandler.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewservice.cpp
^
|
@@ -197,3 +197,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmlpreviewservice.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewservicefactory.cpp
^
|
@@ -54,3 +54,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmlpreviewservicefactory.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_profiler/qqmlprofileradapter.cpp
^
|
@@ -159,3 +159,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmlprofileradapter.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_quickprofiler/qquickprofileradapter.cpp
^
|
@@ -175,3 +175,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qquickprofileradapter.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_server/qmldbg_server.pro
^
|
@@ -2,7 +2,7 @@
QT = qml-private packetprotocol-private
SOURCES += \
- $$PWD/qqmldebugserver.cpp
+ $$PWD/qqmldebugserverfactory.cpp
HEADERS += \
$$PWD/qqmldebugserverfactory.h
|
[-]
[+]
|
Added |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_server/qqmldebugserverfactory.cpp
^
|
@@ -0,0 +1,767 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qqmldebugserverfactory.h"
+
+#include <private/qqmldebugserver_p.h>
+#include <private/qqmldebugserverconnection_p.h>
+#include <private/qqmldebugservice_p.h>
+#include <private/qjsengine_p.h>
+#include <private/qqmlglobal_p.h>
+#include <private/qqmldebugpluginmanager_p.h>
+#include <private/qqmldebugserviceinterfaces_p.h>
+#include <private/qpacketprotocol_p.h>
+#include <private/qversionedpacket_p.h>
+
+#include <QtCore/QAtomicInt>
+#include <QtCore/QDir>
+#include <QtCore/QPluginLoader>
+#include <QtCore/QStringList>
+#include <QtCore/QVector>
+#include <QtCore/qwaitcondition.h>
+
+QT_BEGIN_NAMESPACE
+
+/*
+ QQmlDebug Protocol (Version 1):
+
+ handshake:
+ 1. Client sends
+ "QDeclarativeDebugServer" 0 version pluginNames [QDataStream version]
+ version: an int representing the highest protocol version the client knows
+ pluginNames: plugins available on client side
+ 2. Server sends
+ "QDeclarativeDebugClient" 0 version pluginNames pluginVersions [QDataStream version]
+ version: an int representing the highest protocol version the client & server know
+ pluginNames: plugins available on server side. plugins both in the client and server message are enabled.
+ client plugin advertisement
+ 1. Client sends
+ "QDeclarativeDebugServer" 1 pluginNames
+ server plugin advertisement (not implemented: all services are required to register before open())
+ 1. Server sends
+ "QDeclarativeDebugClient" 1 pluginNames pluginVersions
+ plugin communication:
+ Everything send with a header different to "QDeclarativeDebugServer" is sent to the appropriate plugin.
+ */
+
+Q_QML_DEBUG_PLUGIN_LOADER(QQmlDebugServerConnection)
+
+const int protocolVersion = 1;
+using QQmlDebugPacket = QVersionedPacket<QQmlDebugConnector>;
+
+class QQmlDebugServerImpl;
+class QQmlDebugServerThread : public QThread
+{
+public:
+ QQmlDebugServerThread() : m_server(nullptr), m_portFrom(-1), m_portTo(-1) {}
+
+ void setServer(QQmlDebugServerImpl *server)
+ {
+ m_server = server;
+ }
+
+ void setPortRange(int portFrom, int portTo, const QString &hostAddress)
+ {
+ m_pluginName = QLatin1String("QTcpServerConnection");
+ m_portFrom = portFrom;
+ m_portTo = portTo;
+ m_hostAddress = hostAddress;
+ }
+
+ void setFileName(const QString &fileName)
+ {
+ m_pluginName = QLatin1String("QLocalClientConnection");
+ m_fileName = fileName;
+ }
+
+ const QString &pluginName() const
+ {
+ return m_pluginName;
+ }
+
+ void run() override;
+
+private:
+ QQmlDebugServerImpl *m_server;
+ QString m_pluginName;
+ int m_portFrom;
+ int m_portTo;
+ QString m_hostAddress;
+ QString m_fileName;
+};
+
+class QQmlDebugServerImpl : public QQmlDebugServer
+{
+ Q_OBJECT
+public:
+ QQmlDebugServerImpl();
+
+ bool blockingMode() const override;
+
+ QQmlDebugService *service(const QString &name) const override;
+
+ void addEngine(QJSEngine *engine) override;
+ void removeEngine(QJSEngine *engine) override;
+ bool hasEngine(QJSEngine *engine) const override;
+
+ bool addService(const QString &name, QQmlDebugService *service) override;
+ bool removeService(const QString &name) override;
+
+ bool open(const QVariantHash &configuration) override;
+ void setDevice(QIODevice *socket) override;
+
+ void parseArguments();
+
+ static void cleanup();
+
+private:
+ friend class QQmlDebugServerThread;
+ friend class QQmlDebugServerFactory;
+
+ class EngineCondition {
+ public:
+ EngineCondition() : numServices(0), condition(new QWaitCondition) {}
+
+ bool waitForServices(QMutex *locked, int numEngines);
+ bool isWaiting() const { return numServices > 0; }
+
+ void wake();
+ private:
+ int numServices;
+
+ // shared pointer to allow for QHash-inflicted copying.
+ QSharedPointer<QWaitCondition> condition;
+ };
+
+ bool canSendMessage(const QString &name);
+ void doSendMessage(const QString &name, const QByteArray &message);
+ void wakeEngine(QJSEngine *engine);
+ void sendMessage(const QString &name, const QByteArray &message);
+ void sendMessages(const QString &name, const QList<QByteArray> &messages);
+ void changeServiceState(const QString &serviceName, QQmlDebugService::State state);
+ void removeThread();
+ void receiveMessage();
+ void protocolError();
+
+ QQmlDebugServerConnection *m_connection;
+ QHash<QString, QQmlDebugService *> m_plugins;
+ QStringList m_clientPlugins;
+ bool m_gotHello;
+ bool m_blockingMode;
+
+ QHash<QJSEngine *, EngineCondition> m_engineConditions;
+
+ mutable QMutex m_helloMutex;
+ QWaitCondition m_helloCondition;
+ QQmlDebugServerThread m_thread;
+ QPacketProtocol *m_protocol;
+ QAtomicInt m_changeServiceStateCalls;
+};
+
+void QQmlDebugServerImpl::cleanup()
+{
+ QQmlDebugServerImpl *server = static_cast<QQmlDebugServerImpl *>(
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/common/qqmljsmemorypool_p.h
^
|
@@ -87,7 +87,7 @@
inline void *allocate(size_t size)
{
size = (size + 7) & ~size_t(7);
- if (Q_LIKELY(_ptr && (_ptr + size < _end))) {
+ if (Q_LIKELY(_ptr && size < size_t(_end - _ptr))) {
void *addr = _ptr;
_ptr += size;
return addr;
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/compiler/qv4bytecodegenerator_p.h
^
|
@@ -186,13 +186,13 @@
Q_REQUIRED_RESULT Jump jumpNotUndefined()
{
- Instruction::JumpNotUndefined data;
+ Instruction::JumpNotUndefined data{};
return addJumpInstruction(data);
}
Q_REQUIRED_RESULT Jump jumpNoException()
{
- Instruction::JumpNoException data;
+ Instruction::JumpNoException data{};
return addJumpInstruction(data);
}
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/compiler/qv4codegen.cpp
^
|
@@ -2927,6 +2927,17 @@
return false;
}
+ auto innerMostCurentFunctionContext = _context;
+ while (innerMostCurentFunctionContext && innerMostCurentFunctionContext->contextType != ContextType::Function)
+ innerMostCurentFunctionContext = innerMostCurentFunctionContext->parent;
+
+ Q_ASSERT(innerMostCurentFunctionContext); // yield outside function would have been rejected by parser
+
+ if (!innerMostCurentFunctionContext->isGenerator) {
+ throwSyntaxError(ast->firstSourceLocation(), QLatin1String("Yield is only valid in generator functions"));
+ return false;
+ }
+
RegisterScope scope(this);
TailCallBlocker blockTailCalls(this);
Reference expr = ast->expression ? expression(ast->expression) : Reference::fromConst(this, Encode::undefined());
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/debugger/debugger.pri
^
|
@@ -15,6 +15,7 @@
$$PWD/qqmldebugservice.cpp \
$$PWD/qqmlabstractprofileradapter.cpp \
$$PWD/qqmlprofiler.cpp \
+ $$PWD/qqmldebugserver.cpp \
$$PWD/qqmldebugserviceinterfaces.cpp
}
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/debugger/qqmldebugconnector_p.h
^
|
@@ -65,6 +65,7 @@
class Q_QML_PRIVATE_EXPORT QQmlDebugConnector
{
+ virtual ~QQmlDebugConnector() = default; // don't break 'override' on ~QQmlDebugServer
public:
static QQmlDebugConnector *instance() { return nullptr; }
|
[-]
[+]
|
Added |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/debugger/qqmldebugserver.cpp
^
|
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2022 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qqmldebugserver_p.h"
+
+QT_BEGIN_NAMESPACE
+
+QQmlDebugServer::~QQmlDebugServer()
+ = default;
+
+QT_END_NAMESPACE
+
+#include "moc_qqmldebugserver_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/debugger/qqmldebugserver_p.h
^
|
@@ -62,6 +62,7 @@
{
Q_OBJECT
public:
+ ~QQmlDebugServer() override;
virtual void setDevice(QIODevice *socket) = 0;
};
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/jit/qv4baselinejit.cpp
^
|
@@ -540,6 +540,8 @@
as->passEngineAsArg(0);
BASELINEJIT_GENERATE_RUNTIME_CALL(ThrowException, CallResultDestination::Ignore);
as->gotoCatchException();
+
+ // LOAD_ACC(); <- not needed here since it would be unreachable.
}
void BaselineJIT::generate_GetException() { as->getException(); }
@@ -547,9 +549,11 @@
void BaselineJIT::generate_CreateCallContext()
{
+ STORE_ACC();
as->prepareCallWithArgCount(1);
as->passCppFrameAsArg(0);
BASELINEJIT_GENERATE_RUNTIME_CALL(PushCallContext, CallResultDestination::Ignore);
+ LOAD_ACC();
}
void BaselineJIT::generate_PushCatchContext(int index, int name) { as->pushCatchContext(index, name); }
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/jsruntime/qv4arrayiterator.cpp
^
|
@@ -86,18 +86,18 @@
return IteratorPrototype::createIterResultObject(scope.engine, Value::fromInt32(index), false);
}
- ReturnedValue elementValue = a->get(index);
+ QV4::ScopedValue elementValue(scope, a->get(index));
CHECK_EXCEPTION();
if (itemKind == ValueIteratorKind) {
- return IteratorPrototype::createIterResultObject(scope.engine, Value::fromReturnedValue(elementValue), false);
+ return IteratorPrototype::createIterResultObject(scope.engine, elementValue, false);
} else {
Q_ASSERT(itemKind == KeyValueIteratorKind);
ScopedArrayObject resultArray(scope, scope.engine->newArrayObject());
resultArray->arrayReserve(2);
resultArray->arrayPut(0, Value::fromInt32(index));
- resultArray->arrayPut(1, Value::fromReturnedValue(elementValue));
+ resultArray->arrayPut(1, elementValue);
resultArray->setArrayLengthUnchecked(2);
return IteratorPrototype::createIterResultObject(scope.engine, resultArray, false);
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/jsruntime/qv4promiseobject.cpp
^
|
@@ -116,6 +116,8 @@
} // namespace QV4
QT_END_NAMESPACE
+#include "moc_qv4promiseobject_p.cpp"
+
ReactionHandler::ReactionHandler(QObject *parent)
: QObject(parent)
{}
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/qml/ftw/qrecyclepool_p.h
^
|
@@ -130,8 +130,7 @@
T *QRecyclePool<T, Step>::New()
{
T *rv = d->allocate();
- new (rv) T;
- return rv;
+ return new (rv) T;
}
template<typename T, int Step>
@@ -139,8 +138,7 @@
T *QRecyclePool<T, Step>::New(const T1 &a)
{
T *rv = d->allocate();
- new (rv) T(a);
- return rv;
+ return new (rv) T(a);
}
template<typename T, int Step>
@@ -148,8 +146,7 @@
T *QRecyclePool<T, Step>::New(T1 &a)
{
T *rv = d->allocate();
- new (rv) T(a);
- return rv;
+ return new (rv) T(a);
}
template<typename T, int Step>
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/qml/qqmlcomponent.cpp
^
|
@@ -1775,3 +1775,4 @@
QT_END_NAMESPACE
#include "moc_qqmlcomponent.cpp"
+#include "moc_qqmlcomponentattached_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/qml/qqmlcomponentattached_p.h
^
|
@@ -58,6 +58,7 @@
QT_BEGIN_NAMESPACE
+// implemented in qqmlcomponent.cpp
class Q_QML_PRIVATE_EXPORT QQmlComponentAttached : public QObject
{
Q_OBJECT
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/qml/qqmlengine.cpp
^
|
@@ -2671,4 +2671,6 @@
QT_END_NAMESPACE
+#include "moc_qqmlengine_p.cpp"
+
#include "moc_qqmlengine.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/qml/qqmltypeloadernetworkreplyproxy.cpp
^
|
@@ -72,3 +72,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmltypeloadernetworkreplyproxy_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qml/util/qqmlpropertymap.cpp
^
|
@@ -370,3 +370,5 @@
*/
QT_END_NAMESPACE
+
+#include "moc_qqmlpropertymap.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmldebug/qmldebug.pro
^
|
@@ -16,6 +16,7 @@
qqmlprofilerclient.cpp \
qqmlprofilerevent.cpp \
qqmlprofilereventlocation.cpp \
+ qqmlprofilereventreceiver.cpp \
qqmlprofilereventtype.cpp \
qqmlprofilertypedevent.cpp \
qv4debugclient.cpp
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmldebug/qqmldebugclient.cpp
^
|
@@ -123,3 +123,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmldebugclient_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmldebug/qqmldebugmessageclient.cpp
^
|
@@ -88,3 +88,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmldebugmessageclient_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmldebug/qqmldebugtranslationclient.cpp
^
|
@@ -74,3 +74,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmldebugtranslationclient_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmldebug/qqmlenginedebugclient.cpp
^
|
@@ -566,3 +566,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmlenginedebugclient_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmldebug/qqmlinspectorclient.cpp
^
|
@@ -148,3 +148,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmlinspectorclient_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmldebug/qqmlpreviewclient.cpp
^
|
@@ -137,3 +137,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmlpreviewclient_p.cpp"
|
[-]
[+]
|
Added |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmldebug/qqmlprofilereventreceiver.cpp
^
|
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qqmlprofilereventreceiver_p.h"
+
+QT_BEGIN_NAMESPACE
+
+QQmlProfilerEventReceiver::~QQmlProfilerEventReceiver()
+ = default;
+
+QT_END_NAMESPACE
+
+#include "moc_qqmlprofilereventreceiver_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmldebug/qqmlprofilereventreceiver_p.h
^
|
@@ -62,7 +62,8 @@
{
Q_OBJECT
public:
- QQmlProfilerEventReceiver(QObject *parent = nullptr) : QObject(parent) {}
+ explicit QQmlProfilerEventReceiver(QObject *parent = nullptr) : QObject(parent) {}
+ ~QQmlProfilerEventReceiver() override;
virtual int numLoadedEventTypes() const = 0;
virtual void addEventType(const QQmlProfilerEventType &type) = 0;
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmldebug/qv4debugclient.cpp
^
|
@@ -576,3 +576,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qv4debugclient_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmlmodels/qqmlabstractdelegatecomponent.cpp
^
|
@@ -59,3 +59,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qqmlabstractdelegatecomponent_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmlmodels/qqmldelegatemodel.cpp
^
|
@@ -3976,4 +3976,6 @@
QT_END_NAMESPACE
+#include "moc_qqmldelegatemodel_p_p.cpp"
+
#include "moc_qqmldelegatemodel_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmlmodels/qqmllistmodel.cpp
^
|
@@ -2942,4 +2942,6 @@
QT_END_NAMESPACE
+#include "moc_qqmllistmodel_p_p.cpp"
+
#include "moc_qqmllistmodel_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/qmltest/quicktest.cpp
^
|
@@ -650,3 +650,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_quicktest_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/accessible/qaccessiblequickitem.cpp
^
|
@@ -230,7 +230,7 @@
QAccessible::Role role = QAccessible::NoRole;
if (item())
- role = QQuickItemPrivate::get(item())->accessibleRole();
+ role = QQuickItemPrivate::get(item())->effectiveAccessibleRole();
if (role == QAccessible::NoRole) {
if (qobject_cast<QQuickText*>(const_cast<QQuickItem *>(item())))
role = QAccessible::StaticText;
|
[-]
[+]
|
Added |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/doc/snippets/pointerHandlers/hoverModifiers.qml
^
|
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2022 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import QtQuick
+
+Rectangle {
+ width: 150; height: 50; radius: 3
+ color: control.hovered ? "goldenrod" : shift.hovered ? "wheat" : "beige"
+
+ HoverHandler {
+ id: control
+ acceptedModifiers: Qt.ControlModifier
+ cursorShape: Qt.PointingHandCursor
+ }
+
+ HoverHandler {
+ id: shift
+ acceptedModifiers: Qt.ShiftModifier
+ cursorShape: Qt.CrossCursor
+ }
+}
+//![0]
|
[-]
[+]
|
Added |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/doc/snippets/pointerHandlers/hoverMouseOrStylus.qml
^
|
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2022 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import QtQuick
+
+Rectangle {
+ width: 150; height: 50; radius: 3
+ color: mouse.hovered ? "goldenrod" : stylus.hovered ? "tomato" : "wheat"
+
+ HoverHandler {
+ id: stylus
+ acceptedDevices: PointerDevice.Stylus
+ cursorShape: Qt.CrossCursor
+ }
+
+ HoverHandler {
+ id: mouse
+ acceptedDevices: PointerDevice.Mouse
+ cursorShape: Qt.PointingHandCursor
+ }
+}
+//![0]
|
[-]
[+]
|
Added |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/doc/snippets/pointerHandlers/hoverStylusOrEraser.qml
^
|
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2022 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import QtQuick
+
+Rectangle {
+ id: rect
+ width: 150; height: 150
+
+ HoverHandler {
+ id: stylus
+ acceptedPointerTypes: PointerDevice.Pen
+ cursorShape: Qt.CrossCursor
+ }
+
+ HoverHandler {
+ id: eraser
+ acceptedPointerTypes: PointerDevice.Eraser
+ cursorShape: Qt.BlankCursor
+ target: Image {
+ parent: rect
+ source: "images/cursor-eraser.png"
+ visible: eraser.hovered
+ x: eraser.point.position.x
+ y: eraser.point.position.y - 32
+ }
+ }
+}
+//![0]
|
|
Added |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/doc/snippets/pointerHandlers/images/cursor-eraser.png
^
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquickdragaxis.cpp
^
|
@@ -76,3 +76,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qquickdragaxis_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquickdraghandler.cpp
^
|
@@ -343,3 +343,5 @@
*/
QT_END_NAMESPACE
+
+#include "moc_qquickdraghandler_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquickhandlerpoint.cpp
^
|
@@ -348,3 +348,5 @@
*/
QT_END_NAMESPACE
+
+#include "moc_qquickhandlerpoint_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquickhoverhandler.cpp
^
|
@@ -154,6 +154,98 @@
}
/*!
+ \internal
+ \qmlproperty flags QtQuick::HoverHandler::acceptedButtons
+
+ This property is not used in HoverHandler.
+*/
+
+/*!
+ \qmlproperty flags QtQuick::HoverHandler::acceptedDevices
+
+ The types of pointing devices that can activate the pointer handler.
+
+ By default, this property is set to
+ \l{QInputDevice::DeviceType}{PointerDevice.AllDevices}.
+ If you set it to an OR combination of device types, it will ignore pointer
+ events from the non-matching devices.
+
+ For example, an item could be made to respond to mouse hover in one way,
+ and stylus hover in another way, with two handlers:
+
+ \snippet pointerHandlers/hoverMouseOrStylus.qml 0
+
+ The available device types are as follows:
+
+ \value PointerDevice.Mouse A mouse.
+ \value PointerDevice.TouchScreen A touchscreen.
+ \value PointerDevice.TouchPad A touchpad or trackpad.
+ \value PointerDevice.Stylus A stylus on a graphics tablet.
+ \value PointerDevice.Airbrush An airbrush on a graphics tablet.
+ \value PointerDevice.Puck A digitizer with crosshairs, on a graphics tablet.
+ \value PointerDevice.AllDevices Any type of pointing device.
+
+ \sa QInputDevice::DeviceType
+*/
+
+/*!
+ \qmlproperty flags QtQuick::HoverHandler::acceptedPointerTypes
+
+ The types of pointing instruments (generic, stylus, eraser, and so on)
+ that can activate the pointer handler.
+
+ By default, this property is set to
+ \l {QPointingDevice::PointerType} {PointerDevice.AllPointerTypes}.
+ If you set it to an OR combination of device types, it will ignore events
+ from non-matching events.
+
+ For example, you could provide feedback by changing the cursor depending on
+ whether a stylus or eraser is hovering over a graphics tablet:
+
+ \snippet pointerHandlers/hoverStylusOrEraser.qml 0
+
+ The available pointer types are as follows:
+
+ \value PointerDevice.Generic A mouse or a device that emulates a mouse.
+ \value PointerDevice.Finger A finger on a touchscreen (hover detection is unlikely).
+ \value PointerDevice.Pen A stylus on a graphics tablet.
+ \value PointerDevice.Eraser An eraser on a graphics tablet.
+ \value PointerDevice.Cursor A digitizer with crosshairs, on a graphics tablet.
+ \value PointerDevice.AllPointerTypes Any type of pointing device.
+
+ \sa QPointingDevice::PointerType
+*/
+
+/*!
+ \qmlproperty flags QtQuick::HoverHandler::acceptedModifiers
+
+ If this property is set, a hover event is handled only if the given keyboard
+ modifiers are pressed. The event is ignored without the modifiers.
+
+ This property is set to \c Qt.KeyboardModifierMask by default, resulting
+ in handling hover events regardless of any modifier keys.
+
+ For example, an \l[QML]{Item} could have two handlers of the same type, one
+ of which is enabled only if the required keyboard modifiers are pressed:
+
+ \snippet pointerHandlers/hoverModifiers.qml 0
+
+ The available modifiers are as follows:
+
+ \value Qt.NoModifier No modifier key is allowed.
+ \value Qt.ShiftModifier A Shift key on the keyboard must be pressed.
+ \value Qt.ControlModifier A Ctrl key on the keyboard must be pressed.
+ \value Qt.AltModifier An Alt key on the keyboard must be pressed.
+ \value Qt.MetaModifier A Meta key on the keyboard must be pressed.
+ \value Qt.KeypadModifier A keypad button must be pressed.
+ \value Qt.GroupSwitchModifier A Mode_switch key on the keyboard must be pressed.
+ X11 only (unless activated on Windows by a command line argument).
+ \value Qt.KeyboardModifierMask The handler ignores modifier keys.
+
+ \sa Qt::KeyboardModifier
+*/
+
+/*!
\since 5.15
\qmlproperty Qt::CursorShape QtQuick::HoverHandler::cursorShape
This property holds the cursor shape that will appear whenever
@@ -202,3 +294,5 @@
*/
QT_END_NAMESPACE
+
+#include "moc_qquickhoverhandler_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquickmultipointhandler.cpp
^
|
@@ -436,3 +436,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qquickmultipointhandler_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquickpinchhandler.cpp
^
|
@@ -546,3 +546,5 @@
*/
QT_END_NAMESPACE
+
+#include "moc_qquickpinchhandler_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquickpointerdevicehandler.cpp
^
|
@@ -314,3 +314,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qquickpointerdevicehandler_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquickpointerhandler.cpp
^
|
@@ -742,3 +742,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qquickpointerhandler_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquickpointhandler.cpp
^
|
@@ -163,3 +163,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qquickpointhandler_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquicksinglepointhandler.cpp
^
|
@@ -218,3 +218,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qquicksinglepointhandler_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquicktaphandler.cpp
^
|
@@ -431,3 +431,5 @@
from the previous \c tapCount.
*/
QT_END_NAMESPACE
+
+#include "moc_qquicktaphandler_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/handlers/qquickwheelhandler.cpp
^
|
@@ -527,3 +527,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qquickwheelhandler_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickevents.cpp
^
|
@@ -2274,3 +2274,5 @@
#endif
QT_END_NAMESPACE
+
+#include "moc_qquickevents_p_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickflickable.cpp
^
|
@@ -2937,4 +2937,6 @@
QT_END_NAMESPACE
+#include "moc_qquickflickable_p_p.cpp"
+
#include "moc_qquickflickable_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickimage.cpp
^
|
@@ -945,3 +945,7 @@
*/
QT_END_NAMESPACE
+
+#include "moc_qquickimage_p_p.cpp"
+
+#include "moc_qquickimage_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickitem.cpp
^
|
@@ -2400,7 +2400,7 @@
return true;
#if QT_CONFIG(accessibility)
- QAccessible::Role role = QQuickItemPrivate::get(item)->accessibleRole();
+ QAccessible::Role role = QQuickItemPrivate::get(item)->effectiveAccessibleRole();
if (role == QAccessible::EditableText || role == QAccessible::Table || role == QAccessible::List) {
return true;
} else if (role == QAccessible::ComboBox || role == QAccessible::SpinBox) {
@@ -9000,13 +9000,20 @@
#if QT_CONFIG(accessibility)
-QAccessible::Role QQuickItemPrivate::accessibleRole() const
+QAccessible::Role QQuickItemPrivate::effectiveAccessibleRole() const
{
Q_Q(const QQuickItem);
- QQuickAccessibleAttached *accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, false));
- if (accessibleAttached)
- return accessibleAttached->role();
+ auto *attached = qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, false);
+ auto role = QAccessible::NoRole;
+ if (auto *accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(attached))
+ role = accessibleAttached->role();
+ if (role == QAccessible::NoRole)
+ role = accessibleRole();
+ return role;
+}
+QAccessible::Role QQuickItemPrivate::accessibleRole() const
+{
return QAccessible::NoRole;
}
#endif
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickitem_p.h
^
|
@@ -575,7 +575,10 @@
virtual void implicitHeightChanged();
#if QT_CONFIG(accessibility)
+ QAccessible::Role effectiveAccessibleRole() const;
+private:
virtual QAccessible::Role accessibleRole() const;
+public:
#endif
void setImplicitAntialiasing(bool antialiasing);
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickitemsmodule.cpp
^
|
@@ -128,6 +128,8 @@
Q_DECLARE_LOGGING_CATEGORY(lcTransient)
QT_END_NAMESPACE
+#include "moc_qquickitemsmodule_p.cpp"
+
static QQmlPrivate::AutoParentResult qquickitem_autoParent(QObject *obj, QObject *parent)
{
// When setting a parent (especially during dynamic object creation) in QML,
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickloader.cpp
^
|
@@ -439,9 +439,8 @@
}
if (isComponentComplete()) {
- QQmlComponent::CompilationMode mode = d->asynchronous ? QQmlComponent::Asynchronous : QQmlComponent::PreferSynchronous;
if (!d->component)
- d->component.setObject(new QQmlComponent(qmlEngine(this), d->source, mode, this), this);
+ d->createComponent();
d->load();
}
}
@@ -806,11 +805,8 @@
Q_D(QQuickLoader);
QQuickItem::componentComplete();
if (active()) {
- if (d->loadingFromSource) {
- QQmlComponent::CompilationMode mode = d->asynchronous ? QQmlComponent::Asynchronous : QQmlComponent::PreferSynchronous;
- if (!d->component)
- d->component.setObject(new QQmlComponent(qmlEngine(this), d->source, mode, this), this);
- }
+ if (d->loadingFromSource && !d->component)
+ d->createComponent();
d->load();
}
}
@@ -1044,6 +1040,22 @@
}
}
+void QQuickLoaderPrivate::createComponent()
+{
+ Q_Q(QQuickLoader);
+ const QQmlComponent::CompilationMode mode = asynchronous
+ ? QQmlComponent::Asynchronous
+ : QQmlComponent::PreferSynchronous;
+ if (QQmlContext *context = qmlContext(q)) {
+ if (QQmlEngine *engine = context->engine()) {
+ component.setObject(new QQmlComponent(engine, source, mode, q), q);
+ return;
+ }
+ }
+
+ qmlWarning(q) << "createComponent: Cannot find a QML engine.";
+}
+
#include <moc_qquickloader_p.cpp>
QT_END_NAMESPACE
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickloader_p_p.h
^
|
@@ -98,6 +98,7 @@
QV4::ReturnedValue extractInitialPropertyValues(QQmlV4Function *args, QObject *loader, bool *error);
QQuickLoader::Status computeStatus() const;
void updateStatus();
+ void createComponent();
qreal getImplicitWidth() const override;
qreal getImplicitHeight() const override;
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickmousearea.cpp
^
|
@@ -825,7 +825,8 @@
emit this->doubleClicked(&me);
if (!me.isAccepted())
d->propagate(&me, QQuickMouseAreaPrivate::DoubleClick);
- d->doubleClick = d->isDoubleClickConnected() || me.isAccepted();
+ if (d->pressed)
+ d->doubleClick = d->isDoubleClickConnected() || me.isAccepted();
}
QQuickItem::mouseDoubleClickEvent(event);
}
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickmultipointtoucharea.cpp
^
|
@@ -685,7 +685,7 @@
emit released(_releasedTouchPoints);
if (moved)
emit updated(_movedTouchPoints);
- if (started)
+ if (started && !_pressedTouchPoints.isEmpty())
emit pressed(_pressedTouchPoints);
if (ended || moved || started) emit touchUpdated(_touchPoints.values());
}
@@ -730,12 +730,15 @@
void QQuickMultiPointTouchArea::addTouchPoint(const QMouseEvent *e)
{
QQuickTouchPoint *dtp = nullptr;
- for (QQuickTouchPoint *tp : qAsConst(_touchPrototypes))
+ for (QQuickTouchPoint *tp : qAsConst(_touchPrototypes)) {
if (!tp->inUse()) {
tp->setInUse(true);
dtp = tp;
break;
+ } else if (_mouseTouchPoint == tp) {
+ return; // do not allow more than one touchpoint to react to the mouse (QTBUG-83662)
}
+ }
if (dtp == nullptr)
dtp = new QQuickTouchPoint(false);
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickpincharea.cpp
^
|
@@ -710,6 +710,8 @@
clearPinch();
break;
case Qt::ZoomNativeGesture: {
+ if (d->pinchRejected)
+ break;
qreal scale = d->pinchLastScale * (1.0 + gesture->value());
QQuickPinchEvent pe(d->pinchStartCenter, scale, d->pinchLastAngle, 0.0);
pe.setStartCenter(d->pinchStartCenter);
@@ -727,7 +729,10 @@
else
emit pinchStarted(&pe);
d->inPinch = true;
- updatePinchTarget();
+ if (pe.accepted())
+ updatePinchTarget();
+ else
+ d->pinchRejected = true;
} break;
case Qt::SmartZoomNativeGesture: {
if (gesture->value() > 0.0 && d->pinch && d->pinch->target()) {
@@ -751,6 +756,8 @@
emit smartZoom(&pe);
} break;
case Qt::RotateNativeGesture: {
+ if (d->pinchRejected)
+ break;
qreal angle = d->pinchLastAngle + gesture->value();
QQuickPinchEvent pe(d->pinchStartCenter, d->pinchLastScale, angle, 0.0);
pe.setStartCenter(d->pinchStartCenter);
@@ -769,7 +776,10 @@
emit pinchStarted(&pe);
d->inPinch = true;
d->pinchRotation = angle;
- updatePinchTarget();
+ if (pe.accepted())
+ updatePinchTarget();
+ else
+ d->pinchRejected = true;
} break;
default:
return QQuickItem::event(event);
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquickscalegrid.cpp
^
|
@@ -217,3 +217,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qquickscalegrid_p_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquicktableview.cpp
^
|
@@ -3096,3 +3096,5 @@
#include "moc_qquicktableview_p.cpp"
QT_END_NAMESPACE
+
+#include "moc_qquicktableview_p_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquicktext.cpp
^
|
@@ -965,7 +965,7 @@
const qreal availWidth = availableWidth();
const qreal availHeight = availableHeight();
- lineWidth = q->widthValid() && availWidth > 0 ? availWidth : naturalWidth;
+ lineWidth = q->widthValid() && q->width() > 0 ? availWidth : naturalWidth;
maxHeight = q->heightValid() ? availHeight : FLT_MAX;
// If the width of the item has changed and it's possible the result of wrapping,
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquicktextedit.cpp
^
|
@@ -1204,7 +1204,15 @@
/*!
\qmlproperty int QtQuick::TextEdit::cursorPosition
- The position of the cursor in the TextEdit.
+ The position of the cursor in the TextEdit. The cursor is positioned between
+ characters.
+
+ \note The \e characters in this case refer to the string of \l QChar objects,
+ therefore 16-bit Unicode characters, and the position is considered an index
+ into this string. This does not necessarily correspond to individual graphemes
+ in the writing system, as a single grapheme may be represented by multiple
+ Unicode characters, such as in the case of surrogate pairs, linguistic
+ ligatures or diacritics.
*/
int QQuickTextEdit::cursorPosition() const
{
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/items/qquicktextinput.cpp
^
|
@@ -831,7 +831,20 @@
/*!
\qmlproperty int QtQuick::TextInput::cursorPosition
- The position of the cursor in the TextInput.
+ The position of the cursor in the TextInput. The cursor is positioned between
+ characters.
+
+ \note The \e characters in this case refer to the string of \l QChar objects,
+ therefore 16-bit Unicode characters, and the position is considered an index
+ into this string. This does not necessarily correspond to individual graphemes
+ in the writing system, as a single grapheme may be represented by multiple
+ Unicode characters, such as in the case of surrogate pairs, linguistic
+ ligatures or diacritics.
+
+ \l displayText is different if echoMode is set to \l TextInput.Password: then
+ each passwordMaskCharacter is a "narrow" character
+ (the cursorPosition always moves by 1), even if the text in the TextInput is not.
+
*/
int QQuickTextInput::cursorPosition() const
{
@@ -1152,6 +1165,7 @@
/*!
\qmlproperty bool QtQuick::TextInput::acceptableInput
+ \readonly
This property is always true unless a validator or input mask has been set.
If a validator or input mask has been set, this property will only be true
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/scenegraph/compressedtexture/qsgcompressedatlastexture.cpp
^
|
@@ -180,3 +180,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qsgcompressedatlastexture_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp
^
|
@@ -382,3 +382,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qsgcompressedtexture_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
^
|
@@ -4024,6 +4024,7 @@
if (m_useDepthBuffer) {
glClearDepthf(1); // calls glClearDepth() under the hood for desktop OpenGL
+ glDepthMask(true);
}
glColorMask(true, true, true, true);
glDisable(GL_SCISSOR_TEST);
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/scenegraph/coreapi/qsgmaterialrhishader.cpp
^
|
@@ -105,7 +105,7 @@
ubufBinding = -1;
ubufSize = 0;
ubufStages = { };
- memset(combinedImageSamplerBindings, 0, sizeof(combinedImageSamplerBindings));
+ memset(static_cast<void *>(combinedImageSamplerBindings), 0, sizeof(combinedImageSamplerBindings));
vertexShader = fragmentShader = nullptr;
masterUniformData.clear();
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/scenegraph/qsgrhishadereffectnode.cpp
^
|
@@ -572,10 +572,10 @@
QSGRhiShaderEffectNode::QSGRhiShaderEffectNode(QSGDefaultRenderContext *rc, QSGRhiGuiThreadShaderEffectManager *mgr)
: QSGShaderEffectNode(mgr),
- m_rc(rc),
m_mgr(mgr),
m_material(this)
{
+ Q_UNUSED(rc);
setFlag(UsePreprocess, true);
setMaterial(&m_material);
}
@@ -884,3 +884,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qsgrhishadereffectnode_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/scenegraph/qsgrhishadereffectnode_p.h
^
|
@@ -139,7 +139,6 @@
void handleTextureProviderDestroyed(QObject *object);
private:
- QSGDefaultRenderContext *m_rc;
QSGRhiGuiThreadShaderEffectManager *m_mgr;
QSGRhiShaderEffectMaterial m_material;
};
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/scenegraph/util/qsgplaintexture.cpp
^
|
@@ -466,3 +466,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qsgplaintexture_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/util/qquicksmoothedanimation.cpp
^
|
@@ -569,4 +569,6 @@
QT_END_NAMESPACE
+#include "moc_qquicksmoothedanimation_p_p.cpp"
+
#include "moc_qquicksmoothedanimation_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quick/util/qquicktimeline.cpp
^
|
@@ -957,3 +957,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qquicktimeline_p_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/src/quickshapes/qquickshapegenericrenderer.cpp
^
|
@@ -1280,3 +1280,5 @@
}
QT_END_NAMESPACE
+
+#include "moc_qquickshapegenericrenderer_p.cpp"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/qml/qjsengine/tst_qjsengine.cpp
^
|
@@ -268,6 +268,7 @@
void dataViewCtor();
void uiLanguage();
+ void forOfAndGc();
public:
Q_INVOKABLE QJSValue throwingCppMethod1();
@@ -5250,6 +5251,77 @@
}
}
+void tst_QJSEngine::forOfAndGc()
+{
+ // We want to guard against the iterator of a for..of loop leaving the result unprotected from
+ // garbage collection. It should be possible to construct a pure JS test case, but due to the
+ // vaguaries of garbage collection it's hard to reliably trigger the crash. This test is the
+ // best I could come up with.
+
+ QQmlEngine engine;
+ QQmlComponent c(&engine);
+ c.setData(R"(
+ import QtQml 2.15
+ import QtQml.Models 2.15
+
+ QtObject {
+ id: counter
+ property int count: 0
+
+ property DelegateModel model: DelegateModel {
+ id: filesModel
+
+ model: ListModel {
+ Component.onCompleted: {
+ for (let idx = 0; idx < 50; idx++)
+ append({"i" : idx})
+ }
+ }
+
+ groups: [
+ DelegateModelGroup {
+ name: "selected"
+ }
+ ]
+
+ function getSelected() {
+ for (let i = 0; i < items.count; ++i) {
+ var item = items.get(i)
+ for (let el of item.groups) {
+ if (el === "selected")
+ ++counter.count
+ }
+ }
+ }
+
+ property bool bSelect: true
+ function selectAll() {
+ for (let i = 0; i < items.count; ++i) {
+ if (bSelect && !items.get(i).inSelected)
+ items.addGroups(i, 1, ["selected"])
+ else
+ items.removeGroups(i, 1, ["selected"])
+ getSelected()
+ }
+ bSelect = !bSelect
+ }
+ }
+
+ property Timer timer: Timer {
+ running: true
+ interval: 1
+ repeat: true
+ onTriggered: filesModel.selectAll()
+ }
+ }
+ )", QUrl());
+
+ QVERIFY2(c.isReady(), qPrintable(c.errorString()));
+ QScopedPointer<QObject> o(c.create());
+
+ QTRY_VERIFY(o->property("count").toInt() > 32768);
+}
+
QTEST_MAIN(tst_QJSEngine)
#include "tst_qjsengine.moc"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
^
|
@@ -241,6 +241,7 @@
void topLevelGeneratorFunction();
void generatorCrashNewProperty();
void generatorCallsGC();
+ void noYieldInInnerFunction();
void qtbug_10696();
void qtbug_11606();
void qtbug_11600();
@@ -6516,6 +6517,19 @@
QVERIFY2(o != nullptr, qPrintable(component.errorString()));
}
+void tst_qqmlecmascript::noYieldInInnerFunction()
+{
+ QJSEngine engine;
+ const QString program = R"(
+ function *a() {
+ (function() { yield 1; })();
+ };
+ )";
+ auto result = engine.evaluate(program);
+ QVERIFY(result.isError());
+ QCOMPARE(result.errorType(), QJSValue::SyntaxError);
+}
+
// Test the "Qt.include" method
void tst_qqmlecmascript::include()
{
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/qml/qqmllistcompositor/tst_qqmllistcompositor.cpp
^
|
@@ -89,15 +89,13 @@
static const C::Group Visible = C::Group(2);
static const C::Group Selection = C::Group(3);
+constexpr auto VisibleFlag = C::Flag(0x04);
+constexpr auto SelectionFlag = C::Flag(0x08);
+
class tst_qqmllistcompositor : public QObject
{
Q_OBJECT
- enum {
- VisibleFlag = 0x04,
- SelectionFlag = 0x08
- };
-
void populateChange(
C::Change &change, int sIndex, int vIndex, int dIndex, int cIndex, int count, int flags, int moveId)
{
|
[-]
[+]
|
Added |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/quick/qquickloader/data/noEngine.qml
^
|
@@ -0,0 +1,32 @@
+import QtQuick 2
+
+Item {
+ id: root
+ property bool a: false
+ property int changes: 0
+ onAChanged: {
+ m.model = 0
+ m.model = 1
+ ++changes;
+ }
+
+ Repeater {
+ id: m
+ model: 1
+
+ Item {
+ Timer {
+ onTriggered: {
+ root.a = true
+ l.source = "loaded.qml"
+ }
+ interval: 0
+ running: true
+ }
+
+ Loader {
+ id: l
+ }
+ }
+ }
+}
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/quick/qquickloader/tst_qquickloader.cpp
^
|
@@ -133,6 +133,7 @@
void setSourceAndCheckStatus();
void asyncLoaderRace();
+ void noEngine();
};
Q_DECLARE_METATYPE(QList<QQmlError>)
@@ -1515,6 +1516,20 @@
QCOMPARE(loader->item(), nullptr);
}
+void tst_QQuickLoader::noEngine()
+{
+ QQmlEngine engine;
+ const QUrl url = testFileUrl("noEngine.qml");
+ QQmlComponent component(&engine, url);
+ QVERIFY2(component.isReady(), qPrintable(component.errorString()));
+ QScopedPointer<QObject> o(component.create());
+
+ const QString message = url.toString()
+ + QStringLiteral(":27:13: QML Loader: createComponent: Cannot find a QML engine.");
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(message));
+ QTRY_COMPARE(o->property("changes").toInt(), 1);
+}
+
QTEST_MAIN(tst_QQuickLoader)
#include "tst_qquickloader.moc"
|
[-]
[+]
|
Added |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/quick/qquickmousearea/data/doubleClickToHide.qml
^
|
@@ -0,0 +1,19 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+ property int clicked: 0
+ property int doubleClicked: 0
+ property int released: 0
+
+ MouseArea {
+ width: 200; height: 200
+ onClicked: { root.clicked++ }
+ onDoubleClicked: {
+ root.doubleClicked++
+ visible = false
+ }
+ onReleased: { root.released++ }
+ }
+}
+
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
^
|
@@ -161,6 +161,7 @@
void nestedEventDelivery();
void settingHiddenInPressUngrabs();
void containsMouseAndVisibility();
+ void doubleClickToHide();
private:
int startDragDistance() const {
@@ -2500,6 +2501,33 @@
QVERIFY(!mouseArea->hovered());
}
+// QTBUG-35995 and QTBUG-102158
+void tst_QQuickMouseArea::doubleClickToHide()
+{
+ QQuickView window;
+ QByteArray errorMessage;
+ QVERIFY2(QQuickTest::initView(window, testFileUrl("doubleClickToHide.qml"), true, &errorMessage), errorMessage.constData());
+ window.show();
+ window.requestActivate();
+ QVERIFY(QTest::qWaitForWindowExposed(&window));
+
+ QQuickMouseArea *mouseArea = window.rootObject()->findChild<QQuickMouseArea *>();
+ QVERIFY(mouseArea);
+
+ QTest::mouseDClick(&window, Qt::LeftButton, Qt::NoModifier, {10, 10});
+
+ QCOMPARE(window.rootObject()->property("clicked").toInt(), 1);
+ QCOMPARE(window.rootObject()->property("doubleClicked").toInt(), 1);
+ QCOMPARE(mouseArea->isVisible(), false);
+ QCOMPARE(mouseArea->pressed(), false);
+ QCOMPARE(mouseArea->pressedButtons(), Qt::NoButton);
+
+ mouseArea->setVisible(true);
+
+ QTest::mouseClick(&window, Qt::LeftButton, Qt::NoModifier, {10, 10});
+ QCOMPARE(window.rootObject()->property("clicked").toInt(), 2);
+}
+
QTEST_MAIN(tst_QQuickMouseArea)
#include "tst_qquickmousearea.moc"
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/quick/qquickmultipointtoucharea/BLACKLIST
^
|
@@ -1,6 +1,6 @@
[nonOverlapping]
# QTBUG-101499
-ubuntu-20
+ubuntu-20.04
ubuntu-16.04
ubuntu-18.04
opensuse-42.3
@@ -8,7 +8,7 @@
sles
[nested]
# QTBUG-101499
-ubuntu-20
+ubuntu-20.04
ubuntu-16.04
ubuntu-18.04
opensuse-42.3
|
[-]
[+]
|
Added |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/quick/qquickmultipointtoucharea/data/nestedPinchArea.qml
^
|
@@ -0,0 +1,44 @@
+import QtQuick 2.15
+
+MultiPointTouchArea {
+ width: 240
+ height: 320
+ mouseEnabled: true
+ property int pressedCount: 0
+ property int updatedCount: 0
+ property int releasedCount: 0
+
+ onPressed: (points) => { pressedCount = points.length }
+ onUpdated: (points) => { updatedCount = points.length }
+ onReleased: (points) => { releasedCount = points.length }
+
+ touchPoints: [
+ TouchPoint {
+ id: point1
+ objectName: "point1"
+ },
+ TouchPoint {
+ id: point2
+ objectName: "point2"
+ }
+ ]
+
+ PinchArea {
+ anchors.fill: parent
+ }
+
+ Rectangle {
+ width: 30; height: 30
+ color: "green"
+ x: point1.x
+ y: point1.y
+ }
+
+ Rectangle {
+ id: rectangle
+ width: 30; height: 30
+ color: "yellow"
+ x: point2.x
+ y: point2.y
+ }
+}
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp
^
|
@@ -77,6 +77,7 @@
void mouseGestureStarted();
void cancel();
void stationaryTouchWithChangingPressure();
+ void nestedPinchAreaMouse();
private:
QQuickView *createAndShowView(const QString &file);
@@ -1408,6 +1409,53 @@
QCOMPARE(point1->pressure(), 0);
}
+void tst_QQuickMultiPointTouchArea::nestedPinchAreaMouse()
+{
+ QScopedPointer<QQuickView> window(createAndShowView("nestedPinchArea.qml"));
+ QQuickMultiPointTouchArea *mpta = qobject_cast<QQuickMultiPointTouchArea *>(window->rootObject());
+ QVERIFY(mpta);
+
+ QQuickTouchPoint *point1 = mpta->findChild<QQuickTouchPoint*>("point1");
+ QCOMPARE(point1->pressed(), false);
+ QQuickTouchPoint *point2 = mpta->findChild<QQuickTouchPoint*>("point2");
+ QCOMPARE(point2->pressed(), false);
+ QSignalSpy pressedSpy(mpta, &QQuickMultiPointTouchArea::pressed);
+ QSignalSpy updatedSpy(mpta, &QQuickMultiPointTouchArea::updated);
+ QSignalSpy releasedSpy(mpta, &QQuickMultiPointTouchArea::released);
+
+ QPoint p1(20, 20);
+ QTest::mousePress(window.data(), Qt::LeftButton, Qt::NoModifier, p1);
+ QCOMPARE(point1->pressed(), true);
+ QCOMPARE(point2->pressed(), false);
+ QCOMPARE(pressedSpy.count(), 1);
+ QCOMPARE(mpta->property("pressedCount").toInt(), 1);
+ QCOMPARE(updatedSpy.count(), 0);
+ QCOMPARE(mpta->property("updatedCount").toInt(), 0);
+ QCOMPARE(releasedSpy.count(), 0);
+ QCOMPARE(mpta->property("releasedCount").toInt(), 0);
+
+ p1 += QPoint(0, 15);
+ QTest::mouseMove(window.data(), p1);
+ QCOMPARE(point1->pressed(), true);
+ QCOMPARE(point2->pressed(), false);
+ QCOMPARE(pressedSpy.count(), 1);
+ QCOMPARE(mpta->property("pressedCount").toInt(), 1);
+ QCOMPARE(updatedSpy.count(), 1);
+ QCOMPARE(mpta->property("updatedCount").toInt(), 1);
+ QCOMPARE(releasedSpy.count(), 0);
+ QCOMPARE(mpta->property("releasedCount").toInt(), 0);
+
+ QTest::mouseRelease(window.data(), Qt::LeftButton, Qt::NoModifier, p1);
+ QCOMPARE(point1->pressed(), false);
+ QCOMPARE(point2->pressed(), false);
+ QCOMPARE(pressedSpy.count(), 1);
+ QCOMPARE(mpta->property("pressedCount").toInt(), 1);
+ QCOMPARE(updatedSpy.count(), 1);
+ QCOMPARE(mpta->property("updatedCount").toInt(), 1);
+ QCOMPARE(releasedSpy.count(), 1);
+ QCOMPARE(mpta->property("releasedCount").toInt(), 1);
+}
+
QTEST_MAIN(tst_QQuickMultiPointTouchArea)
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/quick/qquicktext/data/fontSizeMode.qml
^
|
@@ -16,7 +16,7 @@
height: 35
minimumPointSize: 8
minimumPixelSize: 8
- font.pixelSize: 25
+ font.pixelSize: 23
font.family: "Helvetica"
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/quick/qquicktext/data/padding.qml
^
|
@@ -9,4 +9,30 @@
leftPadding: 30
rightPadding: 40
bottomPadding: 50
+
+ Rectangle {
+ width: parent.leftPadding
+ height: parent.height
+ color: "#6600FF00"
+ }
+
+ Rectangle {
+ width: parent.width
+ height: parent.topPadding
+ color: "#66888800"
+ }
+
+ Rectangle {
+ x: parent.width - parent.rightPadding
+ width: parent.rightPadding
+ height: parent.height
+ color: "#6600FFFF"
+ }
+
+ Rectangle {
+ y: parent.height - parent.bottomPadding
+ width: parent.width
+ height: parent.bottomPadding
+ color: "#66880088"
+ }
}
|
[-]
[+]
|
Added |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/quick/qquicktext/data/paddingInLoader.qml
^
|
@@ -0,0 +1,14 @@
+import QtQuick 2.12
+
+Item {
+ width: 30
+ height: 30
+ Loader {
+ anchors.fill: parent
+ sourceComponent: Text {
+ rightPadding: 30
+ text: "Some text"
+ elide: Text.ElideRight
+ }
+ }
+}
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tests/auto/quick/qquicktext/tst_qquicktext.cpp
^
|
@@ -55,6 +55,8 @@
extern void qt_setQtEnableTestFont(bool value);
QT_END_NAMESPACE
+Q_LOGGING_CATEGORY(lcTests, "qt.quick.tests")
+
class tst_qquicktext : public QQmlDataTest
{
Q_OBJECT
@@ -153,6 +155,7 @@
void growFromZeroWidth();
void padding();
+ void paddingInLoader();
void hintingPreference();
@@ -4342,6 +4345,20 @@
obj->setElideMode(QQuickText::ElideRight);
QCOMPARE(obj->implicitWidth(), cw + obj->leftPadding() + obj->rightPadding());
QCOMPARE(obj->implicitHeight(), ch + obj->topPadding() + obj->bottomPadding());
+
+ obj->setLeftPadding(0);
+ QCOMPARE(obj->implicitWidth(), cw + obj->leftPadding() + obj->rightPadding());
+
+ obj->setWidth(cw);
+ obj->setRightPadding(cw);
+ QCOMPARE(obj->contentWidth(), 0);
+
+ for (int incr = 1; incr < 50 && qFuzzyIsNull(obj->contentWidth()); ++incr)
+ obj->setWidth(cw + incr);
+ QVERIFY(obj->contentWidth() > 0);
+ qCDebug(lcTests) << "increasing Text width from" << cw << "to" << obj->width()
+ << "rendered a character: contentWidth now" << obj->contentWidth();
+
obj->setElideMode(QQuickText::ElideNone);
obj->resetWidth();
@@ -4386,6 +4403,34 @@
delete root;
}
+void tst_qquicktext::paddingInLoader() // QTBUG-83413
+{
+ QQuickView view(testFileUrl("paddingInLoader.qml"));
+ view.show();
+ view.requestActivate();
+ QVERIFY(QTest::qWaitForWindowExposed(&view));
+ QQuickText *qtext = view.rootObject()->findChild<QQuickText*>();
+ QVERIFY(qtext);
+ QQuickTextPrivate *textPrivate = QQuickTextPrivate::get(qtext);
+ QVERIFY(textPrivate);
+ QCOMPARE(qtext->contentWidth(), 0); // does not render text, because width == rightPadding
+ QCOMPARE(textPrivate->availableWidth(), 0);
+
+ qtext->setLeftPadding(qtext->width());
+ qtext->setRightPadding(0);
+ QCOMPARE(qtext->contentWidth(), 0); // does not render text, because width == leftPadding
+ QCOMPARE(textPrivate->availableWidth(), 0);
+
+ qtext->setRightPadding(qtext->width());
+ QCOMPARE(qtext->contentWidth(), 0); // does not render text: available space is negative
+ QCOMPARE(textPrivate->availableWidth(), -qtext->width());
+
+ qtext->setLeftPadding(2);
+ qtext->setRightPadding(2);
+ QVERIFY(qtext->contentWidth() > 0); // finally space is available to render text
+ QCOMPARE(textPrivate->availableWidth(), qtext->width() - 4);
+}
+
void tst_qquicktext::hintingPreference()
{
{
|
[-]
[+]
|
Changed |
_service:tar_git:opt-qt5-qtdeclarative-5.15.10+kde29.tar.bz2/upstream/tools/qml/main.cpp
^
|
@@ -446,8 +446,8 @@
QCommandLineParser parser;
parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions);
parser.setOptionsAfterPositionalArgumentsMode(QCommandLineParser::ParseAsPositionalArguments);
- const QCommandLineOption helpOption = parser.addHelpOption();
- const QCommandLineOption versionOption = parser.addVersionOption();
+ parser.addHelpOption();
+ parser.addVersionOption();
#ifdef QT_GUI_LIB
QCommandLineOption apptypeOption(QStringList() << QStringLiteral("a") << QStringLiteral("apptype"),
QCoreApplication::translate("main", "Select which application class to use. Default is gui."),
@@ -522,14 +522,7 @@
parser.addPositionalArgument("args",
QCoreApplication::translate("main", "Arguments after '--' are ignored, but passed through to the application.arguments variable in QML."), "[-- args...]");
- if (!parser.parse(QCoreApplication::arguments())) {
- qWarning() << parser.errorText();
- exit(1);
- }
- if (parser.isSet(versionOption))
- parser.showVersion();
- if (parser.isSet(helpOption))
- parser.showHelp();
+ parser.process(*app);
if (parser.isSet(listConfOption))
listConfFiles();
if (applicationType == QmlApplicationTypeUnknown) {
|
[-]
[+]
|
Deleted |
_service:tar_git:opt-qt5-qtdeclarative-5.15.9+kde24.tar.bz2/upstream/src/plugins/qmltooling/qmldbg_server/qqmldebugserver.cpp
^
|
@@ -1,767 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQml module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qqmldebugserverfactory.h"
-
-#include <private/qqmldebugserver_p.h>
-#include <private/qqmldebugserverconnection_p.h>
-#include <private/qqmldebugservice_p.h>
-#include <private/qjsengine_p.h>
-#include <private/qqmlglobal_p.h>
-#include <private/qqmldebugpluginmanager_p.h>
-#include <private/qqmldebugserviceinterfaces_p.h>
-#include <private/qpacketprotocol_p.h>
-#include <private/qversionedpacket_p.h>
-
-#include <QtCore/QAtomicInt>
-#include <QtCore/QDir>
-#include <QtCore/QPluginLoader>
-#include <QtCore/QStringList>
-#include <QtCore/QVector>
-#include <QtCore/qwaitcondition.h>
-
-QT_BEGIN_NAMESPACE
-
-/*
- QQmlDebug Protocol (Version 1):
-
- handshake:
- 1. Client sends
- "QDeclarativeDebugServer" 0 version pluginNames [QDataStream version]
- version: an int representing the highest protocol version the client knows
- pluginNames: plugins available on client side
- 2. Server sends
- "QDeclarativeDebugClient" 0 version pluginNames pluginVersions [QDataStream version]
- version: an int representing the highest protocol version the client & server know
- pluginNames: plugins available on server side. plugins both in the client and server message are enabled.
- client plugin advertisement
- 1. Client sends
- "QDeclarativeDebugServer" 1 pluginNames
- server plugin advertisement (not implemented: all services are required to register before open())
- 1. Server sends
- "QDeclarativeDebugClient" 1 pluginNames pluginVersions
- plugin communication:
- Everything send with a header different to "QDeclarativeDebugServer" is sent to the appropriate plugin.
- */
-
-Q_QML_DEBUG_PLUGIN_LOADER(QQmlDebugServerConnection)
-
-const int protocolVersion = 1;
-using QQmlDebugPacket = QVersionedPacket<QQmlDebugConnector>;
-
-class QQmlDebugServerImpl;
-class QQmlDebugServerThread : public QThread
-{
-public:
- QQmlDebugServerThread() : m_server(nullptr), m_portFrom(-1), m_portTo(-1) {}
-
- void setServer(QQmlDebugServerImpl *server)
- {
- m_server = server;
- }
-
- void setPortRange(int portFrom, int portTo, const QString &hostAddress)
- {
- m_pluginName = QLatin1String("QTcpServerConnection");
- m_portFrom = portFrom;
- m_portTo = portTo;
- m_hostAddress = hostAddress;
- }
-
- void setFileName(const QString &fileName)
- {
- m_pluginName = QLatin1String("QLocalClientConnection");
- m_fileName = fileName;
- }
-
- const QString &pluginName() const
- {
- return m_pluginName;
- }
-
- void run() override;
-
-private:
- QQmlDebugServerImpl *m_server;
- QString m_pluginName;
- int m_portFrom;
- int m_portTo;
- QString m_hostAddress;
- QString m_fileName;
-};
-
-class QQmlDebugServerImpl : public QQmlDebugServer
-{
- Q_OBJECT
-public:
- QQmlDebugServerImpl();
-
- bool blockingMode() const override;
-
- QQmlDebugService *service(const QString &name) const override;
-
- void addEngine(QJSEngine *engine) override;
- void removeEngine(QJSEngine *engine) override;
- bool hasEngine(QJSEngine *engine) const override;
-
- bool addService(const QString &name, QQmlDebugService *service) override;
- bool removeService(const QString &name) override;
-
- bool open(const QVariantHash &configuration) override;
- void setDevice(QIODevice *socket) override;
-
- void parseArguments();
-
- static void cleanup();
-
-private:
- friend class QQmlDebugServerThread;
- friend class QQmlDebugServerFactory;
-
- class EngineCondition {
- public:
- EngineCondition() : numServices(0), condition(new QWaitCondition) {}
-
- bool waitForServices(QMutex *locked, int numEngines);
- bool isWaiting() const { return numServices > 0; }
-
- void wake();
- private:
- int numServices;
-
- // shared pointer to allow for QHash-inflicted copying.
- QSharedPointer<QWaitCondition> condition;
- };
-
- bool canSendMessage(const QString &name);
- void doSendMessage(const QString &name, const QByteArray &message);
- void wakeEngine(QJSEngine *engine);
- void sendMessage(const QString &name, const QByteArray &message);
- void sendMessages(const QString &name, const QList<QByteArray> &messages);
- void changeServiceState(const QString &serviceName, QQmlDebugService::State state);
- void removeThread();
- void receiveMessage();
- void protocolError();
-
- QQmlDebugServerConnection *m_connection;
- QHash<QString, QQmlDebugService *> m_plugins;
- QStringList m_clientPlugins;
- bool m_gotHello;
- bool m_blockingMode;
-
- QHash<QJSEngine *, EngineCondition> m_engineConditions;
-
- mutable QMutex m_helloMutex;
- QWaitCondition m_helloCondition;
- QQmlDebugServerThread m_thread;
- QPacketProtocol *m_protocol;
- QAtomicInt m_changeServiceStateCalls;
-};
-
-void QQmlDebugServerImpl::cleanup()
-{
- QQmlDebugServerImpl *server = static_cast<QQmlDebugServerImpl *>(
|