diff --git a/autotests/modeltest.cpp b/autotests/modeltest.cpp index 06a493812..c9632b48b 100644 --- a/autotests/modeltest.cpp +++ b/autotests/modeltest.cpp @@ -212,10 +212,8 @@ void ModelTest::testLineModel() auto model = new LineModel(); auto tester = new QAbstractItemModelTester(model); tester->setUseFetchMore(true); - auto quickDocument = new QQuickTextDocument(new QQuickItem()); auto document = new QTextDocument(); - quickDocument->setTextDocument(document); - model->setDocument(quickDocument); + model->setDocument(document); document->setPlainText(u"foo\nbar\n\nbaz"_s); } diff --git a/src/app/qml/CodeMaximizeComponent.qml b/src/app/qml/CodeMaximizeComponent.qml index e59f39d4f..1381622e1 100644 --- a/src/app/qml/CodeMaximizeComponent.qml +++ b/src/app/qml/CodeMaximizeComponent.qml @@ -116,7 +116,7 @@ Components.AbstractMaximizeComponent { id: repeater model: LineModel { id: lineModel - document: codeText.textDocument + Component.onCompleted: setDocument(codeText.textDocument) } delegate: QQC2.Label { id: label diff --git a/src/app/qml/EditStateDialog.qml b/src/app/qml/EditStateDialog.qml index 894b9acbf..e75e7d1c4 100644 --- a/src/app/qml/EditStateDialog.qml +++ b/src/app/qml/EditStateDialog.qml @@ -85,7 +85,7 @@ Kirigami.Page { id: repeater model: LineModel { id: lineModel - document: sourceTextArea.textDocument + Component.onCompleted: setDocument(sourceTextArea.textDocument) } delegate: QQC2.Label { id: label diff --git a/src/app/qml/MessageSourceSheet.qml b/src/app/qml/MessageSourceSheet.qml index 1652bf23c..50487f0fb 100644 --- a/src/app/qml/MessageSourceSheet.qml +++ b/src/app/qml/MessageSourceSheet.qml @@ -103,7 +103,7 @@ Kirigami.Page { id: repeater model: LineModel { id: lineModel - document: sourceTextArea.textDocument + Component.onCompleted: setDocument(sourceTextArea.textDocument) } delegate: QQC2.Label { id: label diff --git a/src/messagecontent/CodeComponent.qml b/src/messagecontent/CodeComponent.qml index e595be491..15cdf76db 100644 --- a/src/messagecontent/CodeComponent.qml +++ b/src/messagecontent/CodeComponent.qml @@ -104,7 +104,7 @@ QQC2.Control { id: repeater model: LineModel { id: lineModel - document: codeText.textDocument + Component.onCompleted: setDocument(codeText.textDocument) } delegate: QQC2.Label { id: label diff --git a/src/messagecontent/models/linemodel.cpp b/src/messagecontent/models/linemodel.cpp index cc1c7439a..7f499421e 100644 --- a/src/messagecontent/models/linemodel.cpp +++ b/src/messagecontent/models/linemodel.cpp @@ -8,12 +8,7 @@ LineModel::LineModel(QObject *parent) { } -QQuickTextDocument *LineModel::document() const -{ - return m_document; -} - -void LineModel::setDocument(QQuickTextDocument *document) +void LineModel::setDocument(QTextDocument *document) { if (document == m_document) { return; @@ -25,6 +20,11 @@ void LineModel::setDocument(QQuickTextDocument *document) resetModel(); } +void LineModel::setDocument(QQuickTextDocument *document) +{ + setDocument(document->textDocument()); +} + QVariant LineModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) { @@ -37,8 +37,7 @@ QVariant LineModel::data(const QModelIndex &index, int role) const } if (role == LineHeightRole) { - auto textDoc = m_document->textDocument(); - return int(textDoc->documentLayout()->blockBoundingRect(textDoc->findBlockByNumber(row)).height()); + return int(m_document->documentLayout()->blockBoundingRect(m_document->findBlockByNumber(row)).height()); } return {}; } @@ -49,7 +48,7 @@ int LineModel::rowCount(const QModelIndex &parent) const if (m_document == nullptr) { return 0; } - return m_document->textDocument()->blockCount(); + return m_document->blockCount(); } QHash LineModel::roleNames() const diff --git a/src/messagecontent/models/linemodel.h b/src/messagecontent/models/linemodel.h index a8d5997e1..72f26fd0f 100644 --- a/src/messagecontent/models/linemodel.h +++ b/src/messagecontent/models/linemodel.h @@ -8,7 +8,7 @@ #include #include #include -#include +#include /** * @class LineModel @@ -22,11 +22,6 @@ class LineModel : public QAbstractListModel Q_OBJECT QML_ELEMENT - /** - * @brief The QQuickTextDocument that is being handled. - */ - Q_PROPERTY(QQuickTextDocument *document READ document WRITE setDocument NOTIFY documentChanged) - public: /** * @brief Defines the model roles. @@ -38,8 +33,8 @@ public: explicit LineModel(QObject *parent = nullptr); - [[nodiscard]] QQuickTextDocument *document() const; - void setDocument(QQuickTextDocument *document); + void setDocument(QTextDocument *document); + Q_INVOKABLE void setDocument(QQuickTextDocument *document); /** * @brief Get the given role value at the given index. @@ -76,5 +71,5 @@ Q_SIGNALS: void documentChanged(); private: - QPointer m_document = nullptr; + QPointer m_document = nullptr; };