QQuickTextControl: emit cursorPositionChanged() only if it changed
authorJ-P Nurmi <jpnurmi@digia.com>
Mon, 13 May 2013 16:14:34 +0000 (18:14 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Wed, 22 May 2013 10:39:38 +0000 (12:39 +0200)
Change-Id: Id6fe03677e93119a63bfe87ade3cd333bf4890a1
Reviewed-by: Caroline Chao <caroline.chao@digia.com>
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
src/quick/items/qquicktextcontrol.cpp

index d0c4aad..e22c848 100644 (file)
@@ -298,6 +298,8 @@ void QQuickTextControlPrivate::setContent(Qt::TextFormat format, const QString &
     bool previousUndoRedoState = doc->isUndoRedoEnabled();
     doc->setUndoRedoEnabled(false);
 
+    const int oldCursorPos = cursor.position();
+
     // avoid multiple textChanged() signals being emitted
     qmlobject_disconnect(doc, QTextDocument, SIGNAL(contentsChanged()), q, QQuickTextControl, SIGNAL(textChanged()));
 
@@ -341,7 +343,8 @@ void QQuickTextControlPrivate::setContent(Qt::TextFormat format, const QString &
     doc->setModified(false);
 
     q->updateCursorRectangle(true);
-    emit q->cursorPositionChanged();
+    if (cursor.position() != oldCursorPos)
+        emit q->cursorPositionChanged();
 }
 
 void QQuickTextControlPrivate::setCursorPosition(const QPointF &pos)