vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm |   25 +++++++++++++++++++
 1 file changed, 25 insertions(+)

New commits:
commit db0fa92637a1b2edf26da9917c9dce050ebc8a78
Author: Boris Dušek <m...@dusek.me>
Date:   Sun Aug 11 16:37:48 2013 +0200

    fdo#67980 - VoiceOver does not inform about misspelled text
    
    Change-Id: I4aefa1c013e62942801dd38a06034103c0df24be
    Reviewed-on: https://gerrit.libreoffice.org/5351
    Reviewed-by: Tor Lillqvist <t...@iki.fi>
    Tested-by: Tor Lillqvist <t...@iki.fi>

diff --git a/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm 
b/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm
index d95f999..41f5c80 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 ) {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to