Skip to content

Commit fdc0f75

Browse files
committed
Fix redoing group visibility creates multiple new undo commands
1 parent 30eab10 commit fdc0f75

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/core/layout/qgslayoutitemgroup.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,14 @@ void QgsLayoutItemGroup::setVisibility( const bool visible )
115115
{
116116
if ( !item )
117117
continue;
118+
bool prev = item->mBlockUndoCommands;
119+
item->mBlockUndoCommands = mBlockUndoCommands;
118120
item->setVisibility( visible );
121+
item->mBlockUndoCommands = prev;
119122
}
120123
//lastly set visibility for group item itself
121124
QgsLayoutItem::setVisibility( visible );
125+
122126
if ( !shouldBlockUndoCommands() )
123127
mLayout->undoStack()->endMacro();
124128
}

tests/src/core/testqgslayoutitemgroup.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,23 @@ void TestQgsLayoutItemGroup::groupVisibility()
301301
QVERIFY( item->isVisible() );
302302
QVERIFY( item2->isVisible() );
303303
QVERIFY( group->isVisible() );
304+
305+
l.undoStack()->stack()->undo();
306+
QVERIFY( !item->isVisible() );
307+
QVERIFY( !item2->isVisible() );
308+
QVERIFY( !group->isVisible() );
309+
l.undoStack()->stack()->undo();
310+
QVERIFY( item->isVisible() );
311+
QVERIFY( item2->isVisible() );
312+
QVERIFY( group->isVisible() );
313+
l.undoStack()->stack()->redo();
314+
QVERIFY( !item->isVisible() );
315+
QVERIFY( !item2->isVisible() );
316+
QVERIFY( !group->isVisible() );
317+
l.undoStack()->stack()->redo();
318+
QVERIFY( item->isVisible() );
319+
QVERIFY( item2->isVisible() );
320+
QVERIFY( group->isVisible() );
304321
}
305322

306323
void TestQgsLayoutItemGroup::moveGroup()

0 commit comments

Comments
 (0)