Fix #11126 (Make up/down buttons work also for layer tree nodes)

This commit is contained in:
Martin Dobias 2014-09-05 17:39:11 +07:00
parent e2f1ceb741
commit 854730bb59

View File

@ -516,14 +516,24 @@ void QgsComposerLegendWidget::on_mMoveDownToolButton_clicked()
if ( !index.isValid() || index.row() == mItemTreeView->model()->rowCount( parentIndex ) - 1 )
return;
QgsLayerTreeNode* node = mItemTreeView->layerTreeModel()->index2node( index );
QgsLayerTreeModelLegendNode* legendNode = mItemTreeView->layerTreeModel()->index2symnode( index );
if ( !legendNode )
if ( !node && !legendNode )
return;
mLegend->beginCommand( "Moved legend item down" );
_moveLegendNode( legendNode->parent(), index.row(), 1 );
mItemTreeView->layerTreeModel()->refreshLayerSymbology( legendNode->parent() );
if ( node )
{
QgsLayerTreeGroup* parentGroup = QgsLayerTree::toGroup( node->parent() );
parentGroup->insertChildNode( index.row() + 2, node->clone() );
parentGroup->removeChildNode( node );
}
else // legend node
{
_moveLegendNode( legendNode->parent(), index.row(), 1 );
mItemTreeView->layerTreeModel()->refreshLayerSymbology( legendNode->parent() );
}
mItemTreeView->setCurrentIndex( mItemTreeView->layerTreeModel()->index( index.row() + 1, 0, parentIndex ) );
@ -543,14 +553,24 @@ void QgsComposerLegendWidget::on_mMoveUpToolButton_clicked()
if ( !index.isValid() || index.row() == 0 )
return;
QgsLayerTreeNode* node = mItemTreeView->layerTreeModel()->index2node( index );
QgsLayerTreeModelLegendNode* legendNode = mItemTreeView->layerTreeModel()->index2symnode( index );
if ( !legendNode )
if ( !node && !legendNode )
return;
mLegend->beginCommand( "Moved legend item up" );
_moveLegendNode( legendNode->parent(), index.row(), -1 );
mItemTreeView->layerTreeModel()->refreshLayerSymbology( legendNode->parent() );
if ( node )
{
QgsLayerTreeGroup* parentGroup = QgsLayerTree::toGroup( node->parent() );
parentGroup->insertChildNode( index.row() - 1, node->clone() );
parentGroup->removeChildNode( node );
}
else // legend node
{
_moveLegendNode( legendNode->parent(), index.row(), -1 );
mItemTreeView->layerTreeModel()->refreshLayerSymbology( legendNode->parent() );
}
mItemTreeView->setCurrentIndex( mItemTreeView->layerTreeModel()->index( index.row() - 1, 0, parentIndex ) );