vcl/inc/osx/a11ywrapper.h | 3 -- vcl/osx/a11ywrapper.mm | 60 +++++++++++++++++++--------------------------- vcl/osx/salframeview.mm | 8 ++---- 3 files changed, 30 insertions(+), 41 deletions(-)
New commits: commit 7acc7660a752497a546263d28e82a2e8f61fd702 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Jun 1 14:24:41 2023 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Jun 2 08:03:00 2023 +0200 reduce memory overhead of AquaA11yWrapper we can allocate this internally, which reduces the number of heap allocations we need to do Change-Id: Id5298e70b6816cd65d8285ceea846dc8e9e4b39d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152489 Reviewed-by: Patrick Luby <plub...@neooffice.org> Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/vcl/inc/osx/a11ywrapper.h b/vcl/inc/osx/a11ywrapper.h index f9b30eb98fcd..469e50820e19 100644 --- a/vcl/inc/osx/a11ywrapper.h +++ b/vcl/inc/osx/a11ywrapper.h @@ -52,7 +52,7 @@ struct ReferenceWrapper @interface AquaA11yWrapper : NSView { - ReferenceWrapper * mpReferenceWrapper; + ReferenceWrapper maReferenceWrapper; BOOL mActsAsRadioGroup; BOOL mIsTableCell; } @@ -88,7 +88,6 @@ struct ReferenceWrapper -(NSWindow*)windowForParent; -(id)initWithAccessibleContext: (css::uno::Reference < css::accessibility::XAccessibleContext >) anAccessibleContext; -(void) setDefaults: (css::uno::Reference < css::accessibility::XAccessibleContext >) rxAccessibleContext; --(void) dealloc; +(void)setPopupMenuOpen:(BOOL)popupMenuOpen; -(css::accessibility::XAccessibleAction *)accessibleAction; -(css::accessibility::XAccessibleContext *)accessibleContext; diff --git a/vcl/osx/a11ywrapper.mm b/vcl/osx/a11ywrapper.mm index 96de29e07f77..75763a65a131 100644 --- a/vcl/osx/a11ywrapper.mm +++ b/vcl/osx/a11ywrapper.mm @@ -79,34 +79,33 @@ static std::ostream &operator<<(std::ostream &s, NSObject *obj) { } -(void) setDefaults: (Reference < XAccessibleContext >) rxAccessibleContext { - mpReferenceWrapper = new ReferenceWrapper; mActsAsRadioGroup = NO; - mpReferenceWrapper -> rAccessibleContext = rxAccessibleContext; + maReferenceWrapper.rAccessibleContext = rxAccessibleContext; mIsTableCell = NO; // Querying all supported interfaces try { // XAccessibleComponent - mpReferenceWrapper->rAccessibleComponent.set( rxAccessibleContext, UNO_QUERY ); + maReferenceWrapper.rAccessibleComponent.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleExtendedComponent - mpReferenceWrapper->rAccessibleExtendedComponent.set( rxAccessibleContext, UNO_QUERY ); + maReferenceWrapper.rAccessibleExtendedComponent.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleSelection - mpReferenceWrapper->rAccessibleSelection.set( rxAccessibleContext, UNO_QUERY ); + maReferenceWrapper.rAccessibleSelection.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleTable - mpReferenceWrapper->rAccessibleTable.set( rxAccessibleContext, UNO_QUERY ); + maReferenceWrapper.rAccessibleTable.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleText - mpReferenceWrapper->rAccessibleText.set( rxAccessibleContext, UNO_QUERY ); + maReferenceWrapper.rAccessibleText.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleEditableText - mpReferenceWrapper->rAccessibleEditableText.set( rxAccessibleContext, UNO_QUERY ); + maReferenceWrapper.rAccessibleEditableText.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleValue - mpReferenceWrapper->rAccessibleValue.set( rxAccessibleContext, UNO_QUERY ); + maReferenceWrapper.rAccessibleValue.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleAction - mpReferenceWrapper->rAccessibleAction.set( rxAccessibleContext, UNO_QUERY ); + maReferenceWrapper.rAccessibleAction.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleTextAttributes - mpReferenceWrapper->rAccessibleTextAttributes.set( rxAccessibleContext, UNO_QUERY ); + maReferenceWrapper.rAccessibleTextAttributes.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleMultiLineText - mpReferenceWrapper->rAccessibleMultiLineText.set( rxAccessibleContext, UNO_QUERY ); + maReferenceWrapper.rAccessibleMultiLineText.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleTextMarkup - mpReferenceWrapper->rAccessibleTextMarkup.set( rxAccessibleContext, UNO_QUERY ); + maReferenceWrapper.rAccessibleTextMarkup.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleEventBroadcaster #if 0 /* #i102033# NSAccessibility does not seemt to know an equivalent for transient children. @@ -137,13 +136,6 @@ static std::ostream &operator<<(std::ostream &s, NSObject *obj) { } } --(void)dealloc { - if ( mpReferenceWrapper ) { - delete mpReferenceWrapper; - } - [ super dealloc ]; -} - #pragma mark - #pragma mark Utility Section @@ -1112,10 +1104,10 @@ static Reference < XAccessibleContext > hitTestRunner ( css::awt::Point point, } // nothing hit yet, so check ourself if ( ! hitChild.is() ) { - if ( !mpReferenceWrapper ) { + if ( !maReferenceWrapper.rAccessibleContext ) { [ self setDefaults: [ self accessibleContext ] ]; } - hitChild = hitTestRunner ( hitPoint, mpReferenceWrapper -> rAccessibleContext ); + hitChild = hitTestRunner ( hitPoint, maReferenceWrapper.rAccessibleContext ); } if ( hitChild.is() ) { wrapper = [ AquaA11yFactory wrapperForAccessibleContext: hitChild ]; @@ -1130,51 +1122,51 @@ static Reference < XAccessibleContext > hitTestRunner ( css::awt::Point point, #pragma mark Access Methods -(XAccessibleAction *)accessibleAction { - return mpReferenceWrapper -> rAccessibleAction.get(); + return maReferenceWrapper.rAccessibleAction.get(); } -(XAccessibleContext *)accessibleContext { - return mpReferenceWrapper -> rAccessibleContext.get(); + return maReferenceWrapper.rAccessibleContext.get(); } -(XAccessibleComponent *)accessibleComponent { - return mpReferenceWrapper -> rAccessibleComponent.get(); + return maReferenceWrapper.rAccessibleComponent.get(); } -(XAccessibleExtendedComponent *)accessibleExtendedComponent { - return mpReferenceWrapper -> rAccessibleExtendedComponent.get(); + return maReferenceWrapper.rAccessibleExtendedComponent.get(); } -(XAccessibleSelection *)accessibleSelection { - return mpReferenceWrapper -> rAccessibleSelection.get(); + return maReferenceWrapper.rAccessibleSelection.get(); } -(XAccessibleTable *)accessibleTable { - return mpReferenceWrapper -> rAccessibleTable.get(); + return maReferenceWrapper.rAccessibleTable.get(); } -(XAccessibleText *)accessibleText { - return mpReferenceWrapper -> rAccessibleText.get(); + return maReferenceWrapper.rAccessibleText.get(); } -(XAccessibleEditableText *)accessibleEditableText { - return mpReferenceWrapper -> rAccessibleEditableText.get(); + return maReferenceWrapper.rAccessibleEditableText.get(); } -(XAccessibleValue *)accessibleValue { - return mpReferenceWrapper -> rAccessibleValue.get(); + return maReferenceWrapper.rAccessibleValue.get(); } -(XAccessibleTextAttributes *)accessibleTextAttributes { - return mpReferenceWrapper -> rAccessibleTextAttributes.get(); + return maReferenceWrapper.rAccessibleTextAttributes.get(); } -(XAccessibleMultiLineText *)accessibleMultiLineText { - return mpReferenceWrapper -> rAccessibleMultiLineText.get(); + return maReferenceWrapper.rAccessibleMultiLineText.get(); } -(XAccessibleTextMarkup *)accessibleTextMarkup { - return mpReferenceWrapper -> rAccessibleTextMarkup.get(); + return maReferenceWrapper.rAccessibleTextMarkup.get(); } -(NSWindow*)windowForParent { diff --git a/vcl/osx/salframeview.mm b/vcl/osx/salframeview.mm index 3b2341a33fe4..ad4dd40cfebb 100644 --- a/vcl/osx/salframeview.mm +++ b/vcl/osx/salframeview.mm @@ -618,7 +618,6 @@ static AquaSalFrame* getMouseContainerFrame() mpLastEvent = nil; mMarkedRange = NSMakeRange(NSNotFound, 0); mSelectedRange = NSMakeRange(NSNotFound, 0); - mpReferenceWrapper = nil; mpMouseEventListener = nil; mpLastSuperEvent = nil; mfLastMagnifyTime = 0.0; @@ -2054,15 +2053,14 @@ static AquaSalFrame* getMouseContainerFrame() -(css::accessibility::XAccessibleContext *)accessibleContext { - if ( !mpReferenceWrapper ) { + if ( !maReferenceWrapper.rAccessibleContext ) { // some frames never become visible .. vcl::Window *pWindow = mpFrame -> GetWindow(); if ( ! pWindow ) return nil; - mpReferenceWrapper = new ReferenceWrapper; - mpReferenceWrapper -> rAccessibleContext = pWindow -> /*GetAccessibleChildWindow( 0 ) ->*/ GetAccessible() -> getAccessibleContext(); - [ AquaA11yFactory insertIntoWrapperRepository: self forAccessibleContext: mpReferenceWrapper -> rAccessibleContext ]; + maReferenceWrapper.rAccessibleContext = pWindow -> /*GetAccessibleChildWindow( 0 ) ->*/ GetAccessible() -> getAccessibleContext(); + [ AquaA11yFactory insertIntoWrapperRepository: self forAccessibleContext: maReferenceWrapper.rAccessibleContext ]; } return [ super accessibleContext ]; }