Skip to content

Commit

Permalink
mActionZoomToLayers does something using selected or active layer
Browse files Browse the repository at this point in the history
  • Loading branch information
TurboGraphxBeige authored and nyalldawson committed Feb 3, 2021
1 parent f4ebcc6 commit 42aa3b5
Showing 1 changed file with 29 additions and 18 deletions.
47 changes: 29 additions & 18 deletions src/gui/layertree/qgslayertreeviewdefaultactions.cpp
Expand Up @@ -304,8 +304,8 @@ void QgsLayerTreeViewDefaultActions::zoomToLayer( QgsMapCanvas *canvas )
void QgsLayerTreeViewDefaultActions::zoomToLayers( QgsMapCanvas *canvas )
{
const QList<QgsMapLayer *> layers = mView->selectedLayers();
if ( layers.isEmpty() )
return;
// if ( layers.isEmpty() )
// return;

zoomToLayers( canvas, layers );
}
Expand Down Expand Up @@ -375,30 +375,41 @@ void QgsLayerTreeViewDefaultActions::zoomToLayers( QgsMapCanvas *canvas, const Q
QgsRectangle extent;
extent.setMinimal();

for ( int i = 0; i < layers.size(); ++i )
if ( layers.size() >= 1 )
{
QgsMapLayer *layer = layers.at( i );
QgsRectangle layerExtent = layer->extent();

QgsVectorLayer *vLayer = qobject_cast<QgsVectorLayer *>( layer );
if ( vLayer )
for ( int i = 0; i < layers.size(); ++i )
{
if ( vLayer->geometryType() == QgsWkbTypes::NullGeometry )
continue;
QgsMapLayer *layer = layers.at( i );
QgsRectangle layerExtent = layer->extent();

if ( layerExtent.isEmpty() )
QgsVectorLayer *vLayer = qobject_cast<QgsVectorLayer *>( layer );
if ( vLayer )
{
vLayer->updateExtents();
layerExtent = vLayer->extent();
if ( vLayer->geometryType() == QgsWkbTypes::NullGeometry )
continue;

if ( layerExtent.isEmpty() )
{
vLayer->updateExtents();
layerExtent = vLayer->extent();
}
}
}

if ( layerExtent.isNull() )
continue;
if ( layerExtent.isNull() )
continue;

//transform extent
layerExtent = canvas->mapSettings().layerExtentToOutputExtent( layer, layerExtent );
//transform extent
layerExtent = canvas->mapSettings().layerExtentToOutputExtent( layer, layerExtent );

extent.combineExtentWith( layerExtent );
}
}

// If no layer is selected, use current layer
else
{
QgsRectangle layerExtent = mView->currentLayer()->extent();
layerExtent = canvas->mapSettings().layerExtentToOutputExtent( mView->currentLayer(), layerExtent );
extent.combineExtentWith( layerExtent );
}

Expand Down

0 comments on commit 42aa3b5

Please sign in to comment.