Don't eat Back button in TextEdit
authorPaul Olav Tvete <paul.tvete@digia.com>
Fri, 26 Apr 2013 15:25:57 +0000 (17:25 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 30 Apr 2013 13:15:30 +0000 (15:15 +0200)
On Android, Key_Back is used to change to the previous state in-app,
as well as to exit the application. QTextControl does not react to the
back button, so it should not accept the event.

Task-number: QTBUG-30752
Change-Id: I010d36c93f14384b96fb0b2f0015c57a2a3d2497
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
src/quick/items/qquicktextcontrol.cpp
src/quick/items/qquicktextcontrol_p_p.h

index 9625aa5..d0c4aad 100644 (file)
@@ -698,6 +698,9 @@ void QQuickTextControl::processEvent(QEvent *e, const QMatrix &matrix)
         case QEvent::KeyPress:
             d->keyPressEvent(static_cast<QKeyEvent *>(e));
             break;
+        case QEvent::KeyRelease:
+            d->keyReleaseEvent(static_cast<QKeyEvent *>(e));
+            break;
         case QEvent::MouseButtonPress: {
             QMouseEvent *ev = static_cast<QMouseEvent *>(e);
             d->mousePressEvent(ev, matrix.map(ev->localPos()));
@@ -809,9 +812,25 @@ void QQuickTextControl::setHtml(const QString &text)
     d->setContent(Qt::RichText, text);
 }
 
+
+void QQuickTextControlPrivate::keyReleaseEvent(QKeyEvent *e)
+{
+    if (e->key() == Qt::Key_Back) {
+         e->ignore();
+         return;
+    }
+    return;
+}
+
 void QQuickTextControlPrivate::keyPressEvent(QKeyEvent *e)
 {
     Q_Q(QQuickTextControl);
+
+    if (e->key() == Qt::Key_Back) {
+         e->ignore();
+         return;
+    }
+
 #ifndef QT_NO_SHORTCUT
     if (e == QKeySequence::SelectAll) {
             e->accept();
index fbb88bd..da76de8 100644 (file)
@@ -108,6 +108,7 @@ public:
     QRectF rectForPosition(int position) const;
 
     void keyPressEvent(QKeyEvent *e);
+    void keyReleaseEvent(QKeyEvent *e);
     void mousePressEvent(QMouseEvent *event, const QPointF &pos);
     void mouseMoveEvent(QMouseEvent *event, const QPointF &pos);
     void mouseReleaseEvent(QMouseEvent *event, const QPointF &pos);