This potentially avoids a second expensive feature request after
building a spatial index and later needing to re-request features
which match spatial index search.
It's non-default, as it requires the index to store all feature
geometries, so it's more memory expensive.
If they are deleted, any other python wrappers which have been parented to these singletons are deleted too.
One of the most common issues with this is, that subclasses of registry items are deleted and lost.
Until now mouse right-click could only select and deselect the highlighted
feature to "lock" vertex tool (and numerical editor) to it, so that it is
easier to focus only on editing of the particular feature. It was however
still difficult to pick the right feature in case there were multiple
features in one location or very close to each other. This is now solved
by the fact that repeated right button clicks will loop through the editable
features. So if there are two features in one location (A, B) then repeated
right-clicks will select: A - B - nothing - A - B - nothing ...
When a new QgsAbstractGeometry is set on a geometry object, the previous child is deleted.
If the previous object was constructed by Python, it's wrapper will still be alive for
as long as the QgsGeometry is alive. If a new QgsAbstractGeometry is constructed at the same
memory address as the old one, the wrapper will be reused with wrong type (and other)
information, leading to all kind of weird issues.
See also https://www.riverbankcomputing.com/pipermail/pyqt/2019-January/041251.html
Remove responsibility for credentials mutex locking from external
callers and handle appropriate locks internally. This allows the
mutex lock to be much "tighter" and avoids deadlocks when
credentials are requested while an existing credentials dialog
is being shown.
(No mutex is required protecting the credentials dialog itself
as this is ALWAYS shown in the main thread)
Fixes#20826
With recent changes in QgsNetworkAccessManager this should be
safe to resurrect (fingers crossed!). Also simplify code a lot,
because now QgsNetworkAccessManager handles waking the worker
thread after the auth request is handled.
Add a lot more tests