Showing with 26 additions and 3 deletions.
  1. +26 −3 src/app/legend/qgslegend.cpp
29 changes: 26 additions & 3 deletions src/app/legend/qgslegend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,17 @@ int QgsLegend::addGroup( QString name, bool expand, QTreeWidgetItem* parent )
QgsLegendGroup *group;

if ( parentGroup )
{
group = new QgsLegendGroup( parentGroup, name );
}
else
{
group = new QgsLegendGroup( this, name );
if ( currentItem() )
{
moveItem( group, currentItem() );
}
}

QModelIndex groupIndex = indexFromItem( group );
setExpanded( groupIndex, expand );
Expand Down Expand Up @@ -808,19 +816,34 @@ void QgsLegend::addLayer( QgsMapLayer * layer )
blockSignals( false );

QgsLegendGroup *lg = dynamic_cast<QgsLegendGroup *>( currentItem() );
QSettings settings;
if ( !lg && currentItem() )
{
lg = dynamic_cast<QgsLegendGroup *>( currentItem()->parent() );
}

int index;
if ( lg )
{
index = lg->indexOfChild( currentItem() );
}
else
{
index = indexOfTopLevelItem( currentItem() );
}

if ( index < 0 )
{
index = 0;
}

QSettings settings;
if ( lg && settings.value( "/qgis/addNewLayersToCurrentGroup", false ).toBool() )
{
lg->insertChild( 0, llayer );
lg->insertChild( index, llayer );
}
else
{
insertTopLevelItem( 0, llayer );
insertTopLevelItem( index, llayer );
setCurrentItem( llayer );
}

Expand Down