Even though SAGA explicitly does't follow semver conventions, there are
advances, and not all changes on their part break the API. Since the
user is already warned in big letters that versions different from 2.3
are unsupported, in beta status, we've changed the requirement for SAGA
"beta" from 7.3 to everything in version 7.
manually in the plugin manager, then force a reload of the repositories
and don't rely on cached copies of the repo manifest
Otherwise it's not possible to force a refresh on certain types of
plugin repositories where it's not possible to modify the Cache-Control
attribute of the repo
Note that to avoid unnecessary server load, we still use cached
copies during startup and by default. It's only when a user explicitly
hits the "Reload all repositories" button that we force a non-cached
fetch.
Fixes#34351
Otherwise this provider cannot be initialized from standalone Python
scripts
Fixes#36661
Also cleanup 3d sip generation by correctly defining SIP_NO_FILE
in headers we don't want to expose, so that the sip_include script
can do its magic
This avoids the force conversion to a raster based pattern which currently occurs
when exporting maps/layouts to a vector format (e.g. PDF). The raster pattern
results in considerable quality loss, and the tiling edges of the raster brush
can sometimes be seen in outputs.
Additionally, fixes render corrupt when marker subsymbols have data defined properties
which affect the marker shape, such as data defined rotation or sizes
Refs #16100 (still needs fixing for line fill symbols)
Instead of requiring users to enable the core c++ plugin 'Coordinate Capture'
in order to copy coordinates for a map point, instead add this functionality
to a map canvas right click context menu.
Now, when compatible map tools are activated (pan, zoom, select by rect), right clicking
on the canvas shows a context menu with a "Copy Coordinate" submenu. The
submenu shows options for copying the coordinate in the map CRS, WGS84 or
a custom preset CRS.
Also adds API to allow 3rd party QgsMapTool subclasses to implement their own
context menus which include this Copy Coordinate action.
- code simplification (moving displayName() to the core class
prevents us having to create lists of DecorationItem alongside
lists of MapDecoration
- Proper translation support for decoration names
We have to keep a local reference to the dialog, otherwise sip suddenly
"forgets" about the python subclass and treats the dialog as just
the parent c++ class. Really weird, thanks sip.
Fixes#36436
and preparation stage from the symbol layer rendering stage, and
ensure that QgsSymbolLayer::startFeatureRender and ::stopFeatureRender
is correctly called in the right sequence when rendering multi-layer
symbols
This fixes issues with symbol layers which rely on startFeatureRender
and stopFeatureRender to correctly render, e.g. the Random Marker Fill
symbol layer.
Before this fix, the logic looked like:
- for every symbol layer in the symbol, call startFeatureRender
- for each part in polygon, prepare the part geometry and then render each symbol layer
- for every symbol layer in the symbol, call stopFeatureRender
The issue with this approach is that symbol layers which defer
rendering to the stopFeatureRender stage are always rendered
after ALL other symbol layers in the symbol, regardless of the actual
order of the symbol layers. Ultimately this causes Random Marker Fill
layers to always render on the top of symbols.
The new logic is:
- for each part in polygon, prepare the geometry and store the result
- for each symbol layer in the symbol:
- call startFeatureRender
- render the layer using each of the previously prepared parts
- call stopFeatureRender
This results in correct stacking of the random marker fill in multi
layer symbols, because the stopFeatureRender call is correctly called
before the next layer's startFeatureRender and renderPolygon calls
Also, use QVector instead of QList for rings for improved efficiency