Commit Graph

1280 Commits

Author SHA1 Message Date
Alessandro Portale
9dcd2cf40b Add target condition to targets depending on QmlProjectManagerLib
The lib is only built with Qt 6.4.3 and higher

Change-Id: I825bab26b90565d315fed4a3ad1a3e6adf726ac6
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Burak Hancerli <burak.hancerli@qt.io>
2023-05-23 14:21:18 +00:00
Tim Jenssen
1b6c0ff56c Merge remote-tracking branch 'origin/qds/dev'
Conflicts:
  coin/instructions/build.yaml
  doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc
  share/qtcreator/qmldesigner/studio_templates/projects/common/CMakeLists.main.txt.tpl
  src/libs/CMakeLists.txt
  src/libs/advanceddockingsystem/dockmanager.cpp
  src/libs/advanceddockingsystem/workspacedialog.cpp
  src/plugins/coreplugin/manhattanstyle.cpp
  src/plugins/qmldesigner/CMakeLists.txt
  src/plugins/qmldesigner/components/formeditor/toolbox.cpp
  src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimporter.cpp
  src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp
  src/plugins/qmldesigner/designercore/projectstorage/qmltypesparser.h
  src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp
  src/plugins/qmldesignerbase/qmldesignerbaseplugin.cpp
  src/plugins/qmldesignerbase/qmldesignerbaseplugin.h
  src/plugins/qmlprojectmanager/qmlproject.cpp
  src/tools/qml2puppet/CMakeLists.txt
  tests/unit/unittest/CMakeLists.txt

Change-Id: I2c5f18c4fca49471d02713ce5859032232cf7756
2023-05-22 21:13:40 +02:00
Marco Bubke
5eba056b73 QmlDesigner: Add callbacks for model resource management
As a node or property is removed there are now callbacks to generate
node, properties and expressions which should removed or adapt too.

Task-number: QDS-9766
Change-Id: I6d842006a6282af00ff644ffaa0f3102e14f13fa
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2023-05-22 15:19:55 +00:00
Marco Bubke
be824148be Sqlite: Improve transaction by inversion of control
Using a callable makes it possible to omit the commit call. It is now
called by the withDeferredTransaction and withImmediateTransaction
function.

Change-Id: I9b7bfa7e32f269fe8fcba2fe5e1218e73f5846d1
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
2023-05-22 10:07:40 +00:00
Burak Hancerli
057b4428d8 QmlDesigner: Refactor QmlProjectManager tests
Task-number: QDS-9743
Change-Id: Ia5e788fcebacef59ba12226e2c873f5cbf8954ba
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2023-05-16 08:17:40 +00:00
David Schulz
1acd2499e2 Utils: replace LineColumn with Text::Position
Change-Id: Ia69547374efec7412717cbed1eb4162162a89d39
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2023-05-11 17:00:28 +00:00
Marco Bubke
a6ba2354cc QmlDesigner: Cleanup the Qt conditions
We have now demand QmlPrivate, QmlDomPrivate and QmlCompilerPrivate.

Change-Id: I77fa5b506c827b9ba2f7ea18e3ffdd176c1871ec
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-05-11 09:12:13 +00:00
Marco Bubke
849b8cf000 QmlDesigner: Improve sqlite id
https://www.sqlite.org/autoinc.html says that "If no negative ROWID
values are inserted explicitly, then automatically generated ROWID
values will always be greater than zero."

So zero is an invalid value.

This changes reflect on it and makes it an invalid value too. Null is a
special value in SQL and it could cast to zero by accident. To prevent
that ambiguty we make zero an invalid value too.
You can explicit add negative rowids but that has size overhead because
positive values can be compressed. So explicit not positive values are
not supported.

Change-Id: I417ea9fec1573cfd9f1a98134f8adc567021988c
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-05-09 13:42:31 +00:00
Jarek Kobus
936086745a FileSearch: Get rid of FileSearchResult
Use SearchResultItem instead.
This change should reduce the remaining freeze described in
a9eb732ce6 even more.

Change-Id: I102b82ed5677360ccd9e425dd0bdd941d87116f0
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2023-05-09 11:03:48 +00:00
Tim Jenssen
5a88c3ffc1 QmlDesigner: improve ModuleScanner
handle empty path and paths better

Task-number: QDS-9847
Change-Id: I9dc6f7972835a366a046d06641fbb64494c734fc
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2023-05-08 15:29:27 +00:00
Tim Jenssen
1d183e4de7 QmlDesigner: use GTEST_INTERNAL_HAS_STRING_VIEW for str compare
constData() was a workaround for the tests

Task-number: QDS-9847
Change-Id: I23fcca794ab50101ae70034079af46303c98c648
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2023-05-08 15:29:16 +00:00
Marco Bubke
4be3f6b5e9 QmlDesigner: Improve version handling
Consolidate version handling in imports. It has drawbacks if we copy
code to different places in our code base. Having tests for the version
conversion has advantages too.

The invalid version has not anymore using -1 but the maximum integer as
indicator because an empty version is higher than any other version.

Change-Id: I8608b9509660f4253e8e5ba7397d964defe35e51
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-05-08 11:35:59 +00:00
Marco Bubke
5b9950c5d0 QmlDesigner: Make meta info system mockable
Using the projectstorage mechanism we introduce a flag for the test, so
we can use ProjectStorageInterface instead of ProjectStorage. It has the
overhead of a virtual function interface but for the test that is
neglectable. In the test we can now use a project storage mock to
emulate the meta info system. Later we could use a pregenerated database
file to create a fake project storage.

Task-number: QDS-9766
Change-Id: I16efa28bc4b12181941adecc132084157156daec
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-05-08 11:18:15 +00:00
Marco Bubke
32f84fc05a QmlDesigner: Move Version to different namespace
We want to use it not only for synchronization.

Task-number: QDS-9766
Change-Id: I26a2ade8203d9c5131e8dec101885434713f8252
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-05-08 10:52:20 +00:00
Jarek Kobus
8b3aa900da Utils: Move SearchResultItem/Color into Utils
It's going to be reused inside FileSearch.

Change-Id: I8993d7158ff31c311c2283d32bc43465a8946a52
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2023-05-08 06:41:27 +00:00
Marco Bubke
c88417cf48 Utils: Silence warning for GCC too
GCC is recognized by clangso we silence both.

Change-Id: I377caa344a60636e3c73404d9d02a4dfc2eda794
Reviewed-by: Burak Hancerli <burak.hancerli@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2023-05-03 16:08:20 +00:00
Eike Ziller
66c0c36bc1 Fix compiler warnings
Change-Id: I9b0b4a60d1152142f62bf3f76885cf8019714623
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Sivert Krøvel <sivert.krovel@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2023-05-02 09:05:16 +00:00
Marco Bubke
de2154f1c9 QmlDesigner: Add versioning for core modules
Task-number: QDS-9786
Change-Id: I56c6e9ca06ffcfcaf35cbbee061cb99e7297fca5
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Burak Hancerli <burak.hancerli@qt.io>
2023-04-26 13:16:40 +00:00
Marco Bubke
b929cbfd64 QmlDesigner: Fix QmlTypesParser
Change-Id: I826e1a37747a51602f3f7a8ea675320787080272
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-04-26 09:55:47 +00:00
Marco Bubke
45cf905b29 QmlDesigner: Fix version scanning
Switch was missing.

Change-Id: I5d87e624f698b9f59fe57cf49cafef4e6d08eca2
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Aleksei German <aleksei.german@qt.io>
2023-04-25 10:31:32 +00:00
Marco Bubke
eafe43399d QmlDesigner: Remove duplicates
Change-Id: I5b2d8433c0aca286ec530f237750ba660c409a48
Reviewed-by: Aleksei German <aleksei.german@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2023-04-25 10:31:20 +00:00
Marco Bubke
34c69766dd QmlDesigner: Add version scanning for Qt5
Add some hardwired code for lagacy Qt5 support.

Task-number: QDS-9542
Change-Id: I505685042f53b7e653e76c8d883c8d7bb30605d7
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-04-19 15:58:21 +00:00
Marco Bubke
6035ff939d QmlDesigner: Add module scanner
For performance reason we want to get the qml modules directly from the
file system. When the project storage is finished we can get the modules
from there.

Task-number: QDS-9542
Change-Id: I26d4b028fbf5ebc541fcd8e34d285ded1fb14935
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2023-04-19 13:58:22 +00:00
Marco Bubke
318bb02801 QmlDesigner: React on watcher notification
The watcher notifies the updater if files or directories are changed.
The updater then does minimal updates to the project storage. Common
cases like that the qml documents or qmltypes are changed are handled by
an extra path. Otherwise we trigger a directory update. If the directory
is in 'strange' state like the qmltypes file is removed but the qmldir
is not updated the changed file ids are saved and used additionally in
the next notification.

Task-number: QDS-9479
Change-Id: Ie82fd914b2e229f0315bf60df398c85477ce5a26
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-04-04 10:44:09 +00:00
Tim Jenssen
adb664f521 Merge remote-tracking branch 'origin/qds/dev'
Conflicts: src/libs/utils/filepath.cpp
  src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp
  src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp
  tests/unit/unittest/CMakeLists.txt

Change-Id: I017a6075db41a5233487ac855ffe23de2b2bb0ee
2023-03-30 13:30:42 +00:00
Tim Jenßen
feabda3aa7 Merge remote-tracking branch 'origin/10.0' into qds/dev
bigger conflicts resolved at:
  src/plugins/qmldesigner/CMakeLists.txt
  src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp

Change-Id: I08e2a109d8e37cbd77225129854e9e633725bfc7
2023-03-26 16:26:18 +02:00
Marco Bubke
cb0fc5fd1f QmlDesigner: Project Storage Watcher updates only some directories
Updates only the entries for the given source context (directory) ids
and skips everything else. It is enabling partial updates
for directories in a project.

[&, &ids = ids] the strange capture clause steams from a C++ issue.

Tak-number: QDS-9456
Change-Id: Id3abcd39ac429ba4483124f334d50c2999f5e6a8
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2023-03-21 09:48:31 +00:00
Marco Bubke
4c3530f5ee UnitTests: Simplify project storage watcher
Use the real path cache. It makes the test some 100ms slower because the
database has to be created for every test but makes the test simpler.
Renames some variables too for better readability.

Task-number: QDS-9456
Change-Id: I3246a1859eae7b26b9e13a9d88d3c717748de43e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2023-03-21 09:48:27 +00:00
Marco Bubke
2d5062918a QmlDesigner: Project storage watcher watches unchanged files
The Qml documents and Qmltypes files cannot added or removed if the
project data is parsed. So the can simply been added to the watched
files.

Task-number: QDS-9178
Change-Id: Iaa30425241ac7ad3c2434b9c6c5955e894ec6049
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2023-03-21 09:48:21 +00:00
Marco Bubke
157b5039c1 Sqlite: Improve database opening
Change-Id: I9074cda4d9da12a061f094ca72fa156d89ca0f87
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-03-15 11:34:50 +00:00
Marco Bubke
68bceb92cf QmlDesigner: Improve readabilty of tests for project storage updater
Task-number: QDS-9382
Change-Id: I9aac10b7e7782847bae23b09e64fbe569ce2c40a
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2023-03-15 09:37:57 +00:00
Marco Bubke
c4a51f168e QmlDesigner: Update directories without qmldir to project storage
There are qml directories without a qmldir. To identify them we use the
directory source id instead of the qmldir source id.

Task-number: QDS-9345
Change-Id: I1356ad332c091b64cbdad389a3ac505133716634
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2023-03-09 13:22:53 +00:00
Marco Bubke
f0fde39b0b QmlDesigner: Use directory source id for project data
There are qml directories without a qmldir. To identify them we use the
directory source id instead of the qmldir source id.

Task-number: QDS-9345
Change-Id: I4ed4596a21576e6bbd18c5117753669ef8a68a28
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-03-09 13:22:46 +00:00
Marco Bubke
583bb87c6a QmlDsigner: Add entries to path watcher for initial run
If there are no cached data all importatnt files should be now being
watched.

Task-number: QDS-9178
Change-Id: I0c9093e41e6a2d4f3a5aa3d62aba1fd41e047da4
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2023-03-09 13:22:32 +00:00
Marco Bubke
130453fe15 QmlDesigner: Add image for broken preview
Task-number: QDS-9048
Change-Id: Ic2ce8bf4d51f72c3ddae588709820728fc7c76b5
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2023-02-28 14:01:03 +00:00
Marco Bubke
c2915c6963 QmlDesigner: Fix test for project updater
Some tests got broken by the directory support.

Change-Id: I2a0de46a7f7f84328440ee785329d915049cb7f3
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2023-02-28 14:00:50 +00:00
Marco Bubke
921157f646 QmlDesigner: Don't inline what method
This works around the type_info::hash_code macOS bug and leads to
smaller code size because the RTTI will be not anymore injected in all
TUs.

Task-number: QDS-9266
Change-Id: I3defe3dc11b4b76f5c60b08c103a3a39ee92f367
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-02-28 10:10:10 +00:00
Marco Bubke
cc507063bc Sqlite: Inject RTTI into TU
We had problems on macOS with the catching of exceptions because the has
type_info::hash_code was different. This is probably a bug because RTTI
code is injected for an inline class.

To work around that problem we implemented the virtual what method for
every exception.

Task-number: QDS-9266
Change-Id: I79052c8b70adead412d1940b17195151fb19ebb9
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
2023-02-28 09:48:30 +00:00
Jarek Kobus
d44126c300 Unittest: Drop unneeded dependencies to coreplugin files
Amends baa83725f6

Change-Id: I82b472585dc30b0466eace15897f5d96fc7e9fd9
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2023-02-23 09:35:38 +00:00
Marco Bubke
e675fecb9e UnitTests: Make test fore robust
Change-Id: I6e92f242f759a89a11c77d862b5158c86b2b7a5a
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2023-02-23 09:05:54 +00:00
Marco Bubke
e78837a27a UnitTests: Disable warning for self assign overloaded
We want to test it so we cannot fix the code.

Change-Id: Ieb0517e539ae60c275069b790ca32380d39a59f0
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-02-23 09:05:24 +00:00
Marco Bubke
20c366aa48 UnitTests: Disable self move warnings
We want to test self move, so we cannot avoid the warning.

Change-Id: Id785690d40cfc5299e65c9f0e69abe6e336ba9ff
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-02-23 09:04:55 +00:00
Eike Ziller
66d4e12a58 Build: Remove FindQt5.cmake
No longer needed, since we generally only support building with
Qt 6 nowadays, and the parts that still do support building with
Qt 5 handle that manually.

Change-Id: I72381589ca3ab7bf1af88d9f185cad7f0cdf149c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2023-02-23 07:12:44 +00:00
Marco Bubke
18157d0b24 Sqlite: Add pathExists function
The 'pathExists' function can be registered to the database connection
and is then callable in Sql.

Task-number: QDS-9217
Change-Id: I21afc5cd38765854daa0b1058cc5e8946b551924
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
2023-02-22 10:48:05 +00:00
Marco Bubke
b4ab1e173b Sqlite: Add progress handler
Sqlite::ProgressHandler handler{
  [] { return Sqlite::Progress::Continue; },
  1000,
  database};

is setting up a progress handler for this scope. If the handler is
destructed it will automatically reset the handler on the database. The
handler is active for the whole database connection.

Task-number: QDS-9216
Change-Id: I59831f40d32c062eefdfb0c4dfbf3045058e1fd2
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
2023-02-22 10:47:55 +00:00
Vikas Pachdha
0e7a603568 UnitTests: Disable warnings as errors
Change-Id: Ib58799510258973638f25ec4d52ce62710c26f54
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2023-02-21 15:55:35 +00:00
Marco Bubke
ba6c1344b6 QmlDesigner: Integrate ProjectStoragePathWatcher
Task-number: QDS-9170
Change-Id: Iedbb07e41232beeb73cd12c89f892eec7968d084
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2023-02-20 14:12:43 +00:00
Marco Bubke
44d61b3e66 UnitTests: Fail on warnings
Task-number: QDS-9135
Change-Id: I798b1143c68e68bcd53144f5e6d01864ae0ce73b
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-02-20 14:12:37 +00:00
Marco Bubke
9b43e0caea Googletests: Bump to 1.13
Change-Id: I8b54611e404e5313269fc3436ce995bf0d09d35d
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-02-20 14:03:58 +00:00
Marco Bubke
cbd02325a8 QmlDesigner: Add extension support in qmltypesparser
Task-number: QDS-7384
Change-Id: I3f84f361360bd085d0ee78f32d808151e32a2436
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2023-02-16 12:26:32 +00:00