@@ -91,6 +91,8 @@ QgsBrowserDockWidget::QgsBrowserDockWidget( const QString &name, QgsBrowserModel
91
91
action->setCheckable ( true );
92
92
menu->addAction ( action );
93
93
94
+ mBrowserView ->setExpandsOnDoubleClick ( false );
95
+
94
96
connect ( mActionRefresh , &QAction::triggered, this , &QgsBrowserDockWidget::refresh );
95
97
connect ( mActionAddLayers , &QAction::triggered, this , &QgsBrowserDockWidget::addSelectedLayers );
96
98
connect ( mActionCollapse , &QAction::triggered, mBrowserView , &QgsDockBrowserTreeView::collapseAll );
@@ -169,8 +171,16 @@ void QgsBrowserDockWidget::itemDoubleClicked( const QModelIndex &index )
169
171
170
172
if ( item->handleDoubleClick () )
171
173
return ;
174
+ else if ( addLayerAtIndex ( index ) ) // default double-click handler
175
+ return ;
172
176
else
173
- addLayerAtIndex ( index ); // default double-click handler
177
+ {
178
+ // double click not handled by browser model, so use as default view expand behavior
179
+ if ( mBrowserView ->isExpanded ( index ) )
180
+ mBrowserView ->collapse ( index );
181
+ else
182
+ mBrowserView ->expand ( index );
183
+ }
174
184
}
175
185
176
186
void QgsBrowserDockWidget::renameFavorite ()
@@ -416,7 +426,7 @@ void QgsBrowserDockWidget::addLayer( QgsLayerItem *layerItem )
416
426
emit handleDropUriList ( list );
417
427
}
418
428
419
- void QgsBrowserDockWidget::addLayerAtIndex ( const QModelIndex &index )
429
+ bool QgsBrowserDockWidget::addLayerAtIndex ( const QModelIndex &index )
420
430
{
421
431
QgsDebugMsg ( QStringLiteral ( " rowCount() = %1" ).arg ( mModel ->rowCount ( mProxyModel ->mapToSource ( index ) ) ) );
422
432
QgsDataItem *item = mModel ->dataItem ( mProxyModel ->mapToSource ( index ) );
@@ -430,8 +440,9 @@ void QgsBrowserDockWidget::addLayerAtIndex( const QModelIndex &index )
430
440
emit openFile ( projectItem->path (), QStringLiteral ( " project" ) );
431
441
QApplication::restoreOverrideCursor ();
432
442
}
443
+ return true ;
433
444
}
434
- if ( item && item->type () == QgsDataItem::Layer )
445
+ else if ( item && item->type () == QgsDataItem::Layer )
435
446
{
436
447
QgsLayerItem *layerItem = qobject_cast<QgsLayerItem *>( item );
437
448
if ( layerItem )
@@ -440,7 +451,9 @@ void QgsBrowserDockWidget::addLayerAtIndex( const QModelIndex &index )
440
451
addLayer ( layerItem );
441
452
QApplication::restoreOverrideCursor ();
442
453
}
454
+ return true ;
443
455
}
456
+ return false ;
444
457
}
445
458
446
459
void QgsBrowserDockWidget::addSelectedLayers ()
0 commit comments