The original name was not representative for the scope of the class
and misleading at best.
The class manages actions for a given layer and it's not a single action
like the former name suggested.
There is a typedef introduced to keep it in the API until we can remove
it with QGIS 3.
The current approach of testing !vl || vl->geometryType() != NoGeometry
is not intuitive and has been the source of 2 recent bugs.
Replacing these tests with the new isSpatial() function makes it
immediately obvious what is being tested. It also allows for
non-spatial plugin layers to be correctly handled by overriding
this method.
This check tests that if a function has been declared deprecated
with either Q_DECL_DEPRECATED or has a @deprecated Doxygen note
then it MUST have both the Q_DECL_DEPRECATD and @deprecated note.
It's important that both are used, as Q_DECL_DEPRECATED allows
throwing a warning if that method is used in code, while the
@deprecated doxygen note gives an indication to devs/PyQGIS users
of why it's deprecated and what should be used instead.
Ideally we'd also test for SIP /Deprecated/ tags, but I can't
find any reliable way to do this.
* make sip coverage test aware that there are less classes where QSci sip
headers are not available
* exclude properties from members
* fix QgsFeatureIds typedef (fixes missing signal
QgsVectorLayer.featuresDeleted and others)
* add missing notes for PyNames
* include some missing new methods in bindings
Rationale:
- there was a lot of large objects passed by value, so potentially
there's a speed bump from this
- even for implicitly shared classes like QString/QList there's still
a (small) cost for copying the objects when there's no reason to
- it's the right thing to do!
- call reserve on container classes where applicable
- make sure Q_FOREACH uses references
- remove dynamic casts to base classes
- fix some implicit bool conversions
* pendingAllAttributesList -> attributeList
* pendingPkAttributesList -> pkAttributeList
* pendingFeatureCount -> featureCount
featureCount will now always return the features on the layer and NOT the
committed features count as before.
This changes its behavior but this way it is coherent with the other methods
which work on the layer.
This fixes performance issues with the attribute table visible when deleting a
large number of features.
The attribute table tries to behave smart in the following way:
* It tries to remove only the deleted rows as long as they are in one or a few
single blocks
* If there are more than 100 rows to delete and it starts to delete blocks
of a size smaller than 10 it assumes that the selection to delete is widely
distributed and that a reload of the whole model is less expensive than a
differential update.
Fix#10167