| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a QRangeModel represents a C++ range, then the C++ range must no
longer be modified directly, as clients of the model won't be notified
about data or structural changes. Ignoring this (documented) warning
might end up with views not presenting the data correctly, or
even result in crashes as the model cannot update QPersistentModelIndex
instances.
Modifying the range through the QAbstractItemModel API is ok, but
clumsy, as it requires dealing with QModelIndex and QVariant for basic
operations.
QRangeModelAdapter provides an easy, type safe, and data-structure aware
API for reading and also modifying a range that a QRangeModel operates
on. This includes an interator API for rows, and - unless the range is
a list - columns. Dereferencing row iterators yields a row reference
type from which a row can be accessed for reading, or that a new row
can be assigned to. Dereferencing a const column iterator yields an
item; dereferencing a mutable column iterator yields a reference type
that a new item value can be assigned to.
Since QRangeModel itself is not a template class (so we don't know the
type of the range anymore once it has been created), we have to create
the adapter from the range (and optional protocol), which then
implicitly creates the model. Constructing the adapter implicitly
constructs the model, which is owned by the adapter. QRangeModelAdapter
is a value type, using std::shared_ptr for the model so that all copies
of the adapter operate on the same model.
To be able to set entire multi-role objects as items, introduce a new
Qt::ItemDataRole enum value, Qt::RangeModelAdapterRole. This is very
similar to Qt::RangeModelDataRole, but QML has specific requirements
that QRangeModelAdapter doesn't have, and we want to pass items back and
forth without modifying their value category - ie. an item that is a
shared_ptr<Object> is not useful for QML (which needs an Object *), but
a C++ user expects to get a shared_ptr<Object> from a call to at(), and
also expects to be able to set such an item.
The code has room for de-duplicating some logic in follow-up commits.
[ChangeLog][Core] Added QRangeModelAdapter for C++-style access to a
range used in a QRangeModel, while implementing QAbstractItemModel
protocol.
Change-Id: I3f2f94cb51b850100590fbe2c9a7c9dabbec59bd
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
| |
It will be replaced by an auto test
Change-Id: Ie7bc9acba6080fd191e31e61ce378023003b599c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Apple operating systems where the app runs in a sandbox,
the application can not access files outside of its sandbox
without explicit user approval.
This applies to iOS and friends, as well as optionally for
macOS (when the sandbox is enabled, which is a requirement
for publishing apps to the macOS App Store).
When the user gives explicit access to a file or directory,
we need to manage this access at runtime by starting and
stopping the access via startAccessingSecurityScopedResource
and stopAccessingSecurityScopedResource, and these functions
must be balanced, to avoid leaking kernel resources.
The access unfortunately doesn't persist automatically when
the application terminates (unlike takePersistableUriPermission
on Android), so we have to manually persist the access via
security scoped bookmarks. We store these inside the app's
own sandbox, in a way that limits the access to only that
application, so persisting them on behalf of the user should
be fine.
The persisted bookmarks are loaded in the background on
application start, ready for when the application wants
to open earlier accessed file or directories.
[ChangeLog][Apple] Sandboxed applications on Apple platforms,
(including macOS if opted in to) can now access files outside
of the application sandbox (so called security scoped resources)
for both reading and writing. Files or folders chosen by the user
via file dialogs or similar native mechanism are automatically
and transparently handled, including persistent access across
application and device restarts.
Fixes: QTBUG-120528
Task-number: QTBUG-117832
Task-number: QTBUG-120528
Task-number: QTBUG-141414
Change-Id: I90d94066cbf7cd74750049d5d1b990917fd10cad
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
| |
|
|
|
| |
Change-Id: I608ac46783ed9efb7841b6d0916fee035e338f42
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A model that operates on a range holding items of the same QObject
subclass presents the values of the properties of those QObject
instances as its data. The property names will be used as the role
names.
It is then very convenient if changes to the properties in those QObject
instances makes the model emit dataChanged() for the respective index
and role.
This requires that we identify the changed-signals for each property
that corresponds to a role name, and connect to each of those signals
for each object instance. This is an expensive operation, in particular
for trees where we have to recursively traverse the entire sturcture.
But a range holding QObjects is already quite expensive and therefore
only reasonable for small models with dozens rather than thousands of
items. At that scale, the overhead is acceptable, and we can store the
respective meta data in a baseclass of our storage type, specialized for
when the range's item type is the same QObject subclass for all columns.
We know this already, as the default implementation of roleNames() uses
that as well.
Each connection goes to a functor object that stores the index and the
role, which is the information we need to emit dataChanged. By storing
the index as a QPersistentModelIndex, objects changing position in the
model will automatically update the functor object.
The public API for this is a policy property, with two values (plus the
"None" default value): a Full auto connect iterates the entire model and
connects all relevant properties. This is expensive compared to only
connecting some objects and properties, but gives full coverage, and has
no overhead other than the connection itself.
The alternative is OnRead, which connects lazily when data is read for
the first time. This is cheaper if it's unlikely that all objects and/or
all properties are displayed, but adds book-keeping overhead so that we
know when an object and role are already connected. If everything gets
connected lazily, then this is substantially more expensive than doing
a full auto-connect in the first place.
When new rows or columns got inserted, and if autoConnectionPolicy is
set to Full, then we need to connect the new objects after QAIM emitted
rows/columnsInserted(). This gives clients a chance to populate the new
cells with objects. When rows or columns are removed and the policy is
set to OnRead, then we have to remove those connections from our book-
keeping set.
When objects are removed from the model (which means rows or columns are
removed), then we need to break the connection to the respective
objects. As the QObjects will likely be destroyed anyway, which will
then break the connections, we disconnect lazily: we disconnect if our
functor gets called for an object that has been removed. In that case,
the stored QPMI will have become invalid. To break the connection, we
need to store the QMetaObject::Connection in the functor object.
However, we only get that connection handle as a result of making the
connection, at which point our functor object has already been moved
into Qt's QCallableObject data structure. In order to store the
connection handle, we implement the move constructor of the functor to
store the address of the move-constructed functor object in the
moved-from functor object. This makes a moved-from functor act as a
reference to the moved-to functor and we can use that to store the
connection handle in the functor instance that is stored in the
QCallableObject.
Since a functor instance holds either the property data, or the address
of the moved-to instance, we can use a std::variant to avoid overhead.
Using a plain union would be even cheaper, but at this point, benefit
from the guard-rails we get from std::variant.
The context object for all connections is then a dedicated QObject,
which we can simply delete to break all connections.
[ChangeLog][Core][QRangeModel] A range model operating on a range that
holds identical QObject sublasses for all items can now automatically
connect the changed signals of all properties mapped to item roles to
the model's corresponding dataChanged signal. This allows user code to
change properties of the item-object directly, and model clients (like
item views) will get updated.
Change-Id: I742b57f0c90f705d8b7eb949ff0d026b8b4a52f3
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
| |
It was moved to qtdoc module.
Change-Id: I2c713f058da5a6bf8ea125bc5f3b599b906bb578
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This mode supports suspending the instance while waiting
for a single event only. All other events are queued for
later delivery.
This is useful for async calls made behind synchronous
API, where we don't want to run general event processing
while the instance is waiting for the async call to
complete. This is for example the case for file read()
type calls.
Change-Id: I8a8e8b15fea7a60a6bf069812294447505bdc717
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Even Oscar Andersen <even.oscar.andersen@qt.io>
|
| |
|
|
|
| |
Change-Id: Ifc4c780b994619ef9e0b9045ce5368a652fc3c8b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
|
|
|
| |
Change-Id: Id621c41ea3b918581c9a985be5f509d8c5646872
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| |
|
|
|
|
| |
Task-number: QTBUG-120749
Change-Id: Idd3bee447a851d8f5be9f97e34bf9ab9943cccc3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
We want to be able to get the parent from one row and make it the parent
of another row, and returning a `const row *` from parentRow makes that
impossible without a hacky const-cast.
Returning a pointer to const is not necessary. The inner state of the
parent row has no impact on the observable state of the child from which
it is returned.
Pick-to: 6.10
Change-Id: I1487cf2a2ed5122dd0e3530af6e055ed56e34fb7
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Relocate manual test qgraphicsitemgroup to be tested by Squish to their
respective subdirectories under qtbase/tests/squish.
Simplify the maintenance of the AUTs associated to previously created
squish tests.
Change-Id: I81dfd514b916afaa9878c8d769a419dd180539a5
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Relocate manual test qlayout to be tested by Squish to their respective
subdirectories under qtbase/tests/squish.
Simplify the maintenance of the AUTs associated to previously created
squish tests.
Change-Id: I8c673ca54da43b7facf78a3408d107585ed8c0c7
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Relocate manual test qconcatenateproxymodel to be tested by Squish to
their respective subdirectories under qtbase/tests/squish.
Simplify the maintenance of the AUTs associated to previously created
squish tests.
Change-Id: I18cb608e2eb41d0f2cf1bb316ebd8dbbce17602d
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
| |
|
|
|
|
|
| |
And move away from deprecated APIs while we're at it.
Change-Id: I6590925ed38a70a1caaa5c145e5e0b05ef10d929
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While using gadgets and QObjects with property access through the meta
type system is convenient, it's also somewhat slow and inflexible. The
order of properties defines how they get mapped to Qt::UserRole values,
and even with the cache for the mapping of role to QMetaProperty, the
data access goes through a number of lookups.
Add an ItemAccess nested template class that type authors can specialize
for their own item type to implement optimized read and write access for
the roles their item type supports.
The benchmark shows that read access is twice as fast as going through
the meta property system for an otherwise identical gadget type, and 30%
faster for write access.
Change-Id: I9b1b101cb477a7853d5fe0378c624f8459385da6
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Relocate manual test keypadnavigation to be tested by Squish
to their respective subdirectories under qtbase/tests/squish.
Simplify the maintenance of the AUTs associated to previously created
squish tests.
Change-Id: If736b78951152b9e01319325e52708e438b17cf8
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
Qt::WindowType::Desktop is no longer a valid window type in Qt6.
Remove its occurence in qwindowdump manual test.
Task-number: QTBUG-140514
Change-Id: I34ae9f8602f7d1a52a9dc6a8dbc2d4a90ea83ccb
Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
Reviewed-by: Frederic Lefebvre <frederic.lefebvre@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Add the root path to the search paths, which makes an absolute path to
a theme file load that theme. Move the UI into a main window and add
a file menu to allow loading of such a theme at runtime.
This shows that switching themes will reload the icons, at least in
widget UIs. Add two such themes with a single icon for test purposes.
Change-Id: I181fe4ac43a125b8f15fd38d302c4a4f7dc4dc6c
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
| |
|
|
|
| |
Change-Id: I8fe0ef2f0aea3951093f1f30e980881fbccd5718
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
|
|
| |
Instead of filtering out icons that the backend can't provide we now
show them with a fallback magenta color, so that it's clear the backend
is lacking something (potentially).
Change-Id: I53805e2526b64d6958eb38e51e99a933f644527f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
MainWindow has ModelFactory as a member, and that again has large arrays
as members. The stack on Windows cannot handle that, and the test fails
to start.
Allocate the UI on the heap.
Pick-to: 6.10 6.10.0
Change-Id: I8659fd7bc267f133e66e5620a430ba32b7abae2a
Reviewed-by: Maycon Stamboroski <maycon.stamboroski@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
| |
|
|
|
|
|
|
|
| |
They are crammed on macOS to the point of being unusable. That might
need a fix in the style.
Pick-to: 6.10 6.10.0
Change-Id: I4c34b364d0ce4bcba38c1d51e0c3760b4b22f764
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
| |
Pick-to: 6.10 6.10.0
Change-Id: Iabf592dc259b5bb78bfc9895517be81ebfd59956
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
All items in an array have the same type, it's not useful to return the
same type name for the header of each column. Instead, just return the
section number.
Pick-to: 6.10
Change-Id: Ia01e177e363cec55c44fcf3f92b1b3bfc502abe8
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Use const_cast to call the mutable overload if we cannot call the const
overload. This allows us to directly support e.g. std::views::filter.
As a drive by, use using-statements to reduce code duplication.
Use std::views::filter directly in the tests, now that it works.
Change-Id: I47f06ee8fe921d5854f676a35a750e64f4356fc0
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes it almost possible to use certain std::views, like filter or
drop_while, with QRangeModel. Only do that for such ranges, as otherwise
we'd detach from Qt's implicitly shared range types.
Almost, because we still assume that we can call begin/end on a const
range in our size() implementation. That needs a bit more work, and
probably only makes sense when we have a fetchMore implementation for
ranges that don't provide a constant-time size().
Nevertheless, add a filter-case to the auto and manual tests, but go
through std::ranges::subrange for now.
Change-Id: I07cd543d73746e6b47a03aceedee2365b6750321
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
|
|
| |
MSVC does not support the warning preprocessor directive. To ensure
compatibility across compilers, add a conditional check to instead use
pragma message with MSVC.
Change-Id: If380ebf8b2a5bb771dbbb374158e619ce1090e65
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A delegate that's getting recycled might not have a parent, resulting
in debug output from the binding to "parent.width". The correct way for
the delegate to reference the view it's bound to is to use e.g.
"ListView.view". "list" would work as well if we'd set
pragma ComponentBehavior: Bound
but that's just cluttering the code here.
Pick-to: 6.10
Change-Id: Ic6935a238029aad0d235a50fa078d44d62224e6a
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
While unorthodox, a std::map is sequentially iterable, and yields
std::pair instances as rows. Those should then result in two columns.
However, rows in a map cannot be rotated, because swap is explicitly
deleted for the pair type (which uses a const key type). So test that we
can swap the dereferenced iterators (testing for std::rotate still
passes, so we can't test for that directly).
Pick-to: 6.10
Change-Id: I12f7c06cca9363bdb3d0497ddbbf101d05bd9e9f
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
| |
Pick-to: 6.10
Change-Id: Iec70d068554e0c4e4eac2c24473b4ea2a722b26d
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
std::tuple_element is implemented for std::array, so we end up using the
tuple specialization of row_traits for a QRangeModel(std::array<T, N>).
This is semantically wrong, but it also breaks the build when using a
large array.
The tuple specialization uses a helper to test if all elements in the
tuple have the same type. With large arrays, this hits the compiler's
limit for fold-expressions, which defaults with clang to 256.
Specialize row_traits for std::array as well as C arrays; we know that
all elements are of the same type. To avoid ambiguity,
don't consider a std::array as a tuple. Introduce a
array_like detector that is true for std::array and C arrays of any type
and overload for_element_at using that detector (we have to, as we need
the array as a universal reference).
For the same reason, avoid the fold expression in meta_type_at if the
row type is an array. All types are the same anyway, so we can just
pick the first.
Pick-to: 6.10
Change-Id: Ic49e222d7b3390f9e4cc15ec531f8a97981ab0d5
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Use delegates from Qt Quick Controls, which look better and provide
complete default behavior, while making easier to confirm that things
work as they should (ie. correct roles are reported).
Move the whole UI into a QMainWindow, using QQuickWidget for the Quick
UI.
Pick-to: 6.10
Change-Id: I2aa12ef4d6f024fa9ba1b57fd4f03f594ce50ab4
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rework the content URIs manual test to accomodate more test cases
and require less manual interaction. Before this the user needs
to interact with many prompts and it could be error prone, and
now it's very minimal interaction.
This also fixes some test cases that were not supported before
or cases that were using some awkward workaround to keep file
permissions, and now it works better also with the Qt file APIs.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-124011
Change-Id: Id482a6a05ce4f4b6ba10c308dce494c1b2a69c7a
Reviewed-by: Petri Virkkunen <petri.virkkunen@qt.io>
|
| |
|
|
|
|
| |
Pick-to: 6.10
Change-Id: Id3fa877e7aa59713cd9a64bfb72d9871fe92bea8
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
|
| |
|
|
|
|
|
|
|
| |
As it is not supported anymore on Apple, drop QNetworkConnectionMonitor
for simplicity.
Fixes: QTBUG-132137
Change-Id: If5e216e857b4449b9937323aa58630777cb4b82d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move Java calls that might throw exceptions and handle them
with a try/catch by printing the appropriate error messages
where relevant and ignore the ones we don't necessarily need.
For certain operations like query we should check if we have
read permission for the URI first, and only then do the query,
because otherwise it's guaranteed to fail if there's no read
permission.
Pick-to: 6.10 6.9 6.8
Fixes: QTBUG-138013
Fixes: QTBUG-126531
Fixes: QTBUG-123319
Fixes: QTBUG-134912
Fixes: QTBUG-110240
Fixes: QTBUG-132403
Fixes: QTBUG-129324
Change-Id: I8457b6bfd9381bf1a62077520cf9a222311ded7a
Reviewed-by: Petri Virkkunen <petri.virkkunen@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
The API changed from using int to std::chrono::milliseconds,
update test.
Pick-to: 6.10
Change-Id: I4bd4079e5b262859bae293909008cacc824248ac
Reviewed-by: Lorn Potter <lorn.potter@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The qquaternion.h include will vanish from qmatrix4x4.h soon, but some
TUs depended on on the transitive include.
This patch includes qquaternion.h into all TUs that use QQuaternion,
but didn't include its header.
I didn't check all the individual TU's history to make a detailed
"amends", so I'll just pick this all the way back, knowing there may
have been more users in older branches, or some TUs don't exist there,
but it since we're not picking the removal of qquaternion.h from
qmatrix4x4.h further than 6.10, I don't need to do detailed
checking. CI will tell me when something's wrong.
Pick-to: 6.10 6.9 6.8 6.5
Change-Id: Icf0db8ba4f12421fd46f9d1041f235bf4cc2c12b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A qt_find_package call first tries to find a Config package
with the CONFIG mode option, and if not found, falls back to an
arg-less mode which searches both Config and Find modules.
For some packages, we know we want to find the Find module because
there can't be a Config package, e.g our FindWrap modules or any of
the other Find modules we carry in our cmake directory.
So we should annotate these calls with MODULE.
Aside from slightly faster configuration, there is another reason to
do so.
Future versions of CMake will automatically log find_package
calls that have a state change (e.g. Not Found -> Found) into
CMakeConfigureLog.yaml.
Due to the Config-first logic in qt_find_package, we always unset the
Foo_DIR variable if the Config package is not found.
This means that there will be a constant build up of not-found
messages in the log.
Explicitly annotating the calls with MODULE will prevent this. Do
that.
This commit relands f1a59e974f013fcf8629d8cbacab58d895523100
This reverts commit 0ce82b78a35026cb56ff76d1c24b311008934a53.
Pick-to: 6.10
Change-Id: I5d37579d2f4957215ce1475b5c0ec8509d77c83d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This breaks reconfiguring Qt in various ways, one of which is
CMake Error at cmake/QtTargetHelpers.cmake:1557 (message):
PkgConfig::ATSPI2 is not a valid target.
This happens because pkg_check_modules sets ATSPI2_FOUND to 1, so
qt_find_package thinks it shouldn't find the FindATSPI2.cmake module,
which ends up not creating the ATSPI2 target.
This reverts commit f1a59e974f013fcf8629d8cbacab58d895523100.
Pick-to: 6.10
Fixes: QTBUG-137870
Change-Id: Ica74a236c6b1bb9d7ca9af29175cb2e84a93251b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the existing QCocoaFileIconEngine into a separate file in the
darwin platform code, from where we can use it from both the cocoa
and the iOS theme.
Refactor the implementation for macOS to create and retain the NSImage
as a member of the engine, and cache the QPixmap when it's requested,
reusing it as long as it has the correct size.
The iOS implementation is similar, except we need to go through
UIDocumentInteractionController to get the icons for the file's URL.
Explicitly make sure that we maintain the aspect ratio of the image we
get.
Augment the iconbrowser manual test to generate temporary files with
certain extensions, and include those in the UI, allowing us to test
that the icons we get from QAbstractFileIconProvider match the file
type.
Fixes: QTBUG-134239
Change-Id: I8fb63b3c518a6eb200f5948a1c38fd485e3b1c6d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A qt_find_package call first tries to find a Config package
with the CONFIG mode option, and if not found, falls back to an
arg-less mode which searches both Config and Find modules.
For some packages, we know we want to find the Find module because
there can't be a Config package, e.g our FindWrap modules or any of
the other Find modules we carry in our cmake directory.
So we should annotate these calls with MODULE.
Aside from slightly faster configuration, there is another reason to
do so.
Future versions of CMake will automatically log find_package
calls that have a state change (e.g. Not Found -> Found) into
CMakeConfigureLog.yaml.
Due to the Config-first logic in qt_find_package, we always unset the
Foo_DIR variable if the Config package is not found.
This means that there will be a constant build up of not-found
messages in the log.
Explicitly annotating the calls with MODULE will prevent this. Do
that.
Pick-to: 6.10
Change-Id: I465b015ac18f8a09b9a5c86cec7b6312a0bfbdf1
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
|
|
|
| |
Change-Id: I319248354780a30811d11096699aaeee9b8ba109
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
| |
|
|
|
| |
Change-Id: I450eee9084d20951efdde3ae24a25d5ebcc2d5a2
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
| |
|
|
|
|
| |
Task-number: QTBUG-137521
Change-Id: Ic9256eaaa55aef20c622429058fda9235c1f73c1
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
tst_QDebug: variable is only used conditionally
tst_QTimeZone: fix string literal format
QRhiWidgetPrivate: unused local variable `q`
Change-Id: I8f9d7f86df2ff781f8ab64bee44dbebbe67eb6f3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| |
|
|
|
| |
Change-Id: Id3abd673d22bd6365bec4688c41c0b57d7aabc0b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| |
|
|
|
|
| |
Fixes: QTBUG-136962
Change-Id: I2d33b0132a83945b476f0f47fa4697ddaa2374b3
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The WS_EX_LAYERED state of a window can be determined on creation, and
the logic to do so should be centralized to QWindowsWindow::setWindowLayered,
so that we don't have divergence.
This fixes an issue where child windows would only support transparency
if they had Qt::FramelessWindowHint set, as the QWindowBackingStore had
a different idea about when to enable WS_EX_LAYERED than QWindowsWindow.
Task-number: QTBUG-122590
Task-number: QTBUG-135859
Pick-to: 6.9 6.8
Change-Id: I453967a5a2ce8974cdd1dbf6e36327e97384c33d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Zhao Yuhang <2546789017@qq.com>
Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io>
|