@@ -256,7 +256,6 @@ void QgsSymbolV2SelectorDialog::updateUi()
256
256
btnDown->setEnabled ( false );
257
257
btnRemoveLayer->setEnabled ( false );
258
258
btnLock->setEnabled ( false );
259
- btnAddLayer->setEnabled ( true );
260
259
return ;
261
260
}
262
261
@@ -267,7 +266,6 @@ void QgsSymbolV2SelectorDialog::updateUi()
267
266
btnDown->setEnabled ( currentRow < rowCount - 1 );
268
267
btnRemoveLayer->setEnabled ( rowCount > 1 );
269
268
btnLock->setEnabled ( true );
270
- btnAddLayer->setEnabled ( false );
271
269
}
272
270
273
271
void QgsSymbolV2SelectorDialog::updatePreview ()
@@ -398,19 +396,22 @@ void QgsSymbolV2SelectorDialog::addLayer()
398
396
if ( !idx.isValid () )
399
397
return ;
400
398
399
+ int insertIdx = -1 ;
401
400
SymbolLayerItem *item = static_cast <SymbolLayerItem*>( model->itemFromIndex ( idx ) );
402
401
if ( item->isLayer () )
403
402
{
404
- QMessageBox::critical ( this , tr ( " Invalid Selection! " ), tr ( " Kindly select a symbol to add layer. " ) );
405
- return ;
403
+ insertIdx = item-> row ( );
404
+ item = static_cast <SymbolLayerItem*>( item-> parent () ) ;
406
405
}
407
406
408
407
QgsSymbolV2* parentSymbol = item->symbol ();
409
408
QgsSymbolLayerV2* newLayer = QgsSymbolLayerV2Registry::instance ()->defaultSymbolLayer ( parentSymbol->type () );
410
- parentSymbol->appendSymbolLayer ( newLayer );
411
- // XXX Insane behaviour of the appendSymbolLayer, it actually "pushes" into the list
409
+ if ( insertIdx == -1 )
410
+ parentSymbol->appendSymbolLayer ( newLayer );
411
+ else
412
+ parentSymbol->insertSymbolLayer ( item->rowCount () - insertIdx, newLayer );
412
413
SymbolLayerItem *newLayerItem = new SymbolLayerItem ( newLayer );
413
- item->insertRow ( 0 , newLayerItem );
414
+ item->insertRow ( insertIdx == - 1 ? 0 : insertIdx , newLayerItem );
414
415
item->updatePreview ();
415
416
416
417
layersTree->setCurrentIndex ( model->indexFromItem ( newLayerItem ) );
0 commit comments