Kaydet (Commit) fb6edeb2 authored tarafından Boris Dušek's avatar Boris Dušek Kaydeden (comit) Tor Lillqvist

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/5346Reviewed-by: 's avatarTor Lillqvist <tml@iki.fi>
Tested-by: 's avatarTor Lillqvist <tml@iki.fi>
üst 7c7ccd7c
...@@ -36,6 +36,72 @@ using namespace ::com::sun::star::lang; ...@@ -36,6 +36,72 @@ using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::uno; using namespace ::com::sun::star::uno;
using namespace ::rtl; 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 @implementation AquaA11yTextAttributesWrapper : NSObject
+(int)convertUnderlineStyle:(PropertyValue)property { +(int)convertUnderlineStyle:(PropertyValue)property {
...@@ -123,7 +189,7 @@ using namespace ::rtl; ...@@ -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 ]; NSAutoreleasePool * pool = [ [ NSAutoreleasePool alloc ] init ];
// constants // constants
static const OUString attrUnderline("CharUnderline"); static const OUString attrUnderline("CharUnderline");
...@@ -139,9 +205,6 @@ using namespace ::rtl; ...@@ -139,9 +205,6 @@ using namespace ::rtl;
static const OUString attrBackgroundColor("CharBackColor"); static const OUString attrBackgroundColor("CharBackColor");
static const OUString attrSuperscript("CharEscapement"); static const OUString attrSuperscript("CharEscapement");
// vars // vars
OUString fontname;
int fonttraits = 0;
float fontsize = 0.0;
sal_Int32 underlineColor = 0; sal_Int32 underlineColor = 0;
BOOL underlineHasColor = NO; BOOL underlineHasColor = NO;
// add attributes to string // add attributes to string
...@@ -156,13 +219,17 @@ using namespace ::rtl; ...@@ -156,13 +219,17 @@ using namespace ::rtl;
[ string addAttribute: NSAccessibilityUnderlineTextAttribute value: [ NSNumber numberWithInt: style ] range: range ]; [ string addAttribute: NSAccessibilityUnderlineTextAttribute value: [ NSNumber numberWithInt: style ] range: range ];
} }
} else if ( property.Name.equals ( attrFontname ) ) { } else if ( property.Name.equals ( attrFontname ) ) {
OUString fontname;
property.Value >>= fontname; property.Value >>= fontname;
[fontDescriptor setName:CreateNSString(fontname)];
} else if ( property.Name.equals ( attrBold ) ) { } else if ( property.Name.equals ( attrBold ) ) {
fonttraits |= [ AquaA11yTextAttributesWrapper convertBoldStyle: property ]; [fontDescriptor setBold:[AquaA11yTextAttributesWrapper convertBoldStyle:property]];
} else if ( property.Name.equals ( attrItalic ) ) { } else if ( property.Name.equals ( attrItalic ) ) {
fonttraits |= [ AquaA11yTextAttributesWrapper convertItalicStyle: property ]; [fontDescriptor setItalic:[AquaA11yTextAttributesWrapper convertItalicStyle:property]];
} else if ( property.Name.equals ( attrHeight ) ) { } else if ( property.Name.equals ( attrHeight ) ) {
property.Value >>= fontsize; float size;
property.Value >>= size;
[fontDescriptor setSize:size];
} else if ( property.Name.equals ( attrStrikethrough ) ) { } else if ( property.Name.equals ( attrStrikethrough ) ) {
if ( [ AquaA11yTextAttributesWrapper isStrikethrough: property ] ) { if ( [ AquaA11yTextAttributesWrapper isStrikethrough: property ] ) {
[ string addAttribute: NSAccessibilityStrikethroughTextAttribute value: [ NSNumber numberWithBool: YES ] range: range ]; [ string addAttribute: NSAccessibilityStrikethroughTextAttribute value: [ NSNumber numberWithBool: YES ] range: range ];
...@@ -195,27 +262,8 @@ using namespace ::rtl; ...@@ -195,27 +262,8 @@ using namespace ::rtl;
[ AquaA11yTextAttributesWrapper addColor: underlineColor forAttribute: NSAccessibilityUnderlineColorTextAttribute andRange: range toString: string ]; [ AquaA11yTextAttributesWrapper addColor: underlineColor forAttribute: NSAccessibilityUnderlineColorTextAttribute andRange: range toString: string ];
} }
// add font information // add font information
if ( wrapperStore != nil ) { // default NSFont * font = [fontDescriptor font];
[ wrapperStore setDefaultFontname: CreateNSString ( fontname ) ]; [AquaA11yTextAttributesWrapper addFont:font toString:string forRange:range];
[ 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 ];
}
[ pool release ]; [ pool release ];
} }
...@@ -234,7 +282,8 @@ using namespace ::rtl; ...@@ -234,7 +282,8 @@ using namespace ::rtl;
[ string beginEditing ]; [ string beginEditing ];
// add default attributes for whole string // add default attributes for whole string
Sequence < PropertyValue > defaultAttributes = [ wrapper accessibleTextAttributes ] -> getDefaultAttributes ( emptySequence ); 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) // add attributes for attribute run(s)
while ( currentIndex < endIndex ) { while ( currentIndex < endIndex ) {
TextSegment textSegment = [ wrapper accessibleText ] -> getTextAtIndex ( currentIndex, AccessibleTextType::ATTRIBUTE_RUN ); TextSegment textSegment = [ wrapper accessibleText ] -> getTextAtIndex ( currentIndex, AccessibleTextType::ATTRIBUTE_RUN );
...@@ -242,9 +291,12 @@ using namespace ::rtl; ...@@ -242,9 +291,12 @@ using namespace ::rtl;
NSRange rangeForAttributeRun = NSMakeRange ( currentIndex - loc , endOfRange - currentIndex ); NSRange rangeForAttributeRun = NSMakeRange ( currentIndex - loc , endOfRange - currentIndex );
// add run attributes // add run attributes
Sequence < PropertyValue > attributes = [ wrapper accessibleTextAttributes ] -> getRunAttributes ( currentIndex, emptySequence ); 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; currentIndex = textSegment.SegmentEnd;
} }
[defaultFontDescriptor release];
[ string endEditing ]; [ string endEditing ];
} }
} catch ( IllegalArgumentException & e ) { } catch ( IllegalArgumentException & e ) {
......
...@@ -81,9 +81,6 @@ static std::ostream &operator<<(std::ostream &s, NSPoint point) { ...@@ -81,9 +81,6 @@ static std::ostream &operator<<(std::ostream &s, NSPoint point) {
} }
-(void) setDefaults: (Reference < XAccessibleContext >) rxAccessibleContext { -(void) setDefaults: (Reference < XAccessibleContext >) rxAccessibleContext {
mDefaultFontsize = 0.0;
mDefaultFonttraits = 0;
mpDefaultFontname = nil;
mpReferenceWrapper = new ReferenceWrapper; mpReferenceWrapper = new ReferenceWrapper;
mActsAsRadioGroup = NO; mActsAsRadioGroup = NO;
mpReferenceWrapper -> rAccessibleContext = rxAccessibleContext; mpReferenceWrapper -> rAccessibleContext = rxAccessibleContext;
...@@ -144,9 +141,6 @@ static std::ostream &operator<<(std::ostream &s, NSPoint point) { ...@@ -144,9 +141,6 @@ static std::ostream &operator<<(std::ostream &s, NSPoint point) {
if ( mpReferenceWrapper != nil ) { if ( mpReferenceWrapper != nil ) {
delete mpReferenceWrapper; delete mpReferenceWrapper;
} }
if ( mpDefaultFontname != nil ) {
[ mpDefaultFontname release ];
}
[ super dealloc ]; [ super dealloc ];
} }
...@@ -1127,33 +1121,6 @@ Reference < XAccessibleContext > hitTestRunner ( com::sun::star::awt::Point poin ...@@ -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 // 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 // and reports them independently. When they occur we bundle them to a font with
// this information here to create a according NSFont. // 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 { -(void)setActsAsRadioGroup:(BOOL)actsAsRadioGroup {
mActsAsRadioGroup = actsAsRadioGroup; mActsAsRadioGroup = actsAsRadioGroup;
} }
......
...@@ -52,9 +52,6 @@ struct ReferenceWrapper ...@@ -52,9 +52,6 @@ struct ReferenceWrapper
@interface AquaA11yWrapper : NSView @interface AquaA11yWrapper : NSView
{ {
ReferenceWrapper * mpReferenceWrapper; ReferenceWrapper * mpReferenceWrapper;
NSString * mpDefaultFontname;
float mDefaultFontsize;
int mDefaultFonttraits;
BOOL mActsAsRadioGroup; BOOL mActsAsRadioGroup;
BOOL mIsTableCell; BOOL mIsTableCell;
} }
...@@ -91,12 +88,6 @@ struct ReferenceWrapper ...@@ -91,12 +88,6 @@ struct ReferenceWrapper
-(id)initWithAccessibleContext: (::com::sun::star::uno::Reference < ::com::sun::star::accessibility::XAccessibleContext >) anAccessibleContext; -(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) setDefaults: (::com::sun::star::uno::Reference < ::com::sun::star::accessibility::XAccessibleContext >) rxAccessibleContext;
-(void) dealloc; -(void) dealloc;
-(void)setDefaultFontname:(NSString *)fontname;
-(NSString *)defaultFontname;
-(void)setDefaultFontsize:(float)fontsize;
-(float)defaultFontsize;
-(void)setDefaultFonttraits:(int)fonttraits;
-(int)defaultFonttraits;
+(void)setPopupMenuOpen:(BOOL)popupMenuOpen; +(void)setPopupMenuOpen:(BOOL)popupMenuOpen;
-(::com::sun::star::accessibility::XAccessibleAction *)accessibleAction; -(::com::sun::star::accessibility::XAccessibleAction *)accessibleAction;
-(::com::sun::star::accessibility::XAccessibleContext *)accessibleContext; -(::com::sun::star::accessibility::XAccessibleContext *)accessibleContext;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment