Skip to content

Commit b4fc413

Browse files
committedJun 15, 2015
dxf export: fix crash when not enabled layers are exported
1 parent 7a3a857 commit b4fc413

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed
 

‎src/app/qgsdxfexportdialog.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
#include "qgis.h"
2626
#include "qgsfieldcombobox.h"
2727
#include "qgisapp.h"
28-
#include "qgsmapcanvas.h"
28+
#include "qgslayertreemapcanvasbridge.h"
2929
#include "qgsvisibilitypresets.h"
3030

3131
#include <QFileDialog>
@@ -254,7 +254,7 @@ bool QgsVectorLayerAndAttributeModel::setData( const QModelIndex &index, const Q
254254
QList< QPair<QgsVectorLayer *, int> > QgsVectorLayerAndAttributeModel::layers() const
255255
{
256256
QList< QPair<QgsVectorLayer *, int> > layers;
257-
QHash< QgsMapLayer *, int > layerIdx;
257+
QHash< QString, int > layerIdx;
258258

259259
foreach ( const QModelIndex &idx, mCheckedLeafs )
260260
{
@@ -265,9 +265,9 @@ QList< QPair<QgsVectorLayer *, int> > QgsVectorLayerAndAttributeModel::layers()
265265
{
266266
QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( treeLayer->layer() );
267267
Q_ASSERT( vl );
268-
if ( !layerIdx.contains( vl ) )
268+
if ( !layerIdx.contains( vl->id() ) )
269269
{
270-
layerIdx.insert( vl, layers.size() );
270+
layerIdx.insert( vl->id(), layers.size() );
271271
layers << qMakePair<QgsVectorLayer *, int>( vl, mAttributeIdx.value( vl, -1 ) );
272272
}
273273
}
@@ -276,15 +276,16 @@ QList< QPair<QgsVectorLayer *, int> > QgsVectorLayerAndAttributeModel::layers()
276276
{
277277
QgsVectorLayer *vl = qobject_cast< QgsVectorLayer *>( QgsLayerTree::toLayer( node )->layer() );
278278
Q_ASSERT( vl );
279-
if ( !layerIdx.contains( vl ) )
279+
if ( !layerIdx.contains( vl->id() ) )
280280
{
281-
layerIdx.insert( vl, layers.size() );
281+
layerIdx.insert( vl->id(), layers.size() );
282282
layers << qMakePair<QgsVectorLayer *, int>( vl, mAttributeIdx.value( vl, -1 ) );
283283
}
284284
}
285285
}
286286

287-
QList<QgsMapLayer*> inDrawingOrder = QgisApp::instance()->mapCanvas()->layers();
287+
QgsLayerTreeMapCanvasBridge* bridge = QgisApp::instance()->layerTreeCanvasBridge();
288+
QStringList inDrawingOrder = bridge->hasCustomLayerOrder() ? bridge->customLayerOrder() : bridge->defaultLayerOrder();
288289
QList< QPair<QgsVectorLayer *, int> > layersInROrder;
289290

290291
for ( int i = inDrawingOrder.size() - 1; i >= 0; i-- )

0 commit comments

Comments
 (0)