@@ -1488,7 +1488,10 @@ void QgsLegend::handleItemChange(QTreeWidgetItem* item, int row)
1488
1488
}
1489
1489
}
1490
1490
mStateOfCheckBoxes [item] = item->checkState (0 );
1491
- mMapCanvas ->setRenderFlag (true );
1491
+ // Setting the renderFlag to true will trigger a render,
1492
+ // so only do this if the flag is alread set to true.
1493
+ if (mMapCanvas ->renderFlag ())
1494
+ mMapCanvas ->setRenderFlag (true );
1492
1495
return ;
1493
1496
}
1494
1497
@@ -1498,6 +1501,7 @@ void QgsLegend::handleItemChange(QTreeWidgetItem* item, int row)
1498
1501
{
1499
1502
// set all the child layer files to the new check state
1500
1503
subfiles = lg->legendLayerFiles ();
1504
+ bool renderFlagState = mMapCanvas ->renderFlag ();
1501
1505
mMapCanvas ->setRenderFlag (false );
1502
1506
for (std::list<QgsLegendLayerFile*>::iterator iter = subfiles.begin (); iter != subfiles.end (); ++iter)
1503
1507
{
@@ -1531,7 +1535,10 @@ void QgsLegend::handleItemChange(QTreeWidgetItem* item, int row)
1531
1535
static_cast <QgsLegendLayer*>(lg->child (i))->updateCheckState ();
1532
1536
mStateOfCheckBoxes [lg->child (i)] = lg->child (i)->checkState (0 );
1533
1537
}
1534
- mMapCanvas ->setRenderFlag (true );
1538
+ // If it was on, turn it back on, otherwise leave it
1539
+ // off, as turning it on causes a refresh.
1540
+ if (renderFlagState)
1541
+ mMapCanvas ->setRenderFlag (true );
1535
1542
mStateOfCheckBoxes [item] = item->checkState (0 );
1536
1543
return ;
1537
1544
}
@@ -1541,6 +1548,7 @@ void QgsLegend::handleItemChange(QTreeWidgetItem* item, int row)
1541
1548
{
1542
1549
// set all the child layer files to the new check state
1543
1550
subfiles = ll->legendLayerFiles ();
1551
+ bool renderFlagState = mMapCanvas ->renderFlag ();
1544
1552
mMapCanvas ->setRenderFlag (false );
1545
1553
for (std::list<QgsLegendLayerFile*>::iterator iter = subfiles.begin (); iter != subfiles.end (); ++iter)
1546
1554
{
@@ -1558,7 +1566,10 @@ void QgsLegend::handleItemChange(QTreeWidgetItem* item, int row)
1558
1566
static_cast <QgsLegendGroup*>(ll->parent ())->updateCheckState ();
1559
1567
mStateOfCheckBoxes [ll->parent ()] = ll->parent ()->checkState (0 );
1560
1568
}
1561
- mMapCanvas ->setRenderFlag (true );
1569
+ // If it was on, turn it back on, otherwise leave it
1570
+ // off, as turning it on causes a refresh.
1571
+ if (renderFlagState)
1572
+ mMapCanvas ->setRenderFlag (true );
1562
1573
// update check state of the legend group
1563
1574
}
1564
1575
mStateOfCheckBoxes [item] = item->checkState (0 );
0 commit comments