diff --git a/src/app/qgsmaptoolidentifyaction.cpp b/src/app/qgsmaptoolidentifyaction.cpp index 49e72e568dac..c474740343fa 100644 --- a/src/app/qgsmaptoolidentifyaction.cpp +++ b/src/app/qgsmaptoolidentifyaction.cpp @@ -35,6 +35,7 @@ #include "qgsmapmouseevent.h" #include "qgslayertreeview.h" #include "qgsmaplayeraction.h" +#include "qgsunittypes.h" #include #include @@ -53,7 +54,6 @@ QgsMapToolIdentifyAction::QgsMapToolIdentifyAction( QgsMapCanvas *canvas ) identifyMenu()->addCustomAction( attrTableAction ); mSelectionHandler = new QgsMapToolSelectionHandler( canvas, QgsMapToolSelectionHandler::SelectSimple ); connect( mSelectionHandler, &QgsMapToolSelectionHandler::geometryChanged, this, &QgsMapToolIdentifyAction::identifyFromGeometry ); - } QgsMapToolIdentifyAction::~QgsMapToolIdentifyAction() @@ -103,7 +103,6 @@ void QgsMapToolIdentifyAction::showAttributeTable( QgsMapLayer *layer, const QLi tableDialog->show(); } - void QgsMapToolIdentifyAction::identifyFromGeometry() { resultsDialog()->clear(); @@ -234,12 +233,24 @@ void QgsMapToolIdentifyAction::showResultsForFeature( QgsVectorLayer *vlayer, Qg Qgis::DistanceUnit QgsMapToolIdentifyAction::displayDistanceUnits() const { - return QgsProject::instance()->distanceUnits(); + Qgis::DistanceUnit units = QgsProject::instance()->distanceUnits(); + // unknown units used as a placeholder for map units + if ( units == Qgis::DistanceUnit::Unknown ) + { + return QgsProject::instance()->crs().mapUnits(); + } + return units; } Qgis::AreaUnit QgsMapToolIdentifyAction::displayAreaUnits() const { - return QgsProject::instance()->areaUnits(); + Qgis::AreaUnit units = QgsProject::instance()->areaUnits(); + // unknown units used as a placeholder for map units + if ( units == Qgis::AreaUnit::Unknown ) + { + return QgsUnitTypes::distanceToAreaUnit( QgsProject::instance()->crs().mapUnits() ); + } + return units; } void QgsMapToolIdentifyAction::handleCopyToClipboard( QgsFeatureStore &featureStore ) @@ -262,7 +273,6 @@ void QgsMapToolIdentifyAction::setClickContextScope( const QgsPointXY &point ) } } - void QgsMapToolIdentifyAction::keyReleaseEvent( QKeyEvent *e ) { if ( mSelectionHandler->keyReleaseEvent( e ) ) @@ -271,7 +281,6 @@ void QgsMapToolIdentifyAction::keyReleaseEvent( QKeyEvent *e ) QgsMapTool::keyReleaseEvent( e ); } - void QgsMapToolIdentifyAction::showIdentifyResults( const QList &identifyResults ) { for ( const IdentifyResult &res : identifyResults ) diff --git a/src/gui/qgsmaptoolidentify.cpp b/src/gui/qgsmaptoolidentify.cpp index 21ae8eabcc00..2fac056f5eae 100644 --- a/src/gui/qgsmaptoolidentify.cpp +++ b/src/gui/qgsmaptoolidentify.cpp @@ -790,8 +790,6 @@ QMap< QString, QString > QgsMapToolIdentify::featureDerivedAttributes( const Qgs } } - - if ( QgsWkbTypes::isMultiType( wkbType ) ) { QString str = QLocale().toString( static_cast( feature.geometry().constGet() )->numGeometries() );