| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Task-number: QTBUG-82922
Change-Id: I2eb924eaaaddbe75d342f59f5fb3cd30c4a84fef
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Task-number: QTBUG-82922
Change-Id: I34e9f32d5f695aaac7acf6b4aac30e8a2311e0cf
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|
|
|
|
|
|
|
| |
This is required in order to move away from imperative registration.
Task-number: QTBUG-82922
Change-Id: I4b2a727d69e66c29629920a3711548e02f72ce49
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is required in order to move away from imperative registration.
Some styles do not have implementations for all types, in which case
they fall back to the Default style. The list of those types are:
AbstractButton 2.0 AbstractButton.qml
Action 2.3 Action.qml
ActionGroup 2.3 ActionGroup.qml
ButtonGroup 2.0 ButtonGroup.qml
Container 2.0 Container.qml
Control 2.0 Control.qml
ScrollView 2.2 ScrollView.qml (except Imagine)
Task-number: QTBUG-82922
Change-Id: If51c8232d7a8b12f6d1f988cc7ce2d8edca1e467
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|
|
|
|
|
|
|
|
| |
As of Qt 6, the latest version will be used by default. This saves us a
lot of effort in terms of version bumps.
Task-number: QTBUG-82922
Change-Id: I74eba8185ec3ccc75bc293d4b2ea87d59e2d9928
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Qt Quick Controls 1 will be removed in Qt 6, so now we can have the
simplified path for ourselves.
Having the .2 in the path causes issues for importing now that the
version is being bumped to 6.
Task-number: QTBUG-82922
Change-Id: I0b92cdd44c42c19b1c82e7b9a7959b86ac26c6e2
Reviewed-by: Ulf Hermann <ulf.hermann@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>
|
|
|
|
|
|
|
|
|
|
| |
[ChangeLog][Controls][ApplicationWindow] The deprecated overlay
properties and attached API were removed. Use the Overlay attached type
instead.
Task-number: QTBUG-84715
Change-Id: I0781ea55ea502ffe5277385e82492291724d2090
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|\
| |
| |
| | |
Change-Id: I24ff9bec33e0bd8785e3d571212a7506b6501854
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-82253
Change-Id: I93ae7b51b902050020cf7a79510b8325060181c5
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This amends 467aa59a8.
Pick-to: 5.15
Change-Id: If162e6fe6f3087e905457d23248e95ae31726e4d
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Until we've decided whether to a) document that properties of parent
should not be bound to in delegates or b) fix the warning that results
from doing so after 8c72e634b3b0eacbfdee883bfc34994d3c19ed77,
we can pre-emptively clean up a few places where it happens.
Task-number: QTBUG-81976
Task-number: QTBUG-82393
Task-number: QTBUG-82989
Pick-to: 5.15
Change-Id: I1e610613f6016ec1b9cf9ca33cdfb15d384731a8
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ie09cfdd17b00e56f3ba8677d25b24417dd4e42f6
|
| |
| |
| |
| |
| | |
Change-Id: I411136bd2b9a277d84a7c68c55bb1c317b6cc9d2
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If there is padding around the menu then it will mean the available
height is smaller than the containing item and as such should be
interactive.
Fixes: QTBUG-82473
Change-Id: Ie3e7568ab66aa3da93e5448c1a27c9bd2a5e486a
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Remove what appears to be code for backwards compatibility
in the sizing of certain controls. Removing the code shows
no discernible difference in the appearance of those
controls.
[ChangeLog][Controls][Tumbler] implicitWidth and
implicitHeight must now be provided for Tumbler's contentItem,
as with all other controls.
Change-Id: Id858b6d13bfd81d8f30be57290fb260404652a4c
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The existing implementation was removed in order to reduce massive code
duplication and simplify color resolving process. Unit tests were fixed
accordingly.
See related changes in the qtdeclarative module for the further details.
[ChangeLog][General] the palette API is a part of
QQuickItem now.
Change-Id: Ic94ab4632e626c11d9b26f035e2a8a119c9088ef
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| | |
Change-Id: Ifd6b2289de6465a010f5f2a32789221767b4d5be
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
|\ \
| | |
| | |
| | | |
Change-Id: Ieb9bcfba9651d646509afd065ce2389ef74448cc
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/imports/controls/qtquickcontrols2plugin.cpp
Change-Id: Ifc09ea9f71fdba119fe8eed99f0bdcb402444f27
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
By setting an implicit size, the user don't need to set a
width or height on a HeaderView himself, but it will
get the default size recommended by the style.
By doing it the way it's done in the patch we achieve the following:
1. A HeaderView will by default be resized to be the same size
as the delegate.
2. If the application sets a size on HeaderView it that is larger
than the implicit size of the delegate, the delegate
will be resized to have the same size (effectively
filling out the free space in the header).
3. If the size of HeaderView is smaller than the implicit
size of the delegate, the delegate will simply be clipped.
(effectivly saying that the implicitSize of the delegate is
also it's minimum size). If this is not acceptable for the
application, it will need to use a custom delegate.
Since a HeaderView delegate is a component and not an item, it
should not be a part of the sanity checks we do to avoid using
internal IDs. Hence we blacklist until we have a better way of
handling such cases.
Task-number: QTPM-1300
Change-Id: I30ca3e13ce5e1371b60f5c4ecf742a7d7e794a36
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |\
| | | |
| | | |
| | | | |
Change-Id: Iff02839c8ace49582750e06fa1ea9c559f6c93fe
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
An example of one of the warnings:
qquickfusiondial.cpp:87:15: warning: result of integer division used in
a floating point context; possible loss of
precision [bugprone-integer-division]
Change-Id: I9d225e8149935a8f8dde6e8b0657c1406676b7f1
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: I659f177ed721b16db7342f37d47d9c062ba2ef97
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
[ChangeLog][Controls] Add HorizontalHeaderView and VerticalHeaderView.
They are controls associated with TableView. Support flicking synchronization
Support default, fusion, imagine, material and universal delegate styles.
Fixes: QTPM-1300
Change-Id: Ie3f913dd616cda0d4e5a22a3d95baf71692370fe
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| |\| |
| | | |
| | | |
| | | | |
Change-Id: I53a6326a91c2de5a6016df7322df4a6159f2330e
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Allows configuring the selectByMouse property of the underlying
TextField for editable combo boxes.
Named selectTextByMouse instead of selectByMouse to avoid confusion
with selection of the items themselves.
[ChangeLog][Controls][ComboBox] Added selectTextByMouse property.
Change-Id: I852e4cd44ebe6b2a1ed2535513ea2fc35cbe0a32
Fixes: QTBUG-71406
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: I61919fabd4a3a07ed374f2c3c1fae2d589d6e124
|
| |\|
| | |
| | |
| | | |
Change-Id: I65b34cc9ac31ecf2b768ec8e45ac635df7e9cba4
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Otherwise the text will go outside the window.
Change-Id: I3d50a195b1ee6c9b5d49952ef6c49d17c61372fa
Fixes: QTBUG-62350
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |\|
| | |
| | |
| | | |
Change-Id: I647fa31fafdaea46c341c515f97b7f793ddf4b31
|
| | |\
| | | |
| | | |
| | | | |
Change-Id: I4b970036bdb5d312b0dc5cb1bcbd8e161e3d4c7e
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
find . -name "*.png" -exec optipng -o 7 -strip all {} \;
Change-Id: I2238b2dd38813d33ed48d79817f872f922cfa28d
Fixes: QTBUG-79275
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |\| |
| | | |
| | | |
| | | | |
Change-Id: I89a29c7040e233314885eb37731f53dba8ed6c1a
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Task-number: QTBUG-78690
Change-Id: I0e421232f4335a7a351562f23134eccdd0b1c674
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: I3a57449c9025e22414b8337fcffdeb0f4d769af2
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Re-run pro2cmake on all the project files.
Change-Id: I8d349cf34d6cc8e26c76193d9ef220fa85b16bb8
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
|\| | |
| | | |
| | | |
| | | | |
Change-Id: I62feb82fcf389bf83c92f83e2ed1a6783d3179ba
|
| |\| |
| | | |
| | | |
| | | | |
Change-Id: I7c03e9e5227899188d4e16467f692419dc9e9c5b
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Reasons:
1) Qt::TexturePattern has never set by any code (this branch is
unreachable);
2) There is no knowleage about any brushes in QML (this method is
supposed to be invoked from QML only). Palette is used for colors only;
3) Even if brush style has been set somehow, it will be erased during
palettes resolving process after assigning a new "window color".
Looks like this code was copied from widgets styling and has been
compiling only because of the current design. In light of redesigning
palette class this code also makes no sense. Bringing knowledge about
brushes and its styles to QML requires additional job.
Change-Id: I555d062335593ad945b024136750dcd548cd9f16
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Nils Jeisecke <nils.jeisecke@saltation.com>
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Modify all the qmlRegisterModule calls to use minor version 15
because minor version zero from 6.0.0 would make tests fail.
This is similar to what was done in qtdeclarative in
c147b20a2c1299b2d659fe7c9472ae3866b6a425.
Change-Id: I0ef33024ead0f7b4782023e34ce1232ba987e62a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Re-generate the files.
Change-Id: Iba8ab6f3701b8a5c8b26e34ce98845a8da22a9e4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
The CMake setup only covers everything under the src directory.
Tests and examples will follow in separate patches.
Change-Id: Ic4dbf6efa3128d0eea3af99117ba87690cb51077
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is a preparation for https://codereview.qt-project.org/c/qt/qtdeclarative/+/259561
and also avoids walking up the contexts
Change-Id: I9f016b7346db088dfe1519924c9770e486b46ec9
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This allows the user to conveniently manage data for a role associated with
the text role. A common example of this is an enum stored in a backend with
nicely formatted text displayed to the user. Before this patch, developers
would have to write code like this:
ComboBox {
textRole: "text"
onActivated: backend.modifier = model[currentIndex].value
Component.onCompleted: currentIndex = findValue(backend.modifier)
model: [
{ value: Qt.NoModifier, text: qsTr("No modifier") },
{ value: Qt.ShiftModifier, text: qsTr("Shift") },
{ value: Qt.ControlModifier, text: qsTr("Control") }
]
function findValue(value) {
for (var i = 0; i < model.length; ++i) {
if (model[i].value === value)
return i
}
return -1
}
}
With this patch, the code becomes much simpler:
ComboBox {
textRole: "text"
valueRole: "value"
onActivated: backend.modifier = currentValue
Component.onCompleted: currentIndex = indexOfValue(backend.modifier)
model: [
{ value: Qt.NoModifier, text: qsTr("No modifier") },
{ value: Qt.ShiftModifier, text: qsTr("Shift") },
{ value: Qt.ControlModifier, text: qsTr("Control") }
]
}
[ChangeLog][Controls][ComboBox] Added valueRole, currentValue and
indexOfValue(). These allow convenient management of data for a role
associated with the text role.
Change-Id: I0ed19bd0ba9cf6b044a8113ff1a8782d43065449
Fixes: QTBUG-73491
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I79759d4101b5267c5d9d74ccb81e994da002b0ef
|
| |
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-73484
Change-Id: I5c6019ec015a7d423dcc103d1acf23383c5b6239
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Work was probably started before 5.12 but the patch ended up getting
merged in time for 5.13. It seems that I forgot to update the versions.
Change-Id: I19edf08158cca0967a7a536b3aee326e3b393d4c
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ia4c5ae4b49beb24b7abb0502990b79bd54ca74ec
|