Code page should be the same for the same drawing page.

This removes O(n^2) from the process of querying the code pages for
form elements.
This commit is contained in:
Kohei Yoshida
2011-08-12 00:08:26 -04:00
parent bc01bc636d
commit 39b2de7545
3 changed files with 47 additions and 1 deletions

View File

@@ -148,7 +148,15 @@ void OInterfaceContainer::impl_addVbEvents_nolck_nothrow( const sal_Int32 i_nIn
if ( xElementAsForm.is() )
break;
::rtl::OUString sCodeName( xNameQuery->getCodeNameForObject( xElement ) );
rtl::OUString sCodeName;
{
Reference<XInterface> xThis = static_cast<XContainer*>(this);
sal_Int32 nPageIndex = xNameQuery->getPageIndexForObject(xThis);
if (nPageIndex >= 0)
sCodeName = xNameQuery->getCodeNameByIndex(nPageIndex);
else
sCodeName = xNameQuery->getCodeNameForObject(xElement);
}
Reference< XPropertySet > xProps( xElement, UNO_QUERY_THROW );
::rtl::OUString sServiceName;