From 900c2a79b27dd11c675fc1efaf4c05b703b6487a Mon Sep 17 00:00:00 2001 From: Gavin MacGregor Date: Sun, 8 Dec 2024 14:08:13 +0000 Subject: [PATCH] Separate finding of mosaics within selection --- src/qteletextmaker/mainwidget.cpp | 17 ++++++++++++----- src/qteletextmaker/mainwidget.h | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/qteletextmaker/mainwidget.cpp b/src/qteletextmaker/mainwidget.cpp index b304250..0d4eb6a 100644 --- a/src/qteletextmaker/mainwidget.cpp +++ b/src/qteletextmaker/mainwidget.cpp @@ -391,17 +391,24 @@ void TeletextWidget::toggleCharacterBit(unsigned char bitToToggle) m_teletextDocument->undoStack()->push(new ToggleMosaicBitCommand(m_teletextDocument, bitToToggle)); } -void TeletextWidget::shiftMosaics(int key) +QSet> TeletextWidget::findMosaics() { - if (!m_teletextDocument->selectionActive()) - return; + QSet> result; - QSet> mosaicList; + if (!m_teletextDocument->selectionActive()) + return result; for (int r=m_teletextDocument->selectionTopRow(); r<=m_teletextDocument->selectionBottomRow(); r++) for (int c=m_teletextDocument->selectionLeftColumn(); c<=m_teletextDocument->selectionRightColumn(); c++) if (m_pageDecode.level1MosaicChar(r, c)) - mosaicList.insert(qMakePair(r, c)); + result.insert(qMakePair(r, c)); + + return result; +} + +void TeletextWidget::shiftMosaics(int key) +{ + const QSet> mosaicList = findMosaics(); if (!mosaicList.isEmpty()) switch (key) { diff --git a/src/qteletextmaker/mainwidget.h b/src/qteletextmaker/mainwidget.h index 7538f33..a731642 100644 --- a/src/qteletextmaker/mainwidget.h +++ b/src/qteletextmaker/mainwidget.h @@ -102,6 +102,7 @@ private: int m_flashTiming, m_flashPhase; void timerEvent(QTimerEvent *event) override; + QSet> findMosaics(); void shiftMosaics(int key); void selectionToClipboard();