forms/source/component/FormattedFieldWrapper.cxx | 34 +++++------------------ forms/source/component/FormattedFieldWrapper.hxx | 6 ++-- 2 files changed, 12 insertions(+), 28 deletions(-)
New commits: commit eea1f0374267c4cb3fd1ecfb04528bd0f7b905b5 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Fri Feb 28 16:28:06 2025 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Feb 28 18:40:37 2025 +0100 use more concrete UNO classes in OFormattedFieldWrapper Change-Id: Ibb5d170e293a7ed5b90301e226fae8c666ea9138 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182363 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Jenkins diff --git a/forms/source/component/FormattedFieldWrapper.cxx b/forms/source/component/FormattedFieldWrapper.cxx index 1543a2068d8f..087612530bc7 100644 --- a/forms/source/component/FormattedFieldWrapper.cxx +++ b/forms/source/component/FormattedFieldWrapper.cxx @@ -87,14 +87,13 @@ Reference< XCloneable > SAL_CALL OFormattedFieldWrapper::createClone() auto xCloneAccess = query_aggregation<XCloneable>(m_xAggregate); // clone the aggregate - if ( xCloneAccess.is() ) + if ( m_xAggregate.is() ) { - Reference< XCloneable > xClone = xCloneAccess->createClone(); - xRef->m_xAggregate.set(xClone, UNO_QUERY); + rtl::Reference< OEditBaseModel > xClone = static_cast<OEditBaseModel*>(m_xAggregate->createClone().get()); + xRef->m_xAggregate = xClone; OSL_ENSURE(xRef->m_xAggregate.is(), "invalid aggregate cloned !"); - xRef->m_xFormattedPart.set( - Reference< XInterface >(xClone), css::uno::UNO_QUERY); + xRef->m_xFormattedPart = xClone; if ( m_pEditPart.is() ) { @@ -211,10 +210,9 @@ void SAL_CALL OFormattedFieldWrapper::write(const Reference<XObjectOutputStream> throw RuntimeException( OUString(), *this ); // for this we transfer the current props of the formatted part to the edit part - Reference<XPropertySet> xFormatProps(m_xFormattedPart, UNO_QUERY); Locale aAppLanguage = Application::GetSettings().GetUILanguageTag().getLocale(); - dbtools::TransferFormComponentProperties(xFormatProps, m_pEditPart, aAppLanguage); + dbtools::TransferFormComponentProperties(m_xFormattedPart, m_pEditPart, aAppLanguage); // then write the edit part, after switching to "fake mode" m_pEditPart->enableFormattedWriteFake(); @@ -283,7 +281,7 @@ void SAL_CALL OFormattedFieldWrapper::read(const Reference<XObjectInputStream>& m_xFormattedPart.set(new OFormattedModel(m_xContext)); m_xFormattedPart->read(_rxInStream); m_pEditPart = std::move(pBasicReader); - m_xAggregate.set( m_xFormattedPart, UNO_QUERY ); + m_xAggregate = m_xFormattedPart; } } @@ -304,25 +302,9 @@ void OFormattedFieldWrapper::ensureAggregate() { // instantiate an EditModel (the only place where we are allowed to decide that we're a FormattedModel // is in ::read) - css::uno::Reference<css::uno::XInterface> xEditModel = m_xContext->getServiceManager()->createInstanceWithContext(FRM_SUN_COMPONENT_TEXTFIELD, m_xContext); - if (!xEditModel.is()) - { - // arghhh... instantiate it directly... it's dirty, but we really need this aggregate - rtl::Reference<OEditModel> pModel = new OEditModel(m_xContext); - xEditModel.set(static_cast<XWeak*>(pModel.get()), css::uno::UNO_QUERY); - } - - m_xAggregate.set(xEditModel, UNO_QUERY); + rtl::Reference<OEditModel> xEditModel = new OEditModel(m_xContext); + m_xAggregate = xEditModel; DBG_ASSERT(m_xAggregate.is(), "OFormattedFieldWrapper::ensureAggregate : the OEditModel didn't have an XAggregation interface !"); - - { - Reference< XServiceInfo > xSI(m_xAggregate, UNO_QUERY); - if (!xSI.is()) - { - OSL_FAIL("OFormattedFieldWrapper::ensureAggregate: the aggregate has no XServiceInfo!"); - m_xAggregate.clear(); - } - } } osl_atomic_increment(&m_refCount); diff --git a/forms/source/component/FormattedFieldWrapper.hxx b/forms/source/component/FormattedFieldWrapper.hxx index 9dc093dece0d..e8f65b7ea7f6 100644 --- a/forms/source/component/FormattedFieldWrapper.hxx +++ b/forms/source/component/FormattedFieldWrapper.hxx @@ -31,6 +31,8 @@ namespace frm { class OEditModel; +class OFormattedModel; +class OEditBaseModel; //= OFormattedFieldWrapper @@ -44,11 +46,11 @@ class OFormattedFieldWrapper final : public OFormattedFieldWrapper_Base css::uno::Reference< css::uno::XComponentContext> m_xContext; OUString m_implementationName; - css::uno::Reference< css::uno::XAggregation> m_xAggregate; + rtl::Reference< OEditBaseModel > m_xAggregate; // either OEditModel or OFormattedModel rtl::Reference< OEditModel > m_pEditPart; // if we act as formatted this is used to write the EditModel part - css::uno::Reference< css::io::XPersistObject> m_xFormattedPart; + rtl::Reference< OEditBaseModel > m_xFormattedPart; OFormattedFieldWrapper(const css::uno::Reference< css::uno::XComponentContext>& _rxFactory, OUString const & implementationName);