Implement editable text interface for QLineEdit.
authorFrederik Gladhorn <frederik.gladhorn@digia.com>
Thu, 18 Oct 2012 14:59:08 +0000 (16:59 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Sat, 3 Nov 2012 18:24:00 +0000 (19:24 +0100)
This was uncovered by the linux accessibility test which
tried to call non-existing functions.

Change-Id: Iaa9640c23ee77d7c5b2321d7f8cfa6d12d61c0e9
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
src/plugins/accessible/widgets/simplewidgets.cpp
src/plugins/accessible/widgets/simplewidgets.h

index 9bdb1de..a45c199 100644 (file)
@@ -653,6 +653,8 @@ void *QAccessibleLineEdit::interface_cast(QAccessible::InterfaceType t)
 {
     if (t == QAccessible::TextInterface)
         return static_cast<QAccessibleTextInterface*>(this);
+    if (t == QAccessible::EditableTextInterface)
+        return static_cast<QAccessibleEditableTextInterface*>(this);
     return QAccessibleWidget::interface_cast(t);
 }
 
@@ -784,6 +786,21 @@ void QAccessibleLineEdit::scrollToSubstring(int startIndex, int endIndex)
     lineEdit()->setCursorPosition(startIndex);
 }
 
+void QAccessibleLineEdit::deleteText(int startOffset, int endOffset)
+{
+    lineEdit()->setText(lineEdit()->text().remove(startOffset, endOffset - startOffset));
+}
+
+void QAccessibleLineEdit::insertText(int offset, const QString &text)
+{
+    lineEdit()->setText(lineEdit()->text().insert(offset, text));
+}
+
+void QAccessibleLineEdit::replaceText(int startOffset, int endOffset, const QString &text)
+{
+    lineEdit()->setText(lineEdit()->text().replace(startOffset, endOffset - startOffset, text));
+}
+
 #endif // QT_NO_LINEEDIT
 
 #ifndef QT_NO_PROGRESSBAR
index 7891e13..2e1bca8 100644 (file)
@@ -137,7 +137,7 @@ private:
 #endif
 
 #ifndef QT_NO_LINEEDIT
-class QAccessibleLineEdit : public QAccessibleWidget, public QAccessibleTextInterface
+class QAccessibleLineEdit : public QAccessibleWidget, public QAccessibleTextInterface, public QAccessibleEditableTextInterface
 {
 public:
     explicit QAccessibleLineEdit(QWidget *o, const QString &name = QString());
@@ -168,6 +168,10 @@ public:
     int characterCount() const;
     void scrollToSubstring(int startIndex, int endIndex);
 
+    // QAccessibleEditableTextInterface
+    void deleteText(int startOffset, int endOffset);
+    void insertText(int offset, const QString &text);
+    void replaceText(int startOffset, int endOffset, const QString &text);
 protected:
     QLineEdit *lineEdit() const;
 };