From 5bd55890facc4e684669c7eec6970c8895e4fffa Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Thu, 18 Oct 2012 16:59:08 +0200 Subject: Implement editable text interface for QLineEdit. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This was uncovered by the linux accessibility test which tried to call non-existing functions. Change-Id: Iaa9640c23ee77d7c5b2321d7f8cfa6d12d61c0e9 Reviewed-by: Jan Arve Sæther --- src/plugins/accessible/widgets/simplewidgets.cpp | 17 +++++++++++++++++ src/plugins/accessible/widgets/simplewidgets.h | 6 +++++- 2 files changed, 22 insertions(+), 1 deletion(-) (limited to 'src/plugins') diff --git a/src/plugins/accessible/widgets/simplewidgets.cpp b/src/plugins/accessible/widgets/simplewidgets.cpp index 9bdb1decde..a45c199419 100644 --- a/src/plugins/accessible/widgets/simplewidgets.cpp +++ b/src/plugins/accessible/widgets/simplewidgets.cpp @@ -653,6 +653,8 @@ void *QAccessibleLineEdit::interface_cast(QAccessible::InterfaceType t) { if (t == QAccessible::TextInterface) return static_cast(this); + if (t == QAccessible::EditableTextInterface) + return static_cast(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 diff --git a/src/plugins/accessible/widgets/simplewidgets.h b/src/plugins/accessible/widgets/simplewidgets.h index 7891e13c20..2e1bca88b4 100644 --- a/src/plugins/accessible/widgets/simplewidgets.h +++ b/src/plugins/accessible/widgets/simplewidgets.h @@ -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; }; -- cgit v1.2.3