aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquicktextedit_p_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/qquicktextedit_p_p.h')
-rw-r--r--src/quick/items/qquicktextedit_p_p.h38
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