On Thu, 9 Sept 2021 at 23:35, C Hamilton <[email protected]> wrote: > > I updated a number of my Shape Tools plugin routines to > QgsProcessingFeatureBasedAlgorithm. One of the methods is outputWkbType which > returns the WKB type. For my algorithm that type is determined by parameters > selected when the user runs the algorithm. The variable used to determine the > output type was initialized when the user runs the algorithm. This worked > fine with the LTR release, but I found that when the user clicks in the > Locator service text area in QGIS 3.20, QGIS is querying all of the > outputWkbType() processing methods and was causing an exception because I had > not initialized the variable yet. > > I don't know what the output wkb type is going to be until the user runs the > algorithm, so why is QGIS spuriously calling all the processing algorithm > outputWkbType() methods in QGIS 3.20. Apparently, it also happens when "edit > in place" is active. If this is truly how you intend this to operate, then it > would be good to include a note in the API documentation that this method can > be called by QGIS and to make sure it can return a valid entry by > initializing any variables in initParameters(). If this behavior is a bug, > let me know and I will put in a ticket.
It's used by the default implementation of QgsProcessingFeatureBasedAlgorithm.supportInPlaceEdits() to determine if the algorithm changes the geometry type of a layer (making it incompatible with in place editing modes). If you re-implement supportInPlaceEdits() for your algorithm subclasses then you can avoid this unwanted call. Nyall _______________________________________________ QGIS-Developer mailing list [email protected] List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
