Skip to content

Commit

Permalink
correctly disable guides rendering and snapping
Browse files Browse the repository at this point in the history
allows map renderer jobs to be nulls
  • Loading branch information
3nids committed Jan 18, 2024
1 parent 4d98de1 commit 9c13cb6
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/core/maprenderer/qgsmaprendererjob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -649,7 +649,7 @@ std::vector<LayerRenderJob> QgsMapRendererJob::prepareJobs( QPainter *painter, Q
job.context()->setElevationMap( job.elevationMap );
}

if ( ( job.renderer->flags() & Qgis::MapLayerRendererFlag::RenderPartialOutputs ) && ( mSettings.flags() & Qgis::MapSettingsFlag::RenderPartialOutput ) )
if ( job.renderer && ( job.renderer->flags() & Qgis::MapLayerRendererFlag::RenderPartialOutputs ) && ( mSettings.flags() & Qgis::MapSettingsFlag::RenderPartialOutput ) )
{
if ( mCache && ( job.renderer->flags() & Qgis::MapLayerRendererFlag::RenderPartialOutputOverPreviousCachedImage ) && mCache->hasAnyCacheImage( job.layerId + QStringLiteral( "_preview" ) ) )
{
Expand Down
5 changes: 3 additions & 2 deletions src/core/maprenderer/qgsmaprendererparalleljob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@ void QgsMapRendererParallelJob::renderLayerStatic( LayerRenderJob &job )
#ifdef SIMULATE_SLOW_RENDERER
QThread::sleep( 1 );
#endif
job.completed = job.renderer->render();
job.completed = job.renderer && job.renderer->render();
}
catch ( QgsException &e )
{
Expand All @@ -393,7 +393,8 @@ void QgsMapRendererParallelJob::renderLayerStatic( LayerRenderJob &job )
QgsDebugError( QStringLiteral( "Caught unhandled unknown exception" ) );
}

job.errors = job.renderer->errors();
if ( job.renderer )
job.errors = job.renderer->errors();
job.renderingTime += t.elapsed();
QgsDebugMsgLevel( QStringLiteral( "job %1 end [%2 ms] (layer %3)" ).arg( reinterpret_cast< quint64 >( &job ), 0, 16 ).arg( job.renderingTime ).arg( job.layerId ), 2 );
}
Expand Down
11 changes: 9 additions & 2 deletions src/core/qgsdigitizingguidelayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ QgsDigitizingGuideLayer::QgsDigitizingGuideLayer( const QString &name, const Lay

void QgsDigitizingGuideLayer::setEnabled( bool enabled )
{
// TODO
setOpacity( enabled ? 1 : 0 );
mEnabled = enabled;
triggerRepaint();
}

Expand Down Expand Up @@ -349,3 +348,11 @@ QgsLineSymbol *QgsDigitizingGuideLayer::detailsLineSymbol() const
QgsLineSymbol *lineSymbol = new QgsLineSymbol( QgsSymbolLayerList() << lineSymbolLayer );
return lineSymbol;
}

QgsMapLayerRenderer *QgsDigitizingGuideLayer::createMapRenderer( QgsRenderContext &rendererContext )
{
if ( !mEnabled )
return nullptr;

return QgsAnnotationLayer::createMapRenderer( rendererContext );
}
6 changes: 6 additions & 0 deletions src/core/qgsdigitizingguidelayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ class CORE_EXPORT QgsDigitizingGuideLayer : public QgsAnnotationLayer
//! Enables or disabled the guides
void setEnabled( bool enabled );

//! Returns if the guides are enabled
bool enabled() const {return mEnabled;}

//! Adds a point guide
void addPointGuide( const QgsPoint &point, const QString &title, QList<QgsAnnotationItem *> details = QList<QgsAnnotationItem *>(), const QDateTime &creation = QDateTime::currentDateTime() );

Expand Down Expand Up @@ -78,12 +81,15 @@ class CORE_EXPORT QgsDigitizingGuideLayer : public QgsAnnotationLayer
void setGuideHighlight( const QString &guideId = QString() );

virtual void clear() override;
virtual QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) override;

protected:
virtual bool readXml( const QDomNode &node, QgsReadWriteContext &context ) override;
virtual bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const override;

private:
bool mEnabled = true;

QStringList addDetails( QList<QgsAnnotationItem *> details );

QgsMarkerSymbol *pointGuideSymbol() const;
Expand Down
2 changes: 1 addition & 1 deletion src/core/qgssnappingutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ static void _snapToGuides( QgsPointLocator::Match &bestMatch, const QgsPointXY &
double bestDistance = bestMatch.distance();
QgsCoordinateTransform transform( guideLayer->crs(), destinationCrs, QgsProject::instance()->transformContext() );

if ( !guideLayer )
if ( !guideLayer || !guideLayer->enabled() )
return;

std::pair<QList<QgsPointXY>, QList<const QgsCurve *> > guides = guideLayer->guides();
Expand Down

0 comments on commit 9c13cb6

Please sign in to comment.