Skip to content

Commit 530b5fd

Browse files
committed
Fix #9918 (enable add symbol layer also when selection is not on symbol)
1 parent 748ff8b commit 530b5fd

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/gui/symbology-ng/qgssymbolv2selectordialog.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,6 @@ void QgsSymbolV2SelectorDialog::updateUi()
256256
btnDown->setEnabled( false );
257257
btnRemoveLayer->setEnabled( false );
258258
btnLock->setEnabled( false );
259-
btnAddLayer->setEnabled( true );
260259
return;
261260
}
262261

@@ -267,7 +266,6 @@ void QgsSymbolV2SelectorDialog::updateUi()
267266
btnDown->setEnabled( currentRow < rowCount - 1 );
268267
btnRemoveLayer->setEnabled( rowCount > 1 );
269268
btnLock->setEnabled( true );
270-
btnAddLayer->setEnabled( false );
271269
}
272270

273271
void QgsSymbolV2SelectorDialog::updatePreview()
@@ -398,19 +396,22 @@ void QgsSymbolV2SelectorDialog::addLayer()
398396
if ( !idx.isValid() )
399397
return;
400398

399+
int insertIdx = -1;
401400
SymbolLayerItem *item = static_cast<SymbolLayerItem*>( model->itemFromIndex( idx ) );
402401
if ( item->isLayer() )
403402
{
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() );
406405
}
407406

408407
QgsSymbolV2* parentSymbol = item->symbol();
409408
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 );
412413
SymbolLayerItem *newLayerItem = new SymbolLayerItem( newLayer );
413-
item->insertRow( 0, newLayerItem );
414+
item->insertRow( insertIdx == -1 ? 0 : insertIdx, newLayerItem );
414415
item->updatePreview();
415416

416417
layersTree->setCurrentIndex( model->indexFromItem( newLayerItem ) );

0 commit comments

Comments
 (0)