Index: src/app/legend/qgslegend.cpp =================================================================== --- src/app/legend/qgslegend.cpp (revisione 11533) +++ src/app/legend/qgslegend.cpp (copia locale) @@ -735,6 +735,40 @@ QgsMapLayerRegistry::instance()->removeMapLayer( llf->layer()->getLayerID() ); } } + + //if the current item is a legend layer file group + QgsLegendLayerFileGroup* llfg = dynamic_cast( currentItem() ); + if ( llfg ) + { + QgsDebugMsg( "QgsLegendLayerFileGroup" ); + ll = dynamic_cast( llfg->parent() ); + if (ll) + { + std::list maplayers = ll->mapLayers(); + int layerCount = maplayers.size(); + + for ( std::list::iterator it = maplayers.begin(); it != maplayers.end(); ++it ) + { + //remove the layer + if ( *it ) + { + removeLayer( *it, true ); + } + } + + if ( layerCount == 0 ) + { + // delete the item only when it didn't have any child legend layer files + // (otherwise it is deleted in QgsLegend::removeLayer when deleting last legend layer file) + mStateOfCheckBoxes.erase( ll ); + removeItem( ll ); + delete ll; + } + + adjustIconSize(); + return; + } + } return; }