diff options
author | Pierre Rossi <pierre.rossi@digia.com> | 2013-03-18 16:25:59 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-03-20 08:31:56 +0100 |
commit | f513e88403b66c4a5efe4c62c160dfce151efb33 (patch) | |
tree | f091c015be4781a9d65bb702c4263cd09cd6adb0 /src/quick/items/qquicktextedit_p.h | |
parent | 471645f6dba6a21b85cb6788f0a0a07b6d5a804a (diff) |
Optimize QQuickTextEdit for larger documents.
The rationale is to not end up re-processing the whole document on each update
Since we know where the editing takes place, we can break down the text edit's
contents in several text nodes and only re-create the affected text nodes upon
editing.
This requires ripping out the SelectionEngine helper class from QQuickTextNode
so that QQuickTextEdit can tap into its functionality directly.
A positive side-effect of this exercise is that it should be much harder to
to come across GlyphNodes packing more than 16300 glyphs or so.
Task-number: QTBUG-29596
Change-Id: Id29b0709baa43f5b29c44ab02398ba996be3e28a
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Diffstat (limited to 'src/quick/items/qquicktextedit_p.h')
-rw-r--r-- | src/quick/items/qquicktextedit_p.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/quick/items/qquicktextedit_p.h b/src/quick/items/qquicktextedit_p.h index 8a2d9b1e92..4e09eafcac 100644 --- a/src/quick/items/qquicktextedit_p.h +++ b/src/quick/items/qquicktextedit_p.h @@ -313,17 +313,19 @@ public Q_SLOTS: private Q_SLOTS: void q_textChanged(); - void updateSelectionMarkers(); + void q_contentsChange(int, int, int); + void updateSelection(); void moveCursorDelegate(); void createCursor(); void q_canPasteChanged(); - void updateDocument(); + void updateWholeDocument(); void updateCursor(); void q_updateAlignment(); void updateSize(); void triggerPreprocess(); private: + void markDirtyNodesForRange(int start, int end, int charDelta); void updateTotalLines(); protected: |