aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquicktextedit_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/qquicktextedit_p.h')
-rw-r--r--src/quick/items/qquicktextedit_p.h95
1 files changed, 51 insertions, 44 deletions
diff --git a/src/quick/items/qquicktextedit_p.h b/src/quick/items/qquicktextedit_p.h
index 41245f904e..ef09457327 100644
--- a/src/quick/items/qquicktextedit_p.h
+++ b/src/quick/items/qquicktextedit_p.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QQUICKTEXTEDIT_P_H
#define QQUICKTEXTEDIT_P_H
@@ -52,18 +16,30 @@
//
#include "qquickimplicitsizeitem_p.h"
+#include "qquicktextinterface_p.h"
#include <QtGui/qtextoption.h>
QT_BEGIN_NAMESPACE
+class QTextDocument;
class QQuickTextDocument;
class QQuickTextEditPrivate;
+class QQuickTextSelection;
class QTextBlock;
-class Q_QUICK_PRIVATE_EXPORT QQuickTextEdit : public QQuickImplicitSizeItem
+class QQuickTextBlockForeign
+{
+ Q_GADGET
+ QML_ANONYMOUS
+ QML_FOREIGN(QTextBlock)
+ QML_EXTENDED(QQuickTextBlockForeign)
+};
+
+class Q_QUICK_EXPORT QQuickTextEdit : public QQuickImplicitSizeItem, public QQuickTextInterface
{
Q_OBJECT
+ Q_INTERFACES(QQuickTextInterface)
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
@@ -112,11 +88,15 @@ class Q_QUICK_PRIVATE_EXPORT QQuickTextEdit : public QQuickImplicitSizeItem
Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET resetBottomPadding NOTIFY bottomPaddingChanged REVISION(2, 6))
Q_PROPERTY(QString preeditText READ preeditText NOTIFY preeditTextChanged REVISION(2, 7))
Q_PROPERTY(qreal tabStopDistance READ tabStopDistance WRITE setTabStopDistance NOTIFY tabStopDistanceChanged REVISION(2, 10))
+ Q_PROPERTY(QQuickTextSelection* cursorSelection READ cursorSelection REVISION(6, 7) CONSTANT FINAL)
QML_NAMED_ELEMENT(TextEdit)
- QML_ADDED_IN_VERSION(2, 0)
+#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
+ QML_ADDED_IN_VERSION(6, 4)
+#endif
public:
QQuickTextEdit(QQuickItem *parent=nullptr);
+ ~QQuickTextEdit() override;
enum HAlignment {
AlignLeft = Qt::AlignLeft,
@@ -156,7 +136,8 @@ public:
Q_ENUM(SelectionMode)
enum RenderType { QtRendering,
- NativeRendering
+ NativeRendering,
+ CurveRendering
};
Q_ENUM(RenderType)
@@ -240,6 +221,8 @@ public:
void componentComplete() override;
+ int resourcesLoading() const; // mainly for testing
+
/* FROM EDIT */
void setReadOnly(bool);
bool isReadOnly() const;
@@ -263,6 +246,8 @@ public:
Q_INVOKABLE void moveCursorSelection(int pos);
Q_INVOKABLE void moveCursorSelection(int pos, SelectionMode mode);
+ QQuickTextSelection *cursorSelection() const;
+
QRectF boundingRect() const override;
QRectF clipRect() const override;
@@ -303,6 +288,8 @@ public:
int tabStopDistance() const;
void setTabStopDistance(qreal distance);
+ void invalidate() override;
+
Q_SIGNALS:
void textChanged();
Q_REVISION(2, 7) void preeditTextChanged();
@@ -368,6 +355,7 @@ public Q_SLOTS:
Q_REVISION(2, 7) void clear();
private Q_SLOTS:
+ void q_invalidate();
void q_textChanged();
void q_contentsChange(int, int, int);
void updateSelection();
@@ -382,16 +370,24 @@ private Q_SLOTS:
void q_updateAlignment();
void updateSize();
void triggerPreprocess();
+ Q_REVISION(6, 7) QVariant loadResource(int type, const QUrl &source);
+ void resourceRequestFinished();
private:
void markDirtyNodesForRange(int start, int end, int charDelta);
void updateTotalLines();
void invalidateFontCaches();
+ QTextDocument* document() const;
+ void setDocument(QTextDocument *doc);
protected:
QQuickTextEdit(QQuickTextEditPrivate &dd, QQuickItem *parent = nullptr);
+#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
+ void setOldSelectionDefault();
+#endif
void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void itemChange(ItemChange change, const ItemChangeData &value) override;
bool event(QEvent *) override;
void keyPressEvent(QKeyEvent *) override;
@@ -415,15 +411,26 @@ protected:
void updatePolish() override;
friend class QQuickTextUtil;
- friend class QQuickTextDocument;
+ friend class QQuickTextDocumentPrivate;
private:
Q_DISABLE_COPY(QQuickTextEdit)
Q_DECLARE_PRIVATE(QQuickTextEdit)
};
-QT_END_NAMESPACE
+#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
+class QQuickPre64TextEdit : public QQuickTextEdit {
+ Q_OBJECT
+ QML_NAMED_ELEMENT(TextEdit)
+ QML_ADDED_IN_VERSION(2, 0)
+ QML_REMOVED_IN_VERSION(6, 4)
+public:
+ QQuickPre64TextEdit(QQuickItem *parent = nullptr);
+};
+#endif
-QML_DECLARE_TYPE(QQuickTextEdit)
+Q_DECLARE_MIXED_ENUM_OPERATORS_SYMMETRIC(int, QQuickTextEdit::HAlignment, QQuickTextEdit::VAlignment)
+
+QT_END_NAMESPACE
#endif // QQUICKTEXTEDIT_P_H