Skip to content

Commit cec5c94

Browse files
author
g_j_m
committed
Fix for bug whereby toggling layers on/off using the toggles in the
menu wouldn't rexpect the globabl 'render' toggle setting. Compliments closed ticket #149. git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@5704 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent b2ce7e9 commit cec5c94

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/legend/qgslegend.cpp

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1488,7 +1488,10 @@ void QgsLegend::handleItemChange(QTreeWidgetItem* item, int row)
14881488
}
14891489
}
14901490
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);
14921495
return;
14931496
}
14941497

@@ -1498,6 +1501,7 @@ void QgsLegend::handleItemChange(QTreeWidgetItem* item, int row)
14981501
{
14991502
//set all the child layer files to the new check state
15001503
subfiles = lg->legendLayerFiles();
1504+
bool renderFlagState = mMapCanvas->renderFlag();
15011505
mMapCanvas->setRenderFlag(false);
15021506
for(std::list<QgsLegendLayerFile*>::iterator iter = subfiles.begin(); iter != subfiles.end(); ++iter)
15031507
{
@@ -1531,7 +1535,10 @@ void QgsLegend::handleItemChange(QTreeWidgetItem* item, int row)
15311535
static_cast<QgsLegendLayer*>(lg->child(i))->updateCheckState();
15321536
mStateOfCheckBoxes[lg->child(i)] = lg->child(i)->checkState(0);
15331537
}
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);
15351542
mStateOfCheckBoxes[item] = item->checkState(0);
15361543
return;
15371544
}
@@ -1541,6 +1548,7 @@ void QgsLegend::handleItemChange(QTreeWidgetItem* item, int row)
15411548
{
15421549
//set all the child layer files to the new check state
15431550
subfiles = ll->legendLayerFiles();
1551+
bool renderFlagState = mMapCanvas->renderFlag();
15441552
mMapCanvas->setRenderFlag(false);
15451553
for(std::list<QgsLegendLayerFile*>::iterator iter = subfiles.begin(); iter != subfiles.end(); ++iter)
15461554
{
@@ -1558,7 +1566,10 @@ void QgsLegend::handleItemChange(QTreeWidgetItem* item, int row)
15581566
static_cast<QgsLegendGroup*>(ll->parent())->updateCheckState();
15591567
mStateOfCheckBoxes[ll->parent()] = ll->parent()->checkState(0);
15601568
}
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);
15621573
//update check state of the legend group
15631574
}
15641575
mStateOfCheckBoxes[item] = item->checkState(0);

0 commit comments

Comments
 (0)