diff options
Diffstat (limited to 'src/quick/items/qquicktextedit_p_p.h')
-rw-r--r-- | src/quick/items/qquicktextedit_p_p.h | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/src/quick/items/qquicktextedit_p_p.h b/src/quick/items/qquicktextedit_p_p.h index 597874d864..feb7e98873 100644 --- a/src/quick/items/qquicktextedit_p_p.h +++ b/src/quick/items/qquicktextedit_p_p.h @@ -58,11 +58,14 @@ #include "qquicktextcontrol_p.h" #include <QtQml/qqml.h> +#include <QtCore/qlist.h> QT_BEGIN_NAMESPACE class QTextLayout; class QQuickTextDocumentWithImageResources; class QQuickTextControl; +class QQuickTextNode; +class QSGSimpleRectNode; class QQuickTextEditPrivate : public QQuickImplicitSizeItemPrivate { public: @@ -70,9 +73,26 @@ public: typedef QQuickTextEdit Public; + struct Node { + explicit Node(int startPos, QQuickTextNode* node) + : m_startPos(startPos), m_node(node), m_dirty(false) { } + QQuickTextNode* textNode() const { return m_node; } + void moveStartPos(int delta) { Q_ASSERT(m_startPos + delta > 0); m_startPos += delta; } + int startPos() const { return m_startPos; } + void setDirty() { m_dirty = true; } + bool dirty() const { return m_dirty; } + + private: + int m_startPos; + QQuickTextNode* m_node; + bool m_dirty; + }; + + QQuickTextEditPrivate() : color(QRgb(0xFF000000)), selectionColor(QRgb(0xFF000080)), selectedTextColor(QRgb(0xFFFFFFFF)) , textMargin(0.0), xoff(0), yoff(0), font(sourceFont), cursorComponent(0), cursorItem(0), document(0), control(0) + , quickDocument(0), frameDecorationsNode(0), cursorNode(0) , lastSelectionStart(0), lastSelectionEnd(0), lineCount(0) , hAlign(QQuickTextEdit::AlignLeft), vAlign(QQuickTextEdit::AlignTop) , format(QQuickTextEdit::PlainText), wrapMode(QQuickTextEdit::NoWrap) @@ -83,10 +103,11 @@ public: , inputMethodHints(Qt::ImhNone) #endif , updateType(UpdatePaintNode) - , documentDirty(true), dirty(false), richText(false), cursorVisible(false), cursorPending(false) + , dirty(false), richText(false), cursorVisible(false), cursorPending(false) , focusOnPress(true), persistentSelection(false), requireImplicitWidth(false) , selectByMouse(false), canPaste(false), canPasteValid(false), hAlignImplicit(true) - , textCached(true), inLayout(false) + , textCached(true), inLayout(false), selectByKeyboard(false), selectByKeyboardSet(false) + , hadSelection(false) { } @@ -104,6 +125,11 @@ public: Qt::LayoutDirection textDirection(const QString &text) const; void setNativeCursorEnabled(bool enabled) { control->setCursorWidth(enabled ? 1 : 0); } + void handleFocusEvent(QFocusEvent *event); + +#ifndef QT_NO_IM + Qt::InputMethodHints effectiveInputMethodHints() const; +#endif QColor color; QColor selectionColor; @@ -124,6 +150,10 @@ public: QQuickItem* cursorItem; QQuickTextDocumentWithImageResources *document; QQuickTextControl *control; + QQuickTextDocument *quickDocument; + QList<Node*> textNodeMap; + QQuickTextNode *frameDecorationsNode; + QSGSimpleRectNode *cursorNode; int lastSelectionStart; int lastSelectionEnd; @@ -147,7 +177,6 @@ public: #endif UpdateType updateType; - bool documentDirty : 1; bool dirty : 1; bool richText : 1; bool cursorVisible : 1; @@ -161,6 +190,9 @@ public: bool hAlignImplicit:1; bool textCached:1; bool inLayout:1; + bool selectByKeyboard:1; + bool selectByKeyboardSet:1; + bool hadSelection : 1; }; QT_END_NAMESPACE |