This breaks fixing mesh layer paths when restoring projects with
broken mesh layers -- fixing the path causes the existing style
to be lost.
Fixes#45391
When adding logging via db manager to an existing layer, all the
time_start of existing features are still null. When we modify one
feature for the first time, the update trigger fires and insert a row
for the past state of the feature. In turn, this fires the INSERT
trigger for this row, and the execution goes inside the `if
NEW.time_start is NULL`, which set the end timestamp to NULL, making the
old row still visible in the _current view.
In other word, the insert trigger makes the assumption that a null start
timestamp means now, which is not true in the case described above.
This commit fixes this assumption by initially setting it to `-infinity`
for existing rows.
layers which have been set for a canvas but which AREN'T part of
QgsProject::instance()
Required to fix test failure in labeling map tools, but ultimately
a necessary piece of API to ensure that map tools aren't so tightly
bound to QgsProject::instance()
QgsAuxiliaryLayer::createProperty(*)
Instead, if a property already exists it will be upgraded to
an expression based property of the form:
coalesce("new aux field", 'existing' || 'property' || 'expression')
(i.e. allow per-feature value overrides from the auxiliary field,
but by default fallback to the existing property definition)
Refs #44475
This allows callers to specify the desired rendering resolution of the
image when they aren't explicitly requesting a preset image size.
It can be used for image drivers for formats which don't have a fixed
size (e.g. pdf) so that the image is rendered in the desired resolution.
Accessible via QgsGui::recentStyleHandler(), this is intended as
a place to store recently used style items (e.g. symbols).
Initially it's used just for annotation items so that newly
created annotation items are automatically set to the same style
as the most recently modified item of the same type (e.g. so
that users drawing many point annotations don't need to keep
setting it back to the same appearance)! But the api is kept
flexible for additional uses in future... (eg layout items)
for cancelation check support
While there is the existing QgsRenderContext::renderingStopped()
check, this doesn't play well with other parts of QGIS which utilise
a QgsFeedback object for cancelation support. By adding support
for a proper QgsFeedback object in render contexts then it becomes
trivial to pass this on to feature requests, expression contexts,
and other potentially expensive functions so that these can
all be canceled responsively too.
(At some stage in the future we should consider deprecating
QgsRenderContext::rendereringStopped(), but that's not done here)