1568_partial_fix.patch

partial fix for legendLayerRemove and legendLayerShowProperties when a legend symbol item is selected - Gabriele Monfardini, 2009-07-18 01:05 PM

Download (1.72 KB)

View differences:

src/app/legend/qgslegend.cpp (copia locale)
620 620
    return;
621 621
  }
622 622

  
623
  //if the current item is a legend layer: remove all layers of the current legendLayer
624
  QgsLegendLayer* ll = dynamic_cast<QgsLegendLayer*>( currentItem() );
625
  if ( ll )
623
  QgsLegendItem* li = dynamic_cast<QgsLegendItem*>( currentItem() );
624
  QgsLegendLayerFile* llf = 0;
625

  
626
  if ( li->type() == QgsLegendItem::LEGEND_SYMBOL_ITEM )
626 627
  {
628
      QgsLegendSymbologyItem* si = dynamic_cast<QgsLegendSymbologyItem*>( li );
629
      li = dynamic_cast<QgsLegendItem*>( si->parent() );
630
  }
631
  
632
  if ( li->type() == QgsLegendItem::LEGEND_LAYER )
633
  {
634
    QgsLegendLayer* ll = dynamic_cast<QgsLegendLayer*>( li );
627 635
    std::list<QgsMapLayer*> maplayers = ll->mapLayers();
628 636
    int layerCount = maplayers.size();
629 637

  
......
650 658
    adjustIconSize();
651 659
    return;
652 660
  }
653

  
654
  //if the current item is a legend layer file
655
  QgsLegendLayerFile* llf = dynamic_cast<QgsLegendLayerFile*>( currentItem() );
656
  if ( llf )
661
  else if ( li->type() == QgsLegendItem::LEGEND_LAYER_FILE )
657 662
  {
663
    llf = dynamic_cast<QgsLegendLayerFile*>( li );
658 664
    if ( llf->layer() )
659 665
    {
660 666
      //the map layer registry emits a signal an this will remove the legend layer
......
682 688
    return;
683 689
  }
684 690

  
691
  if ( li->type() == QgsLegendItem::LEGEND_SYMBOL_ITEM )
692
  {
693
      QgsLegendSymbologyItem* si = dynamic_cast<QgsLegendSymbologyItem*>( li );
694
      li = dynamic_cast<QgsLegendItem*>( si->parent() );
695
  }
685 696
  if ( li->type() == QgsLegendItem::LEGEND_LAYER_FILE )
686 697
  {
687 698
    llf = dynamic_cast<QgsLegendLayerFile*>( li );