diff options
author | Tamás Zolnai <tamas.zolnai@collabora.com> | 2016-12-10 11:23:38 +0000 |
---|---|---|
committer | Tamás Zolnai <tamas.zolnai@collabora.com> | 2016-12-10 20:34:41 +0000 |
commit | b88a5657a95e1b94498ed238e2b4e0fb0418d40b (patch) | |
tree | b47580d5505c173f33200f40a824c85125d05b32 /accessibility | |
parent | 38bf0e92e0f78e72345474013f695a2e660ee732 (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.cxx | 15 |
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 ); } |