Skip to content

Commit

Permalink
Fix some file based datasets (e.g. single layer ODS files) aren't
Browse files Browse the repository at this point in the history
correctly showing file based actions in browser
  • Loading branch information
nyalldawson committed Aug 12, 2021
1 parent b4ef3a3 commit 0cf4068
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
11 changes: 5 additions & 6 deletions src/core/browser/qgsfilebaseddataitemprovider.cpp
Expand Up @@ -36,8 +36,8 @@
//

QgsProviderSublayerItem::QgsProviderSublayerItem( QgsDataItem *parent, const QString &name,
const QgsProviderSublayerDetails &details )
: QgsLayerItem( parent, name, details.uri(), details.uri(), layerTypeFromSublayer( details ), details.providerKey() )
const QgsProviderSublayerDetails &details, const QString &filePath )
: QgsLayerItem( parent, name, filePath.isEmpty() ? details.uri() : filePath, details.uri(), layerTypeFromSublayer( details ), details.providerKey() )
, mDetails( details )
{
mToolTip = details.uri();
Expand Down Expand Up @@ -153,7 +153,7 @@ QVector<QgsDataItem *> QgsFileDataCollectionItem::createChildren()
children.reserve( sublayers.size() );
for ( const QgsProviderSublayerDetails &sublayer : std::as_const( sublayers ) )
{
QgsProviderSublayerItem *item = new QgsProviderSublayerItem( this, sublayer.name(), sublayer );
QgsProviderSublayerItem *item = new QgsProviderSublayerItem( this, sublayer.name(), sublayer, QString() );
children.append( item );
}

Expand Down Expand Up @@ -341,9 +341,8 @@ QgsDataItem *QgsFileBasedDataItemProvider::createDataItem( const QString &path,
|| ( !( queryFlags & Qgis::SublayerQueryFlag::FastScan ) && !QgsProviderUtils::sublayerDetailsAreIncomplete( sublayers, QgsProviderUtils::SublayerCompletenessFlag::IgnoreUnknownFeatureCount ) ) )
)
{
QgsProviderSublayerItem *item = new QgsProviderSublayerItem( parentItem, name, sublayers.at( 0 ) );
if ( item->path() == path )
item->setCapabilities( item->capabilities2() | Qgis::BrowserItemCapability::ItemRepresentsFile );
QgsProviderSublayerItem *item = new QgsProviderSublayerItem( parentItem, name, sublayers.at( 0 ), path );
item->setCapabilities( item->capabilities2() | Qgis::BrowserItemCapability::ItemRepresentsFile );
return item;
}
else if ( !sublayers.empty() )
Expand Down
3 changes: 2 additions & 1 deletion src/core/browser/qgsfilebaseddataitemprovider.h
Expand Up @@ -51,8 +51,9 @@ class CORE_EXPORT QgsProviderSublayerItem final: public QgsLayerItem
* \param parent parent item
* \param name data item name (this should match either the layer's name or the filename of a single-layer file)
* \param details sublayer details
* \param filePath, for sublayer items which directly represent a file
*/
QgsProviderSublayerItem( QgsDataItem *parent, const QString &name, const QgsProviderSublayerDetails &details );
QgsProviderSublayerItem( QgsDataItem *parent, const QString &name, const QgsProviderSublayerDetails &details, const QString &filePath );
QString layerName() const override;
QVector<QgsDataItem *> createChildren() override;

Expand Down

0 comments on commit 0cf4068

Please sign in to comment.