vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm |  112 +++++++++++++------
 vcl/aqua/source/a11y/aqua11ywrapper.mm               |   33 -----
 vcl/inc/aqua/aqua11ywrapper.h                        |    9 -
 3 files changed, 82 insertions(+), 72 deletions(-)

New commits:
commit fb6edeb20de56359be3d45316a2d665ad8d424a2
Author: Boris Dušek <m...@dusek.me>
Date:   Sun Aug 11 15:02:04 2013 +0200

    Refactoring: remove 3 unneeded ivars
    
    The default font size, font name and font traits were stored as ivars
    of AquaA11yWrapper, but they are in fact only needed as temporary state
    for the createAttributedStringForElement:inOrigRange: method of
    AquaA11yTextAttributesWrapper. So remove these 3 ivars and instead
    introduce a class that holds these 3 properties and make
    createAttributedStringForElement:inOrigRange: use instance of this
    class to hold the needed state instead.
    
    I checked that the default font size, font name and font traits ivars
    are really only used in AquaA11yTextAttributesWrapper at that one place.
    
    Change-Id: Id2e45977c394db116f3fb0636136300c23e71f25
    Reviewed-on: https://gerrit.libreoffice.org/5346
    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 e8a676e..d95f999 100644
--- a/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm
+++ b/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm
@@ -36,6 +36,72 @@ using namespace ::com::sun::star::lang;
 using namespace ::com::sun::star::uno;
 using namespace ::rtl;
 
+// cannot use NSFontDescriptor as it has no notion of explicit 
NSUn{bold,italic}FontMask
+@interface AquaA11yFontDescriptor : NSObject
+{
+    NSString *_name;
+    NSFontTraitMask _traits;
+    CGFloat _size;
+}
+-(void)setName:(NSString*)name;
+-(void)setBold:(NSFontTraitMask)bold;
+-(void)setItalic:(NSFontTraitMask)italic;
+-(void)setSize:(CGFloat)size;
+-(NSFont*)font;
+@end
+
+@implementation AquaA11yFontDescriptor
+- (id)init
+{
+    if((self = [super init]))
+    {
+        _name = nil;
+        _traits = 0;
+        _size = 0.0;
+    }
+    return self;
+}
+
+- (id)initWithDescriptor:(AquaA11yFontDescriptor*)descriptor {
+    if((self = [super init]))
+    {
+        _name = [descriptor->_name retain];
+        _traits = descriptor->_traits;
+        _size = descriptor->_size;
+    }
+    return self;
+}
+
+- (void)dealloc {
+    [_name release];
+    [super dealloc];
+}
+
+-(void)setName:(NSString*)name {
+    if (_name != name) {
+        [name retain];
+        [_name release];
+        _name = name;
+    }
+}
+
+-(void)setBold:(NSFontTraitMask)bold {
+    _traits &= ~(NSBoldFontMask | NSUnboldFontMask);
+    _traits |= bold & (NSBoldFontMask | NSUnboldFontMask);
+};
+
+-(void)setItalic:(NSFontTraitMask)italic {
+    _traits &= ~(NSItalicFontMask | NSUnitalicFontMask);
+    _traits |= italic & (NSItalicFontMask | NSUnitalicFontMask);
+};
+
+-(void)setSize:(CGFloat)size { _size = size; }
+
+-(NSFont*)font {
+    return [[NSFontManager sharedFontManager] fontWithFamily:_name 
traits:_traits weight:0 size:_size];
+}
+@end
+
 @implementation AquaA11yTextAttributesWrapper : NSObject
 
 +(int)convertUnderlineStyle:(PropertyValue)property {
@@ -123,7 +189,7 @@ using namespace ::rtl;
     }
 }
 
-+(void)applyAttributesFrom:(Sequence < PropertyValue >)attributes 
toString:(NSMutableAttributedString *)string forRange:(NSRange)range 
storeDefaultsTo:(AquaA11yWrapper *)wrapperStore 
getDefaultsFrom:(AquaA11yWrapper *)wrapper {
++(void)applyAttributesFrom:(Sequence < PropertyValue >)attributes 
toString:(NSMutableAttributedString *)string forRange:(NSRange)range 
fontDescriptor:(AquaA11yFontDescriptor*)fontDescriptor {
     NSAutoreleasePool * pool = [ [ NSAutoreleasePool alloc ] init ];
     // constants
     static const OUString attrUnderline("CharUnderline");
@@ -139,9 +205,6 @@ using namespace ::rtl;
     static const OUString attrBackgroundColor("CharBackColor");
     static const OUString attrSuperscript("CharEscapement");
     // vars
-    OUString fontname;
-    int fonttraits = 0;
-    float fontsize = 0.0;
     sal_Int32 underlineColor = 0;
     BOOL underlineHasColor = NO;
     // add attributes to string
@@ -156,13 +219,17 @@ using namespace ::rtl;
                     [ string addAttribute: 
NSAccessibilityUnderlineTextAttribute value: [ NSNumber numberWithInt: style ] 
range: range ];
                 }
             } else if ( property.Name.equals ( attrFontname ) ) {
+                OUString fontname;
                 property.Value >>= fontname;
+                [fontDescriptor setName:CreateNSString(fontname)];
             } else if ( property.Name.equals ( attrBold ) ) {
-                fonttraits |= [ AquaA11yTextAttributesWrapper 
convertBoldStyle: property ];
+                [fontDescriptor setBold:[AquaA11yTextAttributesWrapper 
convertBoldStyle:property]];
             } else if ( property.Name.equals ( attrItalic ) ) {
-                fonttraits |= [ AquaA11yTextAttributesWrapper 
convertItalicStyle: property ];
+                [fontDescriptor setItalic:[AquaA11yTextAttributesWrapper 
convertItalicStyle:property]];
             } else if ( property.Name.equals ( attrHeight ) ) {
-                property.Value >>= fontsize;
+                float size;
+                property.Value >>= size;
+                [fontDescriptor setSize:size];
             } else if ( property.Name.equals ( attrStrikethrough ) ) {
                 if ( [ AquaA11yTextAttributesWrapper isStrikethrough: property 
] ) {
                     [ string addAttribute: 
NSAccessibilityStrikethroughTextAttribute value: [ NSNumber numberWithBool: YES 
] range: range ];
@@ -195,27 +262,8 @@ using namespace ::rtl;
         [ AquaA11yTextAttributesWrapper addColor: underlineColor forAttribute: 
NSAccessibilityUnderlineColorTextAttribute andRange: range toString: string ];
     }
     // add font information
-    if ( wrapperStore != nil ) { // default
-        [ wrapperStore setDefaultFontname: CreateNSString ( fontname ) ];
-        [ wrapperStore setDefaultFontsize: fontsize ];
-        [ wrapperStore setDefaultFonttraits: fonttraits ];
-        NSFont * font = [ [ NSFontManager sharedFontManager ] fontWithFamily: 
CreateNSString ( fontname ) traits: fonttraits weight: 0 size: fontsize ];
-        [ AquaA11yTextAttributesWrapper addFont: font toString: string 
forRange: range ];
-    } else if ( wrapper != nil) { // attribute run and bold and/or italic was 
found
-        NSString *fontName = nil;
-        if (fontname.isEmpty())
-            fontName = [wrapper defaultFontname];
-        else
-            fontName = CreateNSString(fontname);
-        if (!(fonttraits & (NSBoldFontMask | NSUnboldFontMask)))
-            fonttraits |= [wrapper defaultFonttraits] & (NSBoldFontMask | 
NSUnboldFontMask);
-        if (!(fonttraits & (NSItalicFontMask | NSUnitalicFontMask)))
-            fonttraits |= [wrapper defaultFonttraits] & (NSItalicFontMask | 
NSUnitalicFontMask);
-        if (fontsize == 0.0)
-            fontsize = [wrapper defaultFontsize];
-        NSFont * font = [ [ NSFontManager sharedFontManager ] fontWithFamily: 
fontName traits: fonttraits weight: 0 size: fontsize ];
-        [ AquaA11yTextAttributesWrapper addFont: font toString: string 
forRange: range ];
-    }
+    NSFont * font = [fontDescriptor font];
+    [AquaA11yTextAttributesWrapper addFont:font toString:string 
forRange:range];
     [ pool release ];
 }
 
@@ -234,7 +282,8 @@ using namespace ::rtl;
             [ string beginEditing ];
             // add default attributes for whole string
             Sequence < PropertyValue > defaultAttributes = [ wrapper 
accessibleTextAttributes ] -> getDefaultAttributes ( emptySequence );
-            [ AquaA11yTextAttributesWrapper applyAttributesFrom: 
defaultAttributes toString: string forRange: NSMakeRange ( 0, len ) 
storeDefaultsTo: wrapper getDefaultsFrom: nil ];
+            AquaA11yFontDescriptor *defaultFontDescriptor = 
[[AquaA11yFontDescriptor alloc] init];
+            [ AquaA11yTextAttributesWrapper applyAttributesFrom: 
defaultAttributes toString: string forRange: NSMakeRange ( 0, len ) 
fontDescriptor: defaultFontDescriptor ];
             // add attributes for attribute run(s)
             while ( currentIndex < endIndex ) {
                 TextSegment textSegment = [ wrapper accessibleText ] -> 
getTextAtIndex ( currentIndex, AccessibleTextType::ATTRIBUTE_RUN );
@@ -242,9 +291,12 @@ using namespace ::rtl;
                 NSRange rangeForAttributeRun = NSMakeRange ( currentIndex - 
loc , endOfRange - currentIndex );
                 // add run attributes
                 Sequence < PropertyValue > attributes = [ wrapper 
accessibleTextAttributes ] -> getRunAttributes ( currentIndex, emptySequence );
-                [ AquaA11yTextAttributesWrapper applyAttributesFrom: 
attributes toString: string forRange: rangeForAttributeRun storeDefaultsTo: nil 
getDefaultsFrom: wrapper ];
+                AquaA11yFontDescriptor *fontDescriptor = 
[[AquaA11yFontDescriptor alloc] initWithDescriptor:defaultFontDescriptor];
+                [ AquaA11yTextAttributesWrapper applyAttributesFrom: 
attributes toString: string forRange: rangeForAttributeRun fontDescriptor: 
fontDescriptor ];
+                [fontDescriptor release];
                 currentIndex = textSegment.SegmentEnd;
             }
+            [defaultFontDescriptor release];
             [ string endEditing ];
         }
     } catch ( IllegalArgumentException & e ) {
diff --git a/vcl/aqua/source/a11y/aqua11ywrapper.mm 
b/vcl/aqua/source/a11y/aqua11ywrapper.mm
index 375997f..aee6360 100644
--- a/vcl/aqua/source/a11y/aqua11ywrapper.mm
+++ b/vcl/aqua/source/a11y/aqua11ywrapper.mm
@@ -81,9 +81,6 @@ static std::ostream &operator<<(std::ostream &s, NSPoint 
point) {
 }
 
 -(void) setDefaults: (Reference < XAccessibleContext >) rxAccessibleContext {
-    mDefaultFontsize = 0.0;
-    mDefaultFonttraits = 0;
-    mpDefaultFontname = nil;
     mpReferenceWrapper = new ReferenceWrapper;
     mActsAsRadioGroup = NO;
     mpReferenceWrapper -> rAccessibleContext = rxAccessibleContext;
@@ -144,9 +141,6 @@ static std::ostream &operator<<(std::ostream &s, NSPoint 
point) {
     if ( mpReferenceWrapper != nil ) {
         delete mpReferenceWrapper;
     }
-    if ( mpDefaultFontname != nil ) {
-        [ mpDefaultFontname release ];
-    }
     [ super dealloc ];
 }
 
@@ -1127,33 +1121,6 @@ Reference < XAccessibleContext > hitTestRunner ( 
com::sun::star::awt::Point poin
 // attributes have to be bound to a font on the Mac. Our UNO-API instead 
handles
 // and reports them independently. When they occur we bundle them to a font 
with
 // this information here to create a according NSFont.
--(void)setDefaultFontname:(NSString *)fontname {
-    if ( mpDefaultFontname != nil ) {
-        [ mpDefaultFontname release ];
-    }
-    mpDefaultFontname = fontname;
-}
-
--(NSString *)defaultFontname {
-    return mpDefaultFontname;
-}
-
--(void)setDefaultFontsize:(float)fontsize {
-    mDefaultFontsize = fontsize;
-}
-
--(float)defaultFontsize {
-    return mDefaultFontsize;
-}
-
--(void)setDefaultFonttraits:(int)fonttraits {
-    mDefaultFonttraits = fonttraits;
-}
-
--(int)defaultFonttraits {
-    return mDefaultFonttraits;
-}
-
 -(void)setActsAsRadioGroup:(BOOL)actsAsRadioGroup {
     mActsAsRadioGroup = actsAsRadioGroup;
 }
diff --git a/vcl/inc/aqua/aqua11ywrapper.h b/vcl/inc/aqua/aqua11ywrapper.h
index 185536a..83b5a77 100644
--- a/vcl/inc/aqua/aqua11ywrapper.h
+++ b/vcl/inc/aqua/aqua11ywrapper.h
@@ -52,9 +52,6 @@ struct ReferenceWrapper
 @interface AquaA11yWrapper : NSView
 {
     ReferenceWrapper * mpReferenceWrapper;
-    NSString * mpDefaultFontname;
-    float mDefaultFontsize;
-    int mDefaultFonttraits;
     BOOL mActsAsRadioGroup;
     BOOL mIsTableCell;
 }
@@ -91,12 +88,6 @@ struct ReferenceWrapper
 -(id)initWithAccessibleContext: (::com::sun::star::uno::Reference < 
::com::sun::star::accessibility::XAccessibleContext >) anAccessibleContext;
 -(void) setDefaults: (::com::sun::star::uno::Reference < 
::com::sun::star::accessibility::XAccessibleContext >) rxAccessibleContext;
 -(void) dealloc;
--(void)setDefaultFontname:(NSString *)fontname;
--(NSString *)defaultFontname;
--(void)setDefaultFontsize:(float)fontsize;
--(float)defaultFontsize;
--(void)setDefaultFonttraits:(int)fonttraits;
--(int)defaultFonttraits;
 +(void)setPopupMenuOpen:(BOOL)popupMenuOpen;
 -(::com::sun::star::accessibility::XAccessibleAction *)accessibleAction;
 -(::com::sun::star::accessibility::XAccessibleContext *)accessibleContext;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to