aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/debugger/qqmldebugserviceinterfaces.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Tooling: Add an event replay debug serviceUlf Hermann2025-11-071-0/+3
| | | | | | | | | | | The event replay service can funnel input events recorded by the QML profiler service back into the program. This way we can re-create the exact behavior of a previous execution, including user input. Task-number: QTBUG-141569 Change-Id: I069cf546f6c62b3abb7637fb064ebb1b3158129f Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQmlDebugTranslationService: work around GCC bug std::variantThiago Macieira2025-10-271-0/+3
| | | | | | | | | | | | | | | | | | | Like std::optional, libstdc++'s std::variant may leave space outside of the active object uninitialized. Then GCC complains. Amends 4c6fb83b980aaca1e039e43ff0504e1ac0cd3aad, which attempted to workaround this bug by switching from std::monostate to std::nullptr_t. It didn't work. qqmldebugserviceinterfaces.cpp:54:21: error: ‘((QArrayDataPointer<char>*)((char*)&translation + offsetof(QQmlTranslation, QQmlTranslation::m_data.std::variant<std::nullptr_t, QQmlTranslation::QsTrData, QQmlTranslation::QsTrIdData>::<unnamed>.std::__detail::__variant::_Variant_base<std::nullptr_t, QQmlTranslation::QsTrData, QQmlTranslation::QsTrIdData>::<unnamed>.std::__detail::__variant::_Move_assign_base<false, std::nullptr_t, QQmlTranslation::QsTrData, QQmlTranslation::QsTrIdData>::<unnamed>.std::__detail::__variant::_Copy_assign_base<false, std::nullptr_t, QQmlTranslation::QsTrData, QQmlTranslation::QsTrIdData>::<unnamed>.std::__detail::__variant::_Move_ctor_base<false, std::nullptr_t, QQmlTranslation::QsTrData, QQmlTranslation::QsTrIdData>::<unnamed>.std::__detail::__variant::_Copy_ctor_base<false, std::nullptr_t, QQmlTranslation::QsTrData, QQmlTranslation::QsTrIdData>::<unnamed>.std::__detail::__variant::_Variant_storage<false, std::nullptr_t, QQmlTranslation::QsTrData, QQmlTranslation::QsTrIdData>::_M_u)))[2].QArrayDataPointer<char>::d’ may be used uninitialized [-Werror=maybe-uninitialized] This cannot be our bug. QQmlTranslation has a single, non-trivial member of type std::variant, so the variant is definitely initialized. If there's a bug, it's in libstdc++, so make the warning go away. Pick-to: 6.10 6.8 Change-Id: Id599211844d0350d7262fffd7315a20f9d367402 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QtQml: Make base CU a member of ExecutableCompilationUnitUlf Hermann2024-01-101-2/+2
| | | | | | | | | | | | We want to re-use the base compilation unit across engines. For that to work it cannot be a slice of the engine-specific ExecutableCompilationUnit. Since CompiledData::CompilationUnit is refcounted on its own now, make it unmovable. Change-Id: I8418c9754d7a07e5210c1e7a7fc69355e1d57807 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix compile time qsTranslate with empty contextUlf Hermann2023-10-241-5/+8
| | | | | | | | | | | | | | | | | An empty context is to be passed as-is. We shall not replace it with the file context context. Since the TranslationData struct has a field for the context, we need to invent a "no context" value we use for the methods that don't allow you to set a context (e.g. qsTr, qsTrId). We cannot use 0 because that is the empty string which is a valid context now. Amends commit 9cfc19faf5d1ce2b9626914ab4528998b072385d. Pick-to: 6.6 6.5 Fixes: QTBUG-118469 Change-Id: I160c512f42aba4a8ae2fc8860cdf4e50c53d9d3e Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Qml: Analyze qsTranslate at compile timeUlf Hermann2022-10-131-3/+6
| | | | | | | | | | We generate translation bindings for all the other translation functions already. We can just as well generate a translation binding for this one, too. Fixes: QTBUG-107536 Change-Id: I851f03c26510b6d450aa78f5d7a1f0142d3a81aa Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmltc: translation binding supportSami Shalayel2022-08-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Implement and test support for translation bindings in qmltc: * qsTr() * QT_TR_NOOP() * qsTrId() * QT_TRID_NOOP() Not compiled by qmltc, but instead interpreted as script bindings: * combinations like qsTr(qsTr()) * qsTranslate() (as in qmlsc) * QT_TRANSLATE_NOOP() (as in qmlsc) Add the *.qm files directly to the resources as qt_add_translations() is not available from qtdeclarative (the cmake function lives in qttools that depends on qtdeclarative). Fixes: QTBUG-104637 Task-Id: QTBUG-105346 Change-Id: Ia9433c2bcef01f3486358d963059d9779c67708c Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Create Translation Bindings without CompiledData::BindingSami Shalayel2022-08-151-0/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To add translation bindings to qmltc, the methods used to create translation bindings need to be adapted to work without QV4::CompiledData::Binding as it is not available from qmltc. Instead, information already available from the QQmlJSScope should be used, along with a newly introduced helper class QQmlTranslation. Details: Add a QQmlTranslation class that represents a call to qsTr, qsTrId etc that knows how to translate itself (without needing any ExecutableCompilationUnit or Binding). It encapsulates the information needed to create a translation binding. ExecutableCompilationUnit::bindingValueAsString refactored so its functionality can be used without Binding. Instead, it uses only the translationId, see ExecutableCompilationUnit::translateFromId and ExecutableCompilationUnit::translateFrom. Refactored QQmlTranslationBinding to work with QQmlTranslation instead of CompiledData::Binding. Same for QQmlCppBinding::createTranslationBindingForBindable, QQmlTranslationPropertyBinding::create and QQmlCppBinding::createTranslationBindingForNonBindable. Changed TranslationBindingInformation to work without CompiledData::Binding, and also removed static unused QString ProxyTranslator::originStringFromInformation( const TranslationBindingInformation &translationBindingInformation) as I could not find out what this origin string is. Same for the translation debugging in qmldb_preview. Added QmltcCodeGenerator::generate_createTranslationBindingOnProperty. Added #if to avoid compilation error for standalone DOM compilation due to the new QQmlTranslation class. Task-number: QTBUG-105345 Change-Id: Iccd94d5cba4eaf63901233451fec48051c855c2a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Use SPDX license identifiersLucie Gérard2022-06-111-38/+2
| | | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Files that have to be modified by hand are modified. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: I63563bbeb6f60f89d2c99660400dca7fab78a294 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* QQmlDebugService interfaces: de-inline dtorsMarc Mutz2022-05-101-0/+20
| | | | | | | | | | Destructors of polymorphic classes should be defined out-of-line, to pin the vtable and type_info to a single TU. Failure to do so may result in duplicated vtables and false-negtive dynamic_casts. Task-number: QTBUG-45582 Change-Id: Id7a1f17b5a50482c44fc7533e37014fa5fc60f0f Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Implement debugtranslationserviceTim Jenssen2021-04-261-1/+2
| | | | | | | | | | - moves the language feature from the preview service to an own debugtranslationservice - with the help of a proxytranslator the service gets all translate requests Change-Id: Ic26677bb1706abbea2db23e6aafe7a3f00648962 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Make the qtquick and qtqml plugins optionalUlf Hermann2020-07-021-0/+12
| | | | | | | | | We can do the initialization and de-initialization as constructor and destructor functions. Then we don't need to load the plugins. Task-number: QTBUG-84639 Change-Id: I2aeeee7e8d028555e3af91e93518c2c2afd70dbb Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlDebug: add new debugtranslationserviceTim Jenssen2020-02-051-0/+1
| | | | | | | | | | | | Users were asking for having the possibility to see where the translated text will not fit in the reserved/available space. This is more a preparation patch to get the right connectors to change the visualization of findings or maybe log this to a file. Task-number: QDS-1463 Change-Id: Ic0a7a930141d6eeb79964e51c0a165c69888cf5d Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Run includemocs in qtdeclarativeThiago Macieira2017-04-261-0/+2
| | | | | Change-Id: I84e363d735b443cb9beefffd14b8c023a37aa489 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Updated license headersJani Heikkinen2016-01-191-14/+20
| | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: Ic36f1a0a1436fe6ac6eeca8c2375a79857e9cb12 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.6' into origin/devUlf Hermann2015-10-221-0/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/qmltooling/qmldbg_debugger/qv4datacollector.cpp src/plugins/qmltooling/qmldbg_debugger/qv4debuggeragent.cpp src/plugins/qmltooling/qmldbg_debugger/qv4debuggeragent.h src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.h src/qml/debugger/qqmldebugserviceinterfaces.cpp src/qml/jsruntime/qv4debugging_p.h Change-Id: I82a4ce1bcd4579181df886558f55ad2b328d1682
| * QmlDebug: Add a debug service for use with native debuggershjk2015-10-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This service provides information about the state of the most recently used QmlEngine in a way that can be integrated with "native" debuggers (GDB, LLDB, potentially CDB). Unlike the existing QV4 debugger service, the data extraction is triggered by direct calls from the native debuggers, i.e. has the examined QmlEngine stopped at the time of inspection. Since roundtrips through the native debuggers are expensive, an additional goal is to minimize roundtrips. Change-Id: Ic420129bbc15162197e35b52d92e882c027c9f6d Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
* | Make keys of all debug services publicUlf Hermann2015-09-151-0/+2
|/ | | | | Change-Id: I4af1c351b92f35c11559f68fe9ab60063a665724 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Extract minimal abstract interfaces from debug services.Ulf Hermann2015-08-041-0/+43
We will access the services' functionality through those interfaces once they live in their own plugins. Change-Id: I0a0d7e73c07cb874b3b507cc4a9d304588c87bca Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>