Introduce hook for text cursor changes in QTextEdit and QPlainTextEdit
authorhjk <qthjk@ovi.com>
Tue, 28 Aug 2012 07:33:09 +0000 (09:33 +0200)
committerQt by Nokia <qt-info@nokia.com>
Sun, 2 Sep 2012 08:09:28 +0000 (10:09 +0200)
Currently it is hard for Q{Plain}TextEdit subclasses to keep track
of changes of the text cursor by direct calls to setTextCursor from
arbitrary code. By redirecting the setTextCursor to a virtual
function subclasses get the chance to intercept such calls.

Change-Id: Id92d9c86928b97285b0f5b7b39790442dfac3e50
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
src/widgets/widgets/qplaintextedit.cpp
src/widgets/widgets/qplaintextedit.h
src/widgets/widgets/qtextedit.cpp
src/widgets/widgets/qtextedit.h

index 423f9b3..a5e9e0d 100644 (file)
@@ -1314,6 +1314,17 @@ QTextDocument *QPlainTextEdit::document() const
 */
 void QPlainTextEdit::setTextCursor(const QTextCursor &cursor)
 {
+    doSetTextCursor(cursor);
+}
+
+/*!
+    \internal
+
+     This provides a hook for subclasses to intercept cursor changes.
+*/
+
+void QPlainTextEdit::doSetTextCursor(const QTextCursor &cursor)
+{
     Q_D(QPlainTextEdit);
     d->control->setTextCursor(cursor);
 }
index b7395d3..628e4a8 100644 (file)
@@ -254,6 +254,7 @@ protected:
     QPlainTextEdit(QPlainTextEditPrivate &dd, QWidget *parent);
 
     virtual void scrollContentsBy(int dx, int dy);
+    virtual void doSetTextCursor(const QTextCursor &cursor);
 
     QTextBlock firstVisibleBlock() const;
     QPointF contentOffset() const;
index 0ab76db..0b31c53 100644 (file)
@@ -757,6 +757,17 @@ QTextDocument *QTextEdit::document() const
 */
 void QTextEdit::setTextCursor(const QTextCursor &cursor)
 {
+    doSetTextCursor(cursor);
+}
+
+/*!
+    \internal
+
+     This provides a hook for subclasses to intercept cursor changes.
+*/
+
+void QTextEdit::doSetTextCursor(const QTextCursor &cursor)
+{
     Q_D(QTextEdit);
     d->control->setTextCursor(cursor);
 }
index ab0a5ae..e2c294c 100644 (file)
@@ -296,7 +296,7 @@ protected:
     QTextEdit(QTextEditPrivate &dd, QWidget *parent);
 
     virtual void scrollContentsBy(int dx, int dy);
-
+    virtual void doSetTextCursor(const QTextCursor &cursor);
 
 private:
     Q_DISABLE_COPY(QTextEdit)