@@ -20,11 +20,12 @@ QgsMapCanvasTracer::QgsMapCanvasTracer( QgsMapCanvas* canvas, QgsMessageBar* mes
20
20
{
21
21
sTracers .insert ( canvas, this );
22
22
23
- connect ( canvas, SIGNAL ( destinationCrsChanged () ), this , SLOT ( updateSettings () ) );
24
- connect ( canvas, SIGNAL ( layersChanged () ), this , SLOT ( updateLayerSettings () ) );
25
- connect ( canvas, SIGNAL ( extentsChanged () ), this , SLOT ( updateSettings () ) );
23
+ // when things change we just invalidate the graph - and set up new parameters again only when necessary
24
+ connect ( canvas, SIGNAL ( destinationCrsChanged () ), this , SLOT ( invalidateGraph () ) );
25
+ connect ( canvas, SIGNAL ( layersChanged () ), this , SLOT ( invalidateGraph () ) );
26
+ connect ( canvas, SIGNAL ( extentsChanged () ), this , SLOT ( invalidateGraph () ) );
26
27
connect ( canvas, SIGNAL ( currentLayerChanged ( QgsMapLayer* ) ), this , SLOT ( onCurrentLayerChanged () ) );
27
- connect ( canvas->snappingUtils (), SIGNAL ( configChanged () ), this , SLOT ( updateLayerSettings () ) );
28
+ connect ( canvas->snappingUtils (), SIGNAL ( configChanged () ), this , SLOT ( invalidateGraph () ) );
28
29
29
30
mActionEnableTracing = new QAction ( QIcon ( QgsApplication::getThemeIcon ( " /mActionTracing.png" ) ), tr ( " Enable Tracing" ), this );
30
31
mActionEnableTracing ->setShortcut ( Qt::Key_T );
@@ -33,22 +34,13 @@ QgsMapCanvasTracer::QgsMapCanvasTracer( QgsMapCanvas* canvas, QgsMessageBar* mes
33
34
// arbitrarily chosen limit that should allow for fairly fast initialization
34
35
// of the underlying graph structure
35
36
setMaxFeatureCount ( QSettings ().value ( " /qgis/digitizing/tracing_max_feature_count" , 10000 ).toInt () );
36
-
37
- updateSettings (); // initialize
38
- updateLayerSettings ();
39
37
}
40
38
41
39
QgsMapCanvasTracer::~QgsMapCanvasTracer ()
42
40
{
43
41
sTracers .remove ( mCanvas );
44
42
}
45
43
46
- bool QgsMapCanvasTracer::init ()
47
- {
48
- bool res = QgsTracer::init ();
49
- return res;
50
- }
51
-
52
44
QgsMapCanvasTracer* QgsMapCanvasTracer::tracerForCanvas ( QgsMapCanvas* canvas )
53
45
{
54
46
return sTracers .value ( canvas, 0 );
@@ -66,23 +58,23 @@ void QgsMapCanvasTracer::reportError( QgsTracer::PathError err, bool addingVerte
66
58
QString message;
67
59
switch ( err )
68
60
{
69
- case ErrTooManyFeatures:
70
- message = tr ( " Disabled - there are too many features displayed. Try zooming in or disable some layers." );
71
- break ;
72
- case ErrPoint1:
73
- message = tr ( " The start point needs to be snapped and in the visible map view" );
74
- break ;
75
- case ErrPoint2:
76
- if ( addingVertex )
77
- message = tr ( " The end point needs to be snapped" );
78
- break ;
79
- case ErrNoPath:
80
- if ( addingVertex )
81
- message = tr ( " Endpoints are not connected" );
82
- break ;
83
- case ErrNone:
84
- default :
85
- break ;
61
+ case ErrTooManyFeatures:
62
+ message = tr ( " Disabled - there are too many features displayed. Try zooming in or disable some layers." );
63
+ break ;
64
+ case ErrPoint1:
65
+ message = tr ( " The start point needs to be snapped and in the visible map view" );
66
+ break ;
67
+ case ErrPoint2:
68
+ if ( addingVertex )
69
+ message = tr ( " The end point needs to be snapped" );
70
+ break ;
71
+ case ErrNoPath:
72
+ if ( addingVertex )
73
+ message = tr ( " Endpoints are not connected" );
74
+ break ;
75
+ case ErrNone:
76
+ default :
77
+ break ;
86
78
}
87
79
88
80
if ( message.isEmpty () )
@@ -93,14 +85,11 @@ void QgsMapCanvasTracer::reportError( QgsTracer::PathError err, bool addingVerte
93
85
mMessageBar ->pushItem ( mLastMessage );
94
86
}
95
87
96
- void QgsMapCanvasTracer::updateSettings ()
88
+ void QgsMapCanvasTracer::configure ()
97
89
{
98
90
setDestinationCrs ( mCanvas ->mapSettings ().destinationCrs () );
99
91
setExtent ( mCanvas ->extent () );
100
- }
101
92
102
- void QgsMapCanvasTracer::updateLayerSettings ()
103
- {
104
93
QList<QgsVectorLayer*> layers;
105
94
QStringList visibleLayerIds = mCanvas ->mapSettings ().layers ();
106
95
@@ -138,5 +127,5 @@ void QgsMapCanvasTracer::onCurrentLayerChanged()
138
127
{
139
128
// no need to bother if we are not snapping
140
129
if ( mCanvas ->snappingUtils ()->snapToMapMode () == QgsSnappingUtils::SnapCurrentLayer )
141
- updateLayerSettings ();
130
+ invalidateGraph ();
142
131
}
0 commit comments