summaryrefslogtreecommitdiff
path: root/vcl/aqua
diff options
context:
space:
mode:
authorBoris Dušek <me@dusek.me>2013-08-11 16:37:48 +0200
committerTor Lillqvist <tml@iki.fi>2013-08-12 08:16:33 +0000
commitdb0fa92637a1b2edf26da9917c9dce050ebc8a78 (patch)
treed9f9f4ea689b9fae5e2fbcb90446e47ded1d15b7 /vcl/aqua
parent487d9ffe0480470fb7c03fe71e466e8bcc700c33 (diff)
fdo#67980 - VoiceOver does not inform about misspelled text
Change-Id: I4aefa1c013e62942801dd38a06034103c0df24be Reviewed-on: https://gerrit.libreoffice.org/5351 Reviewed-by: Tor Lillqvist <tml@iki.fi> Tested-by: Tor Lillqvist <tml@iki.fi>
Diffstat (limited to 'vcl/aqua')
-rw-r--r--vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm25
1 files changed, 25 insertions, 0 deletions
diff --git a/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm b/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm
index d95f999e05bb..41f5c8008c68 100644
--- a/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm
+++ b/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm
@@ -28,6 +28,7 @@
#include <com/sun/star/awt/FontUnderline.hpp>
#include <com/sun/star/awt/FontWeight.hpp>
#include <com/sun/star/awt/FontStrikeout.hpp>
+#include <com/sun/star/text/TextMarkupType.hpp>
namespace css_awt = ::com::sun::star::awt;
using namespace ::com::sun::star::accessibility;
@@ -267,6 +268,28 @@ using namespace ::rtl;
[ pool release ];
}
++(void)addMarkup:(XAccessibleTextMarkup*)markup toString:(NSMutableAttributedString*)string inRange:(NSRange)range {
+ [AquaA11yTextAttributesWrapper addMarkup:markup withType:(::com::sun::star::text::TextMarkupType::SPELLCHECK) toString:string inRange:range];
+}
+
++(void)addMarkup:(XAccessibleTextMarkup*)markup withType:(long)type toString:(NSMutableAttributedString*)string inRange:(NSRange)range {
+ const long markupCount = markup->getTextMarkupCount(type);
+ for (long markupIndex = 0; markupIndex < markupCount; ++markupIndex) {
+ TextSegment markupSegment = markup->getTextMarkup(markupIndex, type);
+ NSRange markupRange = NSMakeRange(markupSegment.SegmentStart, markupSegment.SegmentEnd - markupSegment.SegmentStart);
+ markupRange = NSIntersectionRange(range, markupRange);
+ if (markupRange.length > 0) {
+ markupRange.location -= range.location;
+ switch(type) {
+ case ::com::sun::star::text::TextMarkupType::SPELLCHECK: {
+ [string addAttribute:NSAccessibilityMisspelledTextAttribute value:[NSNumber numberWithBool:YES] range:markupRange];
+ break;
+ }
+ }
+ }
+ }
+}
+
+(NSMutableAttributedString *)createAttributedStringForElement:(AquaA11yWrapper *)wrapper inOrigRange:(id)origRange {
static const Sequence < OUString > emptySequence;
// vars
@@ -297,6 +320,8 @@ using namespace ::rtl;
currentIndex = textSegment.SegmentEnd;
}
[defaultFontDescriptor release];
+ if ([wrapper accessibleTextMarkup])
+ [AquaA11yTextAttributesWrapper addMarkup:[wrapper accessibleTextMarkup] toString:string inRange:[origRange rangeValue]];
[ string endEditing ];
}
} catch ( IllegalArgumentException & e ) {