From b921d14dbf96ade47bccc23197f0f904d03b93ad Mon Sep 17 00:00:00 2001 From: "G.K.MacGregor" Date: Thu, 9 Sep 2021 17:18:15 +0100 Subject: [PATCH] Add missing optimisation when deleting triplet --- x26commands.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/x26commands.cpp b/x26commands.cpp index fca6a11..4c56e5c 100644 --- a/x26commands.cpp +++ b/x26commands.cpp @@ -127,13 +127,19 @@ DeleteTripletCommand::DeleteTripletCommand(TeletextDocument *teletextDocument, X void DeleteTripletCommand::redo() { - m_teletextDocument->emit aboutToChangeSubPage(); - m_teletextDocument->selectSubPageIndex(m_subPageIndex); + bool changingSubPage = (m_teletextDocument->currentSubPageIndex() != m_subPageIndex); + + if (changingSubPage) { + m_teletextDocument->emit aboutToChangeSubPage(); + m_teletextDocument->selectSubPageIndex(m_subPageIndex); + } else + m_x26Model->beginRemoveRows(QModelIndex(), m_row, m_row+m_count-1); - m_x26Model->beginRemoveRows(QModelIndex(), m_row, m_row+m_count-1); for (int i=0; icurrentSubPage()->enhancements()->removeAt(m_row); - m_x26Model->endRemoveRows(); + + if (!changingSubPage) + m_x26Model->endRemoveRows(); // Preserve pointers to local object definitions that have moved for (int i=0; icurrentSubPage()->enhancements()->size(); i++) { @@ -146,7 +152,10 @@ void DeleteTripletCommand::redo() } } - m_teletextDocument->emit subPageSelected(); + if (changingSubPage) + m_teletextDocument->emit subPageSelected(); + else + m_teletextDocument->emit refreshNeeded(); } void DeleteTripletCommand::undo()