summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.cpp15
-rw-r--r--tests/auto/other/qaccessibility/tst_qaccessibility.cpp6
2 files changed, 17 insertions, 4 deletions
diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
index 2d6330cb38..140848a559 100644
--- a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
+++ b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
@@ -87,7 +87,7 @@ QList<QWidget*> childWidgets(const QWidget *widget, bool includeTopLevel)
if (!w)
continue;
QString objectName = w->objectName();
- if ((includeTopLevel || !w->isWindow())
+ if ((includeTopLevel || !w->isWindow())
&& !qobject_cast<QFocusFrame*>(w)
&& !qobject_cast<QMenu*>(w)
&& objectName != QLatin1String("qt_rubberband")
@@ -483,12 +483,17 @@ static QTextCursor cursorForRange(QTextEdit *textEdit, int startOffset, int endO
void QAccessibleTextEdit::copyText(int startOffset, int endOffset) const
{
+#ifndef QT_NO_CLIPBOARD
+ QTextCursor previousCursor = textEdit()->textCursor();
QTextCursor cursor = cursorForRange(textEdit(), startOffset, endOffset);
if (!cursor.hasSelection())
return;
-// QApplication::clipboard()->setMimeData(new QTextEditMimeData(cursor.selection()));
+ textEdit()->setTextCursor(cursor);
+ textEdit()->copy();
+ textEdit()->setTextCursor(previousCursor);
+#endif
}
void QAccessibleTextEdit::deleteText(int startOffset, int endOffset)
@@ -508,13 +513,15 @@ void QAccessibleTextEdit::insertText(int offset, const QString &text)
void QAccessibleTextEdit::cutText(int startOffset, int endOffset)
{
+#ifndef QT_NO_CLIPBOARD
QTextCursor cursor = cursorForRange(textEdit(), startOffset, endOffset);
if (!cursor.hasSelection())
return;
-// QApplication::clipboard()->setMimeData(new QTextEditMimeData(cursor.selection()));
- cursor.removeSelectedText();
+ textEdit()->setTextCursor(cursor);
+ textEdit()->cut();
+#endif
}
void QAccessibleTextEdit::pasteText(int offset)
diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
index eb76202e35..63770f14cb 100644
--- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
@@ -1516,6 +1516,12 @@ void tst_QAccessibility::textEditTest()
QCOMPARE(iface->textInterface()->characterRect(0, QAccessible2::RelativeToParent).size(), QSize(fm.width("h"), fm.height()));
QCOMPARE(iface->textInterface()->characterRect(5, QAccessible2::RelativeToParent).size(), QSize(fm.width(" "), fm.height()));
QCOMPARE(iface->textInterface()->characterRect(6, QAccessible2::RelativeToParent).size(), QSize(fm.width("w"), fm.height()));
+
+ iface->editableTextInterface()->copyText(6, 11);
+ QCOMPARE(QApplication::clipboard()->text(), QLatin1String("world"));
+ iface->editableTextInterface()->cutText(12, 16);
+ QCOMPARE(QApplication::clipboard()->text(), QLatin1String("how "));
+ QCOMPARE(iface->textInterface()->text(12, 15), QLatin1String("are"));
}
QTestAccessibility::clearEvents();
}