summaryrefslogtreecommitdiff
path: root/accessibility
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2016-12-10 11:23:38 +0000
committerTamás Zolnai <tamas.zolnai@collabora.com>2016-12-10 20:34:41 +0000
commitb88a5657a95e1b94498ed238e2b4e0fb0418d40b (patch)
treeb47580d5505c173f33200f40a824c85125d05b32 /accessibility
parent38bf0e92e0f78e72345474013f695a2e660ee732 (diff)
tdf#93430: Return the right offsets for runs
MultiLineEdit is a special control which can have more text portions with different text attributes. Change-Id: Iab51dba0d0344fad4358f4961c968c031b1660b6 Reviewed-on: https://gerrit.libreoffice.org/31813 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com> (cherry picked from commit 8d52045853cecb716138d51b8b6ad0272a86af86) Reviewed-on: https://gerrit.libreoffice.org/31832 Tested-by: Tamás Zolnai <tamas.zolnai@collabora.com>
Diffstat (limited to 'accessibility')
-rw-r--r--accessibility/source/standard/vclxaccessibleedit.cxx15
1 files changed, 15 insertions, 0 deletions
diff --git a/accessibility/source/standard/vclxaccessibleedit.cxx b/accessibility/source/standard/vclxaccessibleedit.cxx
index 750ce0afb337..2eff38f73020 100644
--- a/accessibility/source/standard/vclxaccessibleedit.cxx
+++ b/accessibility/source/standard/vclxaccessibleedit.cxx
@@ -30,6 +30,7 @@
#include <com/sun/star/accessibility/AccessibleEventId.hpp>
#include <com/sun/star/accessibility/AccessibleRole.hpp>
#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <com/sun/star/accessibility/AccessibleTextType.hpp>
#include <cppuhelper/typeprovider.hxx>
#include <comphelper/sequence.hxx>
#include <comphelper/string.hxx>
@@ -475,6 +476,20 @@ css::accessibility::TextSegment VCLXAccessibleEdit::getTextAtIndex( sal_Int32 nI
{
OExternalLockGuard aGuard( this );
+ // Override general text component behavior: MultiLineEdit can have more text portions
+ if ( aTextType == AccessibleTextType::ATTRIBUTE_RUN )
+ {
+ VclPtr<VclMultiLineEdit> pMulitLineEdit = GetAsDynamic< VclMultiLineEdit >();
+ if ( pMulitLineEdit )
+ {
+ ExtTextEngine* pTextEngine = pMulitLineEdit->GetTextEngine();
+ TextPaM aCursor( 0, nIndex );
+ TextSegment aResult;
+ pTextEngine->GetTextPortionRange( aCursor, aResult.SegmentStart, aResult.SegmentEnd );
+ return aResult;
+ }
+ }
+
return VCLXAccessibleTextComponent::getTextAtIndex( nIndex, aTextType );
}