| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch completes the cumulative work done in previous patches.
- Uses qmlRegisterModuleImport() to register styles. This has some
added requirements:
- Each style must now be a QML module -- that is, it must have a
qmldir file.
- As a result of the above, the module must be available within the
QML import path in order to be found.
- The various forms of accepted style names have been reduced down to
one ("Material", "MyStyle", etc). See below for an explanation of
why.
- The following API in QQuickStyle is removed:
addStylePath(), availableStyles(), path(), stylePathList(). These
no longer make sense now that we reuse the existing QML import
system.
- Adds the tst_qquickstyleselector auto test back as "styleimports".
qmlRegisterModuleImport() vs resolvedUrl()
Previously we would use QQuickStyleSelector to select individual
QML files based on which style was set. We'd do this once when
QtQuick.Controls was first imported.
With Qt 6, and the requirement that each style be a proper QML
module, qmlRegisterModuleImport() was introduced. This allows us
to "link" one import with another. For an example of what this
looks like in practice, suppose the style was set to "MyStyle",
and the fallback to "Material". The "QtQuick.Controls" import
will be linked to "MyStyle", "MyStyle" to
"QtQuick.Controls.Material", and as a final fallback (for controls
like Action which only the Default style implements),
"QtQuick.Controls.Material" to "QtQuick.Controls.Default".
This is the same behavior as in Qt 5 (see qquickstyleselector.cpp):
// 1) requested style (e.g. "MyStyle", included in d->selectors)
// 2) fallback style (e.g. "Material", included in d->selectors)
// 3) default style (empty selector, not in d->selectors)
This is a necessary step to enable compilation of QML to C++.
Reducing the set of accepted style names
The problem
In QtQuickControls2Plugin() we need to call
QQuickStylePrivate::init(baseUrl()) in order to detect if the style
is a custom style in QQuickStyleSpec::resolve() (by checking if the
style path starts with the base URL). In Qt 5, init() is called in
QtQuickControls2Plugin::registerTypes(), but in Qt 6 that's too
late, because we need to call qmlRegisterModuleImport() in the
constructor. qmlRegisterModuleImport() itself requires the style to
have already been set in order to create the correct import URI
("QtQuick.Controls.X" for built-in styles, "MyCustomStyle" for
custom styles).
The solution
By reducing the valid forms for style names down to one:
./myapp -style MyStyle
we solve the problem of needing baseUrl() to determine if the
style is a custom style or not, but needing to call it too early
(since we now call qmlRegisterModuleImport() in
QtQuickControls2Plugin(), which itself requires the style to have
already been set). baseUrl() can't have been set before the
constructor is finished.
All of the various forms for _setting_ a style are still valid;
environment variables, qtquickcontrols2.conf, etc.
[ChangeLog][Important Behavior Changes] Custom styles must now have
a qmldir that lists the files that the style implements. For example,
for a style that only implements Button:
---
module MyStyle
Button 1.0 Button.qml
---
In addition, there is now only one valid, case-sensitive form for style
names: "Material", "MyStyle", etc.
These changes are done to help enable the compilation of QML code to
C++, as well as improve tooling capabilities.
[ChangeLog][Important Behavior Changes] The following API was removed:
- QQuickStyle::addStylePath()
- QQuickStyle::availableStyles()
- QQuickStyle::path()
- QQuickStyle::stylePathList()
- QT_QUICK_CONTROLS_STYLE_PATH
This API is no longer necessary and/or able to be provided now that
styles are treated as regular QML modules.
Task-number: QTBUG-82922
Change-Id: I3b281131903c7c3c1cf0616eb7486a872dccd730
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adapt to the new way of registering C++ types. The types need to be
seen at compile time so that code can be generated that invokes them.
This patch:
- Adds QML_* macros where applicable.
- Adapts the build system files to the new way of registering modules.
- Splits up the QtQuick.Controls[.*].impl files into their own plugins,
as we can only register one QML module per .pro file.
- Removes C++ type registration calls in every plugin.
- Moves private types from src/quickcontrols2/quickcontrols2.pro
to src/quickcontrols2/impl/quickcontrols2-impl.pro. Some of these
types need to be exposed to QML, but quickcontrols2.pro is already in
use to declare the QtQuick.Controls import (and also provides the
public C++ QQuickStyle API), and the new QML_IMPORT_NAME/VERSION
syntax only allows one module per project. As some of the types that
need to be exposed to QML are also referenced by some C++ code (e.g.
tests, etc.), we just move all of the private types to the new
library.
Follow-up patches will register the QML types declaratively.
Task-number: QTBUG-82922
Change-Id: Iaf9ee106237d61701d57a8896f3822304c8151a6
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In upcoming patches, we start registering C++ types declaratively.
A condition of doing so requires that each .pro corresponds to one
QML module. This conflicts with the QtQuick.Controls import, which
currently does quite a lot:
- Registers (and selects) QML files for the style that was set
- Registers private C++ utility types (such as IconLabel) that are
useful for all styles under the QtQuick.Controls.impl import
- Registers private C++ types that are only useful for the Default
style (such as BusyIndicatorImpl).
The reason it does so much can probably be explained by the
intended usage of Qt Quick Controls 2; when you do
import QtQuick.Controls 2.0
you get access to the QML types (e.g. Button) that the style
you're using provides. So if you're using the Material style,
you'll get a Material style button. API-wise, the button is
identical to any other button, because the types in
QtQuick.Templates are what we advertise as the public API.
If we didn't have this functionality, users would need to
import specific style imports to use controls, and the
convenience of being able to simply start the application
with a different style by e.g. passing an application argument
would be lost.
To support declarative registration of types while also supporting
the existing use cases, we split out the Default-style-specific
stuff into a QtQuick.Controls.Default import.
Task-number: QTBUG-82922
Change-Id: Ib4f1620cae78d7acdc13d9ac0752a020bc22f3ea
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|
|
|
|
|
| |
Task-number: QTBUG-84319
Change-Id: I7aaae36df79b1a935a3c4d31039cb880405f0d63
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
This is getting its own repository as part of the move to the
marketplace.
Task-number: QTBUG-84172
Pick-to: 5.15
Change-Id: I2f963c298d6ef95e0832f95aa1e1ea809f4867a2
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
src/imports/controls/qtquickcontrols2plugin.cpp
Change-Id: Ifc09ea9f71fdba119fe8eed99f0bdcb402444f27
|
| |
| |
| |
| |
| |
| |
| | |
DiagnosticMessage is getting its loc member back :)
Change-Id: I07fd8b2b506bebb0acdbc20d6294d0f4b0e0214f
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
|/
|
|
|
|
|
|
| |
Instead use "15" for compatibility reasons, similar
how it was done in db2852bcbf3f76ce1a1b41969ca36bc5ada5b5ff .
Change-Id: Ie0f4ebf519f8249b29eb1d8965f6c0fc47f3b362
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
|
|
|
| |
A result of qtdeclarative d4d197d06279f9257647628f7e1ccc9ec763a6bb.
Following similar change in qttools 875a927b49b241e6a96f2c8aace8a9c69da04ce7.
Change-Id: I0f11dbf09ffa3aeb7395e7a8eb6a38bcc5f60133
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|
|
|
|
|
| |
Task-number: QTBUG-74512
Change-Id: I7b154d793c134a93aa3a48ade7d3ae785c44e7ea
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
| |
Implementations of QQmlJS::AST::Visitor are required to do so.
Fixes: QTBUG-74512
Change-Id: I19d40d2d3a5d3588cad4caa7f0a48c13919077a0
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
| |
Change-Id: I723f1fe2e5df1ea4a09bd7e567079cdbc7124e6e
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/quicktemplates2/qquickcontrol.cpp
tests/auto/sanity/tst_sanity.cpp
Change-Id: I62a79fd7788fec635b9917fc91bacd7338b547fd
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-65341
Change-Id: I51bd3390a18e50e37dfdd880dfa8df262d478b04
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Test file names against registered QML types to avoid including any
internal helper types like CursorDelegate.qml and RectangularGlow.qml.
Change-Id: Ia3079ea215eea59f7e405a50c3170fb4530f4239
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
See the previous commit (CheckIndicator) for more details.
Before:
running: /home/jpnurmi/Projects/qmlbench/benchmarks/auto/creation/quick.controls2/delegates_switch.qml
[...]
Average: 87.8 frames; using samples; MedianAll=87; StdDev=2.16795, CoV=0.0246919
After:
running: qmlbench/benchmarks/auto/creation/quick.controls2/delegates_switch.qml
[...]
Average: 92.6 frames; using samples; MedianAll=92; StdDev=2.19089, CoV=0.0236597
Change-Id: Iea9e88e4e771ac27d336c2c87232704d33a226ec
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
See the previous commit (CheckIndicator) for more details.
Before:
running: qmlbench/benchmarks/auto/creation/quick.controls2/delegates_radiobutton.qml
[...]
Average: 91.6 frames; using samples; MedianAll=91; StdDev=1.51658, CoV=0.0165565
After:
running: qmlbench/benchmarks/auto/creation/quick.controls2/delegates_radiobutton.qml
[...]
Average: 95.8 frames; using samples; MedianAll=96; StdDev=2.04939, CoV=0.0213924
Change-Id: Ic185241767d0b9422e86919356e3155e00803e56
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The internal CheckIndicator helper was introduced together with
CheckDelegate in 1acb34a, because we naturally wanted to share the
indicator instead of duplicating it. This change is controversial,
because it leads to duplicate code, but keeping the indicator
definitions inline is clearly faster. This is not seen as a huge
problem for the Default style, because the indicator is not too
complicated. Basically, this fixes a ~5% performance regression
introduced by 1acb34a.
Before:
running: qmlbench/benchmarks/auto/creation/quick.controls2/delegates_checkbox.qml
[...]
Average: 72.8 frames; using samples; MedianAll=73; StdDev=1.48324, CoV=0.0203742
After:
running: qmlbench/benchmarks/auto/creation/quick.controls2/delegates_checkbox.qml
[...]
Average: 77 frames; using samples; MedianAll=77; StdDev=1.41421, CoV=0.0183664
Change-Id: Ibee0e29e83a64ee4a6a772a90b1784a9c8c715bb
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
This plugin crops upscaled 9-patch PNG assets when exported from Sketch,
to ensure that 9-patch borders remain 1px wide when upscaled.
Change-Id: Iad46d75f37b76eecf64ac32fa38d2b9e9db8b34d
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ia1e633af6c64c9e2d538a2d4076e0bdd9667e01e
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|/
|
|
|
|
|
|
| |
[ChangeLog][Controls] Introduced a Fusion style that offers
a platform agnostic desktop-oriented look'n'feel.
Change-Id: Id1c1baf10f4b3a79e89bcc72f6d170ed0b2cc8b0
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
| |
Change-Id: Ia631cd493d695aaac44d612f234756b4e5b558dd
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\
| |
| |
| | |
Change-Id: If797ac58344b20e8de4379343131c097247ba2f2
|
| |
| |
| |
| |
| | |
Change-Id: If68cff4efacc7dc5719c8b8e61937e85e9076870
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|/
|
|
|
|
|
|
| |
Duplicate code in TextField, TextArea, and SpinBox. The next one is
editable ComboBox.
Change-Id: Ibbd054d2f945f4964ee0007f9e9dc8a9450902e9
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
| |
Add a separate test for non-screenshot snippets and move the screenshot
snippets to their own folder.
Change-Id: Ic3e7370321e346b83f7df42205e204d1265ce5b0
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
|
|
| |
And add QT_NO_FOREACH define to .qmake.conf.
Now QuickControls2 is 'foreach' free.
Change-Id: I98695258859decadae6fd2f23f5f6f5ef2b0550f
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
|
|
|
| |
These are not standalone controls, but internal helper types. They are
tested and benchmarked together with the enclosing control, just like
the various indicator types.
Change-Id: I41b756b5f60dbd25719707da5372e13184092748
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
| |
Docs, resources, .metainfo and plugins.qmltypes will be updated in
follow up commits.
Change-Id: I4438c5bfb8802bff0fa15c56431cfd288f179861
Task-number: QTBUG-52549
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
|
| |
Move the Qt/labs/ prefix out of addTestRows().
Change-Id: I1bd69fee15e795ca40f8c767dc86be5f80f66530
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Looks like a duplicate string right now, but after the import rename,
the target path (eg. QT_INSTALL_QML/QtQuick/Controls.2/Material) and
the source path (eg. src/imports/controls/material) no longer have a
common structure, so pass both paths to addTestRows().
Change-Id: I39228ed5f23434289a5bea95977bbd0e7a378641
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
|
|
|
|
|
| |
Change-Id: I5c3d5309efeaab826e27ef97c3285803603e5e21
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
|
|
|
|
|
| |
Change-Id: I17bb9131603da912597777b2ec0b9be3894ed858
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
|
|
|
|
|
|
|
|
|
| |
Validate with a AST::Visitor that there are no local anchors -bindings
in controls. Other QQuickAnchors instances (in QtGraphicalEffects) are
now allowed.
Change-Id: Ie862f193860eef7a90b6ac0c8e6c930e5cdd8245
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
|
|
|
|
|
|
|
| |
Using basically the same approach than 561b9ce for benchmarks.
Change-Id: Ibf78103ef92e5cad6c2b8415a445361d98dbea15
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
|
|
|
|
|
| |
Change-Id: I8e4cf5eb65e6e5f0196704f707c9b9764e36a75b
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Pick the interesting .qml files straight from the project source tree,
instead of matching files from the engine's import path list, which
might contain undesired stray files eg. while working on multiple
features and switching between branches. The tests would fail if it
found a file that cannot be instantiated.
Change-Id: Ice1e1be3568162a45fafdea3a725e3e3eb27e10d
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
|
|
|
|
|
| |
Change-Id: I142622dd85e95ef70b11132e77ccf48701f2cabc
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
|
|
|
|
|
| |
Change-Id: Ief7e28f6c595cb60f15a4960dada24a6c2f5ca3e
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The original split existed because the public and enterprise
controls were developed separately. Now that all controls are
public and developed together, the split no longer makes sense
and is difficult for users to understand.
Change-Id: I00420f4d09f8c837232231d03fe818b7b3403fab
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
|
|
|
|
|
|
|
| |
Change-Id: I9c4801ac91c52d487e98a99ff4d38e133f0679a3
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
|
|
Rename the former tst_declarative to tst_sanity and
extend it with tests to prevent:
a) use of anchors, and
b) multiple attached object instances of the same type.
Anchors are not allowed for two reasons:
- performance (QQuickAnchors is a QObject), and
- to let users relayout delegates (x/y/width/height bindings
can be overridden, anchors not so easily)
Multiple attached object instances (eg. Theme) can easily happen by
accident. "Theme.fooColor" can be used in the control root, but in all
delegate items, "control.Theme.fooColor" must be used instead.
Change-Id: I4045d5bd717fa21db79d1c3bd618fc450e292fa4
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
|