loplugin:flatten in forms
Change-Id: I7e264cc1e60280b80a4e2e87b8944de4912c563d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92162
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/forms/source/component/Columns.cxx b/forms/source/component/Columns.cxx
index ae1b1cb..95438dc 100644
--- a/forms/source/component/Columns.cxx
+++ b/forms/source/component/Columns.cxx
@@ -197,23 +197,23 @@ OGridColumn::OGridColumn( const Reference<XComponentContext>& _rContext, const O
{
// Create the UnoControlModel
if ( !m_aModelName.isEmpty() ) // is there a to-be-aggregated model?
if ( m_aModelName.isEmpty() ) // is there a to-be-aggregated model?
return;
osl_atomic_increment( &m_refCount );
{
osl_atomic_increment( &m_refCount );
{
m_xAggregate.set( _rContext->getServiceManager()->createInstanceWithContext( m_aModelName, _rContext ), UNO_QUERY );
setAggregation( m_xAggregate );
}
if ( m_xAggregate.is() )
{ // don't omit those brackets - they ensure that the following temporary is properly deleted
m_xAggregate->setDelegator( static_cast< ::cppu::OWeakObject* >( this ) );
}
// Set refcount back to zero
osl_atomic_decrement( &m_refCount );
m_xAggregate.set( _rContext->getServiceManager()->createInstanceWithContext( m_aModelName, _rContext ), UNO_QUERY );
setAggregation( m_xAggregate );
}
if ( m_xAggregate.is() )
{ // don't omit those brackets - they ensure that the following temporary is properly deleted
m_xAggregate->setDelegator( static_cast< ::cppu::OWeakObject* >( this ) );
}
// Set refcount back to zero
osl_atomic_decrement( &m_refCount );
}
diff --git a/forms/source/component/Currency.cxx b/forms/source/component/Currency.cxx
index e39a5e8..5c682aa 100644
--- a/forms/source/component/Currency.cxx
+++ b/forms/source/component/Currency.cxx
@@ -61,45 +61,45 @@ css::uno::Sequence<OUString> SAL_CALL OCurrencyControl::getSupportedServiceNames
void OCurrencyModel::implConstruct()
{
if (m_xAggregateSet.is())
{
try
{
// get the system international information
const SvtSysLocale aSysLocale;
const LocaleDataWrapper& aLocaleInfo = aSysLocale.GetLocaleData();
if (!m_xAggregateSet.is())
return;
OUString sCurrencySymbol;
bool bPrependCurrencySymbol = false;
switch ( aLocaleInfo.getCurrPositiveFormat() )
{
case 0: // $1
sCurrencySymbol = aLocaleInfo.getCurrSymbol();
bPrependCurrencySymbol = true;
break;
case 1: // 1$
sCurrencySymbol = aLocaleInfo.getCurrSymbol();
bPrependCurrencySymbol = false;
break;
case 2: // $ 1
sCurrencySymbol = aLocaleInfo.getCurrSymbol() + " ";
bPrependCurrencySymbol = true;
break;
case 3: // 1 $
sCurrencySymbol = " " + aLocaleInfo.getCurrSymbol();
bPrependCurrencySymbol = false;
break;
}
if (!sCurrencySymbol.isEmpty())
{
m_xAggregateSet->setPropertyValue(PROPERTY_CURRENCYSYMBOL, makeAny(sCurrencySymbol));
m_xAggregateSet->setPropertyValue(PROPERTY_CURRSYM_POSITION, makeAny(bPrependCurrencySymbol));
}
}
catch(const Exception&)
try
{
// get the system international information
const SvtSysLocale aSysLocale;
const LocaleDataWrapper& aLocaleInfo = aSysLocale.GetLocaleData();
OUString sCurrencySymbol;
bool bPrependCurrencySymbol = false;
switch ( aLocaleInfo.getCurrPositiveFormat() )
{
OSL_FAIL( "OCurrencyModel::implConstruct: caught an exception while initializing the aggregate!" );
case 0: // $1
sCurrencySymbol = aLocaleInfo.getCurrSymbol();
bPrependCurrencySymbol = true;
break;
case 1: // 1$
sCurrencySymbol = aLocaleInfo.getCurrSymbol();
bPrependCurrencySymbol = false;
break;
case 2: // $ 1
sCurrencySymbol = aLocaleInfo.getCurrSymbol() + " ";
bPrependCurrencySymbol = true;
break;
case 3: // 1 $
sCurrencySymbol = " " + aLocaleInfo.getCurrSymbol();
bPrependCurrencySymbol = false;
break;
}
if (!sCurrencySymbol.isEmpty())
{
m_xAggregateSet->setPropertyValue(PROPERTY_CURRENCYSYMBOL, makeAny(sCurrencySymbol));
m_xAggregateSet->setPropertyValue(PROPERTY_CURRSYM_POSITION, makeAny(bPrependCurrencySymbol));
}
}
catch(const Exception&)
{
OSL_FAIL( "OCurrencyModel::implConstruct: caught an exception while initializing the aggregate!" );
}
}
diff --git a/forms/source/component/DatabaseForm.cxx b/forms/source/component/DatabaseForm.cxx
index b2b8f7e..ca6681c 100644
--- a/forms/source/component/DatabaseForm.cxx
+++ b/forms/source/component/DatabaseForm.cxx
@@ -2085,23 +2085,23 @@ static void lcl_dispatch(const Reference< XFrame >& xFrame,const Reference<XURLT
FrameSearchFlag::SELF | FrameSearchFlag::PARENT | FrameSearchFlag::CHILDREN |
FrameSearchFlag::SIBLINGS | FrameSearchFlag::CREATE | FrameSearchFlag::TASKS);
if (xDisp.is())
{
Sequence<PropertyValue> aArgs(2);
aArgs.getArray()[0].Name = "Referer";
aArgs.getArray()[0].Value <<= aReferer;
if (!xDisp.is())
return;
// build a sequence from the to-be-submitted string
OString a8BitData(OUStringToOString(aData, _eEncoding));
// always ANSI #58641
Sequence< sal_Int8 > aPostData(reinterpret_cast<const sal_Int8*>(a8BitData.getStr()), a8BitData.getLength());
Reference< XInputStream > xPostData = new SequenceInputStream(aPostData);
Sequence<PropertyValue> aArgs(2);
aArgs.getArray()[0].Name = "Referer";
aArgs.getArray()[0].Value <<= aReferer;
aArgs.getArray()[1].Name = "PostData";
aArgs.getArray()[1].Value <<= xPostData;
// build a sequence from the to-be-submitted string
OString a8BitData(OUStringToOString(aData, _eEncoding));
// always ANSI #58641
Sequence< sal_Int8 > aPostData(reinterpret_cast<const sal_Int8*>(a8BitData.getStr()), a8BitData.getLength());
Reference< XInputStream > xPostData = new SequenceInputStream(aPostData);
xDisp->dispatch(aURL, aArgs);
} // if (xDisp.is())
aArgs.getArray()[1].Name = "PostData";
aArgs.getArray()[1].Value <<= xPostData;
xDisp->dispatch(aURL, aArgs);
}
void ODatabaseForm::submit_impl(const Reference<XControl>& Control, const css::awt::MouseEvent& MouseEvt)
@@ -2386,26 +2386,26 @@ void SAL_CALL ODatabaseForm::setControlModels(const Sequence<Reference<XControlM
sal_Int32 nCount = getCount();
// HiddenControls and forms are not listed
if (rControls.getLength() <= nCount)
if (rControls.getLength() > nCount)
return;
sal_Int16 nTabIndex = 1;
for (auto const& rControl : rControls)
{
sal_Int16 nTabIndex = 1;
for (auto const& rControl : rControls)
Reference<XFormComponent> xComp(rControl, UNO_QUERY);
if (xComp.is())
{
Reference<XFormComponent> xComp(rControl, UNO_QUERY);
if (xComp.is())
// Find component in the list
for (sal_Int32 j = 0; j < nCount; ++j)
{
// Find component in the list
for (sal_Int32 j = 0; j < nCount; ++j)
Reference<XFormComponent> xElement(
getByIndex(j), css::uno::UNO_QUERY);
if (xComp == xElement)
{
Reference<XFormComponent> xElement(
getByIndex(j), css::uno::UNO_QUERY);
if (xComp == xElement)
{
Reference<XPropertySet> xSet(xComp, UNO_QUERY);
if (xSet.is() && hasProperty(PROPERTY_TABINDEX, xSet))
xSet->setPropertyValue( PROPERTY_TABINDEX, makeAny(nTabIndex++) );
break;
}
Reference<XPropertySet> xSet(xComp, UNO_QUERY);
if (xSet.is() && hasProperty(PROPERTY_TABINDEX, xSet))
xSet->setPropertyValue( PROPERTY_TABINDEX, makeAny(nTabIndex++) );
break;
}
}
}
@@ -2689,30 +2689,30 @@ void ODatabaseForm::stopSharingConnection( )
{
OSL_ENSURE( m_bSharingConnection, "ODatabaseForm::stopSharingConnection: invalid call!" );
if ( m_bSharingConnection )
{
// get the connection
Reference< XConnection > xSharedConn;
m_xAggregateSet->getPropertyValue( PROPERTY_ACTIVE_CONNECTION ) >>= xSharedConn;
OSL_ENSURE( xSharedConn.is(), "ODatabaseForm::stopSharingConnection: there's no conn!" );
if ( !m_bSharingConnection )
return;
// remove ourself as event listener
Reference< XComponent > xSharedConnComp( xSharedConn, UNO_QUERY );
if ( xSharedConnComp.is() )
xSharedConnComp->removeEventListener( static_cast< XLoadListener* >( this ) );
// get the connection
Reference< XConnection > xSharedConn;
m_xAggregateSet->getPropertyValue( PROPERTY_ACTIVE_CONNECTION ) >>= xSharedConn;
OSL_ENSURE( xSharedConn.is(), "ODatabaseForm::stopSharingConnection: there's no conn!" );
// no need to dispose the conn: we're not the owner, this is our parent
// (in addition, this method may be called if the connection is being disposed while we use it)
// remove ourself as event listener
Reference< XComponent > xSharedConnComp( xSharedConn, UNO_QUERY );
if ( xSharedConnComp.is() )
xSharedConnComp->removeEventListener( static_cast< XLoadListener* >( this ) );
// reset the property
xSharedConn.clear();
m_bForwardingConnection = true;
m_xAggregateSet->setPropertyValue( PROPERTY_ACTIVE_CONNECTION, makeAny( xSharedConn ) );
m_bForwardingConnection = false;
// no need to dispose the conn: we're not the owner, this is our parent
// (in addition, this method may be called if the connection is being disposed while we use it)
// reset the flag
m_bSharingConnection = false;
}
// reset the property
xSharedConn.clear();
m_bForwardingConnection = true;
m_xAggregateSet->setPropertyValue( PROPERTY_ACTIVE_CONNECTION, makeAny( xSharedConn ) );
m_bForwardingConnection = false;
// reset the flag
m_bSharingConnection = false;
}
namespace
@@ -3492,35 +3492,35 @@ void SAL_CALL ODatabaseForm::cancelRowUpdates()
void SAL_CALL ODatabaseForm::moveToInsertRow()
{
Reference<XResultSetUpdate> xUpdate;
if (query_aggregation( m_xAggregate, xUpdate))
{
// _always_ move to the insert row
//
// Formerly, the following line was conditioned with a "not is new", means we did not move the aggregate
// to the insert row if it was already positioned there.
//
// This prevented the RowSet implementation from resetting its column values. We, ourself, formerly
// did this reset of columns in reset_impl, where we set every column to the ControlDefault, or, if this
// was not present, to NULL. However, the problem with setting to NULL was #88888#, the problem with
// _not_ setting to NULL (which was the original fix for #88888#) was #97955#.
//
// So now we
// * move our aggregate to the insert row
// * in reset_impl
// - set the control defaults into the columns if not void
// - do _not_ set the columns to NULL if no control default is set
//
// Still, there is #72756#. During fixing this bug, DG introduced not calling the aggregate here. So
// in theory, we re-introduced #72756#. But the bug described therein does not happen anymore, as the
// preliminaries for it changed (no display of guessed values for new records with autoinc fields)
//
// BTW: the public Issuezilla bug is #i2815#
//
xUpdate->moveToInsertRow();
if (!query_aggregation( m_xAggregate, xUpdate))
return;
// then set the default values and the parameters given from the parent
reset();
}
// _always_ move to the insert row
//
// Formerly, the following line was conditioned with a "not is new", means we did not move the aggregate
// to the insert row if it was already positioned there.
//
// This prevented the RowSet implementation from resetting its column values. We, ourself, formerly
// did this reset of columns in reset_impl, where we set every column to the ControlDefault, or, if this
// was not present, to NULL. However, the problem with setting to NULL was #88888#, the problem with
// _not_ setting to NULL (which was the original fix for #88888#) was #97955#.
//
// So now we
// * move our aggregate to the insert row
// * in reset_impl
// - set the control defaults into the columns if not void
// - do _not_ set the columns to NULL if no control default is set
//
// Still, there is #72756#. During fixing this bug, DG introduced not calling the aggregate here. So
// in theory, we re-introduced #72756#. But the bug described therein does not happen anymore, as the
// preliminaries for it changed (no display of guessed values for new records with autoinc fields)
//
// BTW: the public Issuezilla bug is #i2815#
//
xUpdate->moveToInsertRow();
// then set the default values and the parameters given from the parent
reset();
}
diff --git a/forms/source/component/Date.cxx b/forms/source/component/Date.cxx
index 495c95d..cca3e06 100644
--- a/forms/source/component/Date.cxx
+++ b/forms/source/component/Date.cxx
@@ -204,18 +204,18 @@ void ODateModel::onConnectedDbColumn( const Reference< XInterface >& _rxForm )
{
OBoundControlModel::onConnectedDbColumn( _rxForm );
Reference<XPropertySet> xField = getField();
if (xField.is())
if (!xField.is())
return;
m_bDateTimeField = false;
try
{
m_bDateTimeField = false;
try
{
sal_Int32 nFieldType = 0;
xField->getPropertyValue(PROPERTY_FIELDTYPE) >>= nFieldType;
m_bDateTimeField = (nFieldType == DataType::TIMESTAMP);
}
catch(const Exception&)
{
}
sal_Int32 nFieldType = 0;
xField->getPropertyValue(PROPERTY_FIELDTYPE) >>= nFieldType;
m_bDateTimeField = (nFieldType == DataType::TIMESTAMP);
}
catch(const Exception&)
{
}
}
diff --git a/forms/source/component/Edit.cxx b/forms/source/component/Edit.cxx
index 688f846..e1eefb0 100644
--- a/forms/source/component/Edit.cxx
+++ b/forms/source/component/Edit.cxx
@@ -556,31 +556,31 @@ sal_uInt16 OEditModel::getPersistenceFlags() const
void OEditModel::onConnectedDbColumn( const Reference< XInterface >& _rxForm )
{
Reference< XPropertySet > xField = getField();
if ( xField.is() )
if ( !xField.is() )
return;
m_pValueFormatter.reset( new ::dbtools::FormattedColumnValue( getContext(), Reference< XRowSet >( _rxForm, UNO_QUERY ), xField ) );
if ( m_pValueFormatter->getKeyType() == NumberFormat::SCIENTIFIC )
return;
m_bMaxTextLenModified = getINT16(m_xAggregateSet->getPropertyValue(PROPERTY_MAXTEXTLEN)) != 0;
if ( !m_bMaxTextLenModified )
{
m_pValueFormatter.reset( new ::dbtools::FormattedColumnValue( getContext(), Reference< XRowSet >( _rxForm, UNO_QUERY ), xField ) );
sal_Int32 nFieldLen = 0;
xField->getPropertyValue("Precision") >>= nFieldLen;
if ( m_pValueFormatter->getKeyType() != NumberFormat::SCIENTIFIC )
if (nFieldLen > 0 && nFieldLen <= SAL_MAX_INT16)
{
m_bMaxTextLenModified = getINT16(m_xAggregateSet->getPropertyValue(PROPERTY_MAXTEXTLEN)) != 0;
if ( !m_bMaxTextLenModified )
{
sal_Int32 nFieldLen = 0;
xField->getPropertyValue("Precision") >>= nFieldLen;
Any aVal;
aVal <<= static_cast<sal_Int16>(nFieldLen);
m_xAggregateSet->setPropertyValue(PROPERTY_MAXTEXTLEN, aVal);
if (nFieldLen > 0 && nFieldLen <= SAL_MAX_INT16)
{
Any aVal;
aVal <<= static_cast<sal_Int16>(nFieldLen);
m_xAggregateSet->setPropertyValue(PROPERTY_MAXTEXTLEN, aVal);
m_bMaxTextLenModified = true;
}
}
else
m_bMaxTextLenModified = false; // to get sure that the text len won't be set in unloaded
m_bMaxTextLenModified = true;
}
}
else
m_bMaxTextLenModified = false; // to get sure that the text len won't be set in unloaded
}
diff --git a/forms/source/component/EventThread.cxx b/forms/source/component/EventThread.cxx
index 3578881..0b38e33 100644
--- a/forms/source/component/EventThread.cxx
+++ b/forms/source/component/EventThread.cxx
@@ -76,25 +76,25 @@ void OComponentEventThread::impl_clearEventQueue()
void OComponentEventThread::disposing( const EventObject& evt )
{
if( evt.Source == static_cast<XWeak*>(m_xComp.get()) )
{
::osl::MutexGuard aGuard( m_aMutex );
if( evt.Source != static_cast<XWeak*>(m_xComp.get()) )
return;
// Remove EventListener
Reference<XEventListener> xEvtLstnr = static_cast<XEventListener*>(this);
m_xComp->removeEventListener( xEvtLstnr );
::osl::MutexGuard aGuard( m_aMutex );
// Clear EventQueue
impl_clearEventQueue();
// Remove EventListener
Reference<XEventListener> xEvtLstnr = static_cast<XEventListener*>(this);
m_xComp->removeEventListener( xEvtLstnr );
// Free the Control and set pCompImpl to 0,
// so that the thread knows, that it should terminate.
m_xComp.clear();
// Clear EventQueue
impl_clearEventQueue();
// Wake up the thread and terminate
m_aCond.set();
terminate();
}
// Free the Control and set pCompImpl to 0,
// so that the thread knows, that it should terminate.
m_xComp.clear();
// Wake up the thread and terminate
m_aCond.set();
terminate();
}
void OComponentEventThread::addEvent( std::unique_ptr<EventObject> _pEvt )
diff --git a/forms/source/component/FormComponent.cxx b/forms/source/component/FormComponent.cxx
index 669bf07..450ef82 100644
--- a/forms/source/component/FormComponent.cxx
+++ b/forms/source/component/FormComponent.cxx
@@ -503,32 +503,32 @@ OControlModel::OControlModel(
// the native look is ugly...
// #i37342#
{
if (!_rUnoControlModelTypeName.isEmpty()) // the is a model we have to aggregate
{
osl_atomic_increment(&m_refCount);
{
m_xAggregate.set(m_xContext->getServiceManager()->createInstanceWithContext(_rUnoControlModelTypeName, m_xContext), UNO_QUERY);
setAggregation(m_xAggregate);
if (_rUnoControlModelTypeName.isEmpty()) // the is a model we have to aggregate
return;
if ( m_xAggregateSet.is() )
osl_atomic_increment(&m_refCount);
{
m_xAggregate.set(m_xContext->getServiceManager()->createInstanceWithContext(_rUnoControlModelTypeName, m_xContext), UNO_QUERY);
setAggregation(m_xAggregate);
if ( m_xAggregateSet.is() )
{
try
{
try
{
if ( !rDefault.isEmpty() )
m_xAggregateSet->setPropertyValue( PROPERTY_DEFAULTCONTROL, makeAny( rDefault ) );
}
catch( const Exception& )
{
TOOLS_WARN_EXCEPTION("forms.component", "OControlModel::OControlModel");
}
if ( !rDefault.isEmpty() )
m_xAggregateSet->setPropertyValue( PROPERTY_DEFAULTCONTROL, makeAny( rDefault ) );
}
catch( const Exception& )
{
TOOLS_WARN_EXCEPTION("forms.component", "OControlModel::OControlModel");
}
}
if (_bSetDelegator)
doSetDelegator();
// Refcount is at NULL again
osl_atomic_decrement(&m_refCount);
}
if (_bSetDelegator)
doSetDelegator();
// Refcount is at NULL again
osl_atomic_decrement(&m_refCount);
}
OControlModel::OControlModel( const OControlModel* _pOriginal, const Reference< XComponentContext>& _rxFactory, const bool _bCloneAggregate, const bool _bSetDelegator )
@@ -552,25 +552,25 @@ OControlModel::OControlModel( const OControlModel* _pOriginal, const Reference<
m_nControlTypeinMSO = _pOriginal->m_nControlTypeinMSO;
m_nObjIDinMSO = _pOriginal->m_nObjIDinMSO;
if ( _bCloneAggregate )
if ( !_bCloneAggregate )
return;
// temporarily increment refcount because of temporary references to ourself in the following
osl_atomic_increment( &m_refCount );
{
// temporarily increment refcount because of temporary references to ourself in the following
osl_atomic_increment( &m_refCount );
{
// transfer the (only, at the very moment!) ref count
m_xAggregate = createAggregateClone( _pOriginal );
// transfer the (only, at the very moment!) ref count
m_xAggregate = createAggregateClone( _pOriginal );
// set aggregation (retrieve other direct interfaces of the aggregate)
setAggregation( m_xAggregate );
}
// set the delegator, if allowed by our derived class
if ( _bSetDelegator )
doSetDelegator();
// decrement ref count
osl_atomic_decrement( &m_refCount );
// set aggregation (retrieve other direct interfaces of the aggregate)
setAggregation( m_xAggregate );
}
// set the delegator, if allowed by our derived class
if ( _bSetDelegator )
doSetDelegator();
// decrement ref count
osl_atomic_decrement( &m_refCount );
}
OControlModel::~OControlModel()
@@ -1224,18 +1224,17 @@ void OBoundControlModel::clonedFrom( const OControlModel* _pOriginal )
const OBoundControlModel* pBoundOriginal = static_cast< const OBoundControlModel* >( _pOriginal );
// the value binding can be handled as if somebody called setValueBinding here
// By definition, bindings can be share between bindables
if ( pBoundOriginal && pBoundOriginal->m_xExternalBinding.is() )
if ( !(pBoundOriginal && pBoundOriginal->m_xExternalBinding.is()) )
return;
try
{
try
{
setValueBinding( pBoundOriginal->m_xExternalBinding );
}
setValueBinding( pBoundOriginal->m_xExternalBinding );
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION("forms.component");
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION("forms.component");
}
}
@@ -1907,94 +1906,93 @@ void OBoundControlModel::connectToField(const Reference<XRowSet>& rForm)
{
OSL_PRECOND( !hasExternalValueBinding(), "OBoundControlModel::connectToField: invalid call (have an external binding)!" );
// if there's a connection to the database
if (rForm.is() && getConnection(rForm).is())
if (!(rForm.is() && getConnection(rForm).is()))
return;
// determine field and PropertyChangeListener
m_xCursor = rForm;
Reference<XPropertySet> xFieldCandidate;
if (m_xCursor.is())
{
// determine field and PropertyChangeListener
m_xCursor = rForm;
Reference<XPropertySet> xFieldCandidate;
if (m_xCursor.is())
Reference<XColumnsSupplier> xColumnsSupplier(m_xCursor, UNO_QUERY);
DBG_ASSERT(xColumnsSupplier.is(), "OBoundControlModel::connectToField : the row set should support the css::sdb::ResultSet service !");
if (xColumnsSupplier.is())
{
Reference<XColumnsSupplier> xColumnsSupplier(m_xCursor, UNO_QUERY);
DBG_ASSERT(xColumnsSupplier.is(), "OBoundControlModel::connectToField : the row set should support the css::sdb::ResultSet service !");
if (xColumnsSupplier.is())
Reference<XNameAccess> xColumns = xColumnsSupplier->getColumns();
if (xColumns.is() && xColumns->hasByName(m_aControlSource))
{
Reference<XNameAccess> xColumns = xColumnsSupplier->getColumns();
if (xColumns.is() && xColumns->hasByName(m_aControlSource))
{
OSL_VERIFY( xColumns->getByName(m_aControlSource) >>= xFieldCandidate );
}
OSL_VERIFY( xColumns->getByName(m_aControlSource) >>= xFieldCandidate );
}
}
try
{
sal_Int32 nFieldType = DataType::OTHER;
if ( xFieldCandidate.is() )
{
xFieldCandidate->getPropertyValue( PROPERTY_FIELDTYPE ) >>= nFieldType;
if ( approveDbColumnType( nFieldType ) )
impl_setField_noNotify( xFieldCandidate );
}
}
try
{
sal_Int32 nFieldType = DataType::OTHER;
if ( xFieldCandidate.is() )
{
xFieldCandidate->getPropertyValue( PROPERTY_FIELDTYPE ) >>= nFieldType;
if ( approveDbColumnType( nFieldType ) )
impl_setField_noNotify( xFieldCandidate );
}
else
impl_setField_noNotify( nullptr );
if ( m_xField.is() )
{
if ( m_xField->getPropertySetInfo()->hasPropertyByName( PROPERTY_VALUE ) )
{
m_nFieldType = nFieldType;
// listen to changing values
m_xField->addPropertyChangeListener( PROPERTY_VALUE, this );
m_xColumnUpdate.set( m_xField, UNO_QUERY );
m_xColumn.set( m_xField, UNO_QUERY );
sal_Int32 nNullableFlag = ColumnValue::NO_NULLS;
m_xField->getPropertyValue(PROPERTY_ISNULLABLE) >>= nNullableFlag;
m_bRequired = (ColumnValue::NO_NULLS == nNullableFlag);
// we're optimistic: in case of ColumnValue_NULLABLE_UNKNOWN we assume nullability...
}
else
impl_setField_noNotify( nullptr );
if ( m_xField.is() )
{
if ( m_xField->getPropertySetInfo()->hasPropertyByName( PROPERTY_VALUE ) )
{
m_nFieldType = nFieldType;
// listen to changing values
m_xField->addPropertyChangeListener( PROPERTY_VALUE, this );
m_xColumnUpdate.set( m_xField, UNO_QUERY );
m_xColumn.set( m_xField, UNO_QUERY );
sal_Int32 nNullableFlag = ColumnValue::NO_NULLS;
m_xField->getPropertyValue(PROPERTY_ISNULLABLE) >>= nNullableFlag;
m_bRequired = (ColumnValue::NO_NULLS == nNullableFlag);
// we're optimistic: in case of ColumnValue_NULLABLE_UNKNOWN we assume nullability...
}
else
{
SAL_WARN("forms.component", "OBoundControlModel::connectToField: property " PROPERTY_VALUE " not supported!");
impl_setField_noNotify( nullptr );
}
SAL_WARN("forms.component", "OBoundControlModel::connectToField: property " PROPERTY_VALUE " not supported!");
impl_setField_noNotify( nullptr );
}
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION("forms.component");
resetField();
}
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION("forms.component");
resetField();
}
}
void OBoundControlModel::initFromField( const Reference< XRowSet >& _rxRowSet )
{
// but only if the rowset is positioned on a valid record
if ( hasField() && _rxRowSet.is() )
if ( !(hasField() && _rxRowSet.is()) )
return;
bool shouldTransfer(!_rxRowSet->isBeforeFirst() && !_rxRowSet->isAfterLast());
if (!shouldTransfer)
{
bool shouldTransfer(!_rxRowSet->isBeforeFirst() && !_rxRowSet->isAfterLast());
if (!shouldTransfer)
const Reference< XPropertySet > xPS(_rxRowSet, UNO_QUERY);
if (xPS.is())
{
const Reference< XPropertySet > xPS(_rxRowSet, UNO_QUERY);
if (xPS.is())
{
assert(!shouldTransfer);
xPS->getPropertyValue("IsNew") >>= shouldTransfer;
}
assert(!shouldTransfer);
xPS->getPropertyValue("IsNew") >>= shouldTransfer;
}
if ( shouldTransfer )
transferDbValueToControl();
else
// reset the field if the row set is empty
// #i30661#
resetNoBroadcast();
}
if ( shouldTransfer )
transferDbValueToControl();
else
// reset the field if the row set is empty
// #i30661#
resetNoBroadcast();
}
bool OBoundControlModel::approveDbColumnType(sal_Int32 _nColumnType)
@@ -2422,20 +2420,19 @@ void OBoundControlModel::connectExternalValueBinding(
transferExternalValueToControl( _rInstanceLock );
// if the binding is also a validator, use it, too. This is a constraint of the
// com.sun.star.form.binding.ValidatableBindableFormComponent service
if ( m_bSupportsValidation )
if ( !m_bSupportsValidation )
return;
try
{
try
{
Reference< XValidator > xAsValidator( _rxBinding, UNO_QUERY );
if ( xAsValidator.is() )
setValidator( xAsValidator );
}
Reference< XValidator > xAsValidator( _rxBinding, UNO_QUERY );
if ( xAsValidator.is() )
setValidator( xAsValidator );
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION("forms.component");
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION("forms.component");
}
}
@@ -2556,26 +2553,26 @@ void OBoundControlModel::transferControlValueToExternal( ControlModelLock& _rIns
{
OSL_PRECOND( m_bSupportsExternalBinding && hasExternalValueBinding(),
"OBoundControlModel::transferControlValueToExternal: precondition not met!" );
if ( m_xExternalBinding.is() )
if ( !m_xExternalBinding.is() )
return;
Any aExternalValue( translateControlValueToExternalValue() );
m_bTransferingValue = true;
_rInstanceLock.release();
// UNSAFE >
try
{
Any aExternalValue( translateControlValueToExternalValue() );
m_bTransferingValue = true;
_rInstanceLock.release();
// UNSAFE >
try
{
m_xExternalBinding->setValue( aExternalValue );
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION("forms.component");
}
// < UNSAFE
_rInstanceLock.acquire();
m_bTransferingValue = false;
m_xExternalBinding->setValue( aExternalValue );
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION("forms.component");
}
// < UNSAFE
_rInstanceLock.acquire();
m_bTransferingValue = false;
}
Sequence< Type > OBoundControlModel::getSupportedBindingTypes()
diff --git a/forms/source/component/FormattedField.cxx b/forms/source/component/FormattedField.cxx
index 54aa650..18cb218 100644
--- a/forms/source/component/FormattedField.cxx
+++ b/forms/source/component/FormattedField.cxx
@@ -411,43 +411,43 @@ void OFormattedModel::_propertyChanged( const css::beans::PropertyChangeEvent& e
{
// TODO: check how this works with external bindings
OSL_ENSURE( evt.Source == m_xAggregateSet, "OFormattedModel::_propertyChanged: where did this come from?" );
if ( evt.Source == m_xAggregateSet )
if ( evt.Source != m_xAggregateSet )
return;
if ( evt.PropertyName == PROPERTY_FORMATKEY )
{
if ( evt.PropertyName == PROPERTY_FORMATKEY )
if ( evt.NewValue.getValueType().getTypeClass() == TypeClass_LONG )
{
if ( evt.NewValue.getValueType().getTypeClass() == TypeClass_LONG )
try
{
try
::osl::MutexGuard aGuard( m_aMutex );
Reference<XNumberFormatsSupplier> xSupplier( calcFormatsSupplier() );
m_nKeyType = getNumberFormatType(xSupplier->getNumberFormats(), getINT32( evt.NewValue ) );
// as m_aSaveValue (which is used by commitControlValueToDbColumn) is format dependent we have
// to recalc it, which is done by translateDbColumnToControlValue
if ( m_xColumn.is() && m_xAggregateFastSet.is() && !m_xCursor->isBeforeFirst() && !m_xCursor->isAfterLast())
{
::osl::MutexGuard aGuard( m_aMutex );
Reference<XNumberFormatsSupplier> xSupplier( calcFormatsSupplier() );
m_nKeyType = getNumberFormatType(xSupplier->getNumberFormats(), getINT32( evt.NewValue ) );
// as m_aSaveValue (which is used by commitControlValueToDbColumn) is format dependent we have
// to recalc it, which is done by translateDbColumnToControlValue
if ( m_xColumn.is() && m_xAggregateFastSet.is() && !m_xCursor->isBeforeFirst() && !m_xCursor->isAfterLast())
{
setControlValue( translateDbColumnToControlValue(), eOther );
}
// if we're connected to an external value binding, then re-calculate the type
// used to exchange the value - it depends on the format, too
if ( hasExternalValueBinding() )
{
calculateExternalValueType();
}
setControlValue( translateDbColumnToControlValue(), eOther );
}
catch(const Exception&)
// if we're connected to an external value binding, then re-calculate the type
// used to exchange the value - it depends on the format, too
if ( hasExternalValueBinding() )
{
calculateExternalValueType();
}
}
return;
catch(const Exception&)
{
}
}
if ( evt.PropertyName == PROPERTY_FORMATSSUPPLIER )
{
updateFormatterNullDate();
return;
}
OBoundControlModel::_propertyChanged( evt );
return;
}
if ( evt.PropertyName == PROPERTY_FORMATSSUPPLIER )
{
updateFormatterNullDate();
return;
}
OBoundControlModel::_propertyChanged( evt );
}
void OFormattedModel::updateFormatterNullDate()
diff --git a/forms/source/component/ImageControl.cxx b/forms/source/component/ImageControl.cxx
index af19376..9080ece 100644
--- a/forms/source/component/ImageControl.cxx
+++ b/forms/source/component/ImageControl.cxx
@@ -740,23 +740,23 @@ void SAL_CALL OImageControlControl::disposing( const EventObject& Event )
void OImageControlControl::implClearGraphics( bool _bForce )
{
Reference< XPropertySet > xSet( getModel(), UNO_QUERY );
if ( xSet.is() )
if ( !xSet.is() )
return;
if ( _bForce )
{
if ( _bForce )
{
OUString sOldImageURL;
xSet->getPropertyValue( PROPERTY_IMAGE_URL ) >>= sOldImageURL;
OUString sOldImageURL;
xSet->getPropertyValue( PROPERTY_IMAGE_URL ) >>= sOldImageURL;
if ( sOldImageURL.isEmpty() )
// the ImageURL is already empty, so simply setting a new empty one would not suffice
// (since it would be ignored)
xSet->setPropertyValue( PROPERTY_IMAGE_URL, makeAny( OUString( "private:emptyImage" ) ) );
// (the concrete URL we're passing here doesn't matter. It's important that
// the model cannot resolve it to a valid resource describing an image stream
}
xSet->setPropertyValue( PROPERTY_IMAGE_URL, makeAny( OUString() ) );
if ( sOldImageURL.isEmpty() )
// the ImageURL is already empty, so simply setting a new empty one would not suffice
// (since it would be ignored)
xSet->setPropertyValue( PROPERTY_IMAGE_URL, makeAny( OUString( "private:emptyImage" ) ) );
// (the concrete URL we're passing here doesn't matter. It's important that
// the model cannot resolve it to a valid resource describing an image stream
}
xSet->setPropertyValue( PROPERTY_IMAGE_URL, makeAny( OUString() ) );
}
diff --git a/forms/source/component/RadioButton.cxx b/forms/source/component/RadioButton.cxx
index fffd230..d066e26 100644
--- a/forms/source/component/RadioButton.cxx
+++ b/forms/source/component/RadioButton.cxx
@@ -123,32 +123,32 @@ void ORadioButtonModel::SetSiblingPropsTo(const OUString& rPropName, const Any&
// Iterate over my siblings
Reference<XIndexAccess> xIndexAccess(getParent(), UNO_QUERY);
if (xIndexAccess.is())
if (!xIndexAccess.is())
return;
Reference<XPropertySet> xMyProps = this;
OUString sCurrentGroup;
sal_Int32 nNumSiblings = xIndexAccess->getCount();
for (sal_Int32 i=0; i<nNumSiblings; ++i)
{
Reference<XPropertySet> xMyProps = this;
OUString sCurrentGroup;
sal_Int32 nNumSiblings = xIndexAccess->getCount();
for (sal_Int32 i=0; i<nNumSiblings; ++i)
{
Reference<XPropertySet> xSiblingProperties(xIndexAccess->getByIndex(i), UNO_QUERY);
if (!xSiblingProperties.is())
continue;
if (xMyProps == xSiblingProperties)
continue; // do not set myself
Reference<XPropertySet> xSiblingProperties(xIndexAccess->getByIndex(i), UNO_QUERY);
if (!xSiblingProperties.is())
continue;
if (xMyProps == xSiblingProperties)
continue; // do not set myself
// Only if it's a RadioButton
if (!hasProperty(PROPERTY_CLASSID, xSiblingProperties))
continue;
sal_Int16 nType = 0;
xSiblingProperties->getPropertyValue(PROPERTY_CLASSID) >>= nType;
if (nType != FormComponentType::RADIOBUTTON)
continue;
// Only if it's a RadioButton
if (!hasProperty(PROPERTY_CLASSID, xSiblingProperties))
continue;
sal_Int16 nType = 0;
xSiblingProperties->getPropertyValue(PROPERTY_CLASSID) >>= nType;
if (nType != FormComponentType::RADIOBUTTON)
continue;
// The group association is attached to the name
sCurrentGroup = OGroupManager::GetGroupName( xSiblingProperties );
if (sCurrentGroup == sMyGroup)
xSiblingProperties->setPropertyValue(rPropName, rValue);
}
// The group association is attached to the name
sCurrentGroup = OGroupManager::GetGroupName( xSiblingProperties );
if (sCurrentGroup == sMyGroup)
xSiblingProperties->setPropertyValue(rPropName, rValue);
}
}
@@ -175,62 +175,62 @@ void ORadioButtonModel::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, cons
setControlSource();
}
if (nHandle == PROPERTY_ID_DEFAULT_STATE)
{
sal_Int16 nValue;
rValue >>= nValue;
if (1 == nValue)
{ // Reset the 'default checked' for all Radios of the same group.
// Because (as the Highlander already knew): "There can be only one"
Any aZero;
nValue = 0;
aZero <<= nValue;
SetSiblingPropsTo(PROPERTY_DEFAULT_STATE, aZero);
}
if (nHandle != PROPERTY_ID_DEFAULT_STATE)
return;
sal_Int16 nValue;
rValue >>= nValue;
if (1 == nValue)
{ // Reset the 'default checked' for all Radios of the same group.
// Because (as the Highlander already knew): "There can be only one"
Any aZero;
nValue = 0;
aZero <<= nValue;
SetSiblingPropsTo(PROPERTY_DEFAULT_STATE, aZero);
}
}
void ORadioButtonModel::setControlSource()
{
Reference<XIndexAccess> xIndexAccess(getParent(), UNO_QUERY);
if (xIndexAccess.is())
if (!xIndexAccess.is())
return;
OUString sName, sGroupName;
if (hasProperty(PROPERTY_GROUP_NAME, this))
getPropertyValue(PROPERTY_GROUP_NAME) >>= sGroupName;
getPropertyValue(PROPERTY_NAME) >>= sName;
Reference<XPropertySet> xMyProps = this;
for (sal_Int32 i=0; i<xIndexAccess->getCount(); ++i)
{
OUString sName, sGroupName;
Reference<XPropertySet> xSiblingProperties(xIndexAccess->getByIndex(i), UNO_QUERY);
if (!xSiblingProperties.is())
continue;
if (hasProperty(PROPERTY_GROUP_NAME, this))
getPropertyValue(PROPERTY_GROUP_NAME) >>= sGroupName;
getPropertyValue(PROPERTY_NAME) >>= sName;
if (xMyProps == xSiblingProperties)
// Only if I didn't find myself
continue;
Reference<XPropertySet> xMyProps = this;
for (sal_Int32 i=0; i<xIndexAccess->getCount(); ++i)
sal_Int16 nType = 0;
xSiblingProperties->getPropertyValue(PROPERTY_CLASSID) >>= nType;
if (nType != FormComponentType::RADIOBUTTON)
// Only RadioButtons
continue;
OUString sSiblingName, sSiblingGroupName;
if (hasProperty(PROPERTY_GROUP_NAME, xSiblingProperties))
xSiblingProperties->getPropertyValue(PROPERTY_GROUP_NAME) >>= sSiblingGroupName;
xSiblingProperties->getPropertyValue(PROPERTY_NAME) >>= sSiblingName;
if ((sGroupName.isEmpty() && sSiblingGroupName.isEmpty() && // (no group name
sName == sSiblingName) || // names match) or
(!sGroupName.isEmpty() && !sSiblingGroupName.isEmpty() && // (have group name
sGroupName == sSiblingGroupName)) // they match)
{
Reference<XPropertySet> xSiblingProperties(xIndexAccess->getByIndex(i), UNO_QUERY);
if (!xSiblingProperties.is())
continue;
if (xMyProps == xSiblingProperties)
// Only if I didn't find myself
continue;
sal_Int16 nType = 0;
xSiblingProperties->getPropertyValue(PROPERTY_CLASSID) >>= nType;
if (nType != FormComponentType::RADIOBUTTON)
// Only RadioButtons
continue;
OUString sSiblingName, sSiblingGroupName;
if (hasProperty(PROPERTY_GROUP_NAME, xSiblingProperties))
xSiblingProperties->getPropertyValue(PROPERTY_GROUP_NAME) >>= sSiblingGroupName;
xSiblingProperties->getPropertyValue(PROPERTY_NAME) >>= sSiblingName;
if ((sGroupName.isEmpty() && sSiblingGroupName.isEmpty() && // (no group name
sName == sSiblingName) || // names match) or
(!sGroupName.isEmpty() && !sSiblingGroupName.isEmpty() && // (have group name
sGroupName == sSiblingGroupName)) // they match)
{
setPropertyValue(PROPERTY_CONTROLSOURCE, xSiblingProperties->getPropertyValue(PROPERTY_CONTROLSOURCE));
break;
}
setPropertyValue(PROPERTY_CONTROLSOURCE, xSiblingProperties->getPropertyValue(PROPERTY_CONTROLSOURCE));
break;
}
}
}
diff --git a/forms/source/component/Time.cxx b/forms/source/component/Time.cxx
index 3a6dbfc..8ab3e9a 100644
--- a/forms/source/component/Time.cxx
+++ b/forms/source/component/Time.cxx
@@ -196,18 +196,18 @@ void OTimeModel::onConnectedDbColumn( const Reference< XInterface >& _rxForm )
{
OBoundControlModel::onConnectedDbColumn( _rxForm );
Reference<XPropertySet> xField = getField();
if (xField.is())
if (!xField.is())
return;
m_bDateTimeField = false;
try
{
m_bDateTimeField = false;
try
{
sal_Int32 nFieldType = 0;
xField->getPropertyValue(PROPERTY_FIELDTYPE) >>= nFieldType;
m_bDateTimeField = (nFieldType == DataType::TIMESTAMP);
}
catch(const Exception&)
{
}
sal_Int32 nFieldType = 0;
xField->getPropertyValue(PROPERTY_FIELDTYPE) >>= nFieldType;
m_bDateTimeField = (nFieldType == DataType::TIMESTAMP);
}
catch(const Exception&)
{
}
}
diff --git a/forms/source/component/entrylisthelper.cxx b/forms/source/component/entrylisthelper.cxx
index a9c844e9..ef27610 100644
--- a/forms/source/component/entrylisthelper.cxx
+++ b/forms/source/component/entrylisthelper.cxx
@@ -131,35 +131,35 @@ namespace frm
OSL_ENSURE( ( _rEvent.Position > 0 ) && ( _rEvent.Count > 0 ) && ( _rEvent.Position + _rEvent.Count <= static_cast<sal_Int32>(m_aStringItems.size()) ),
"OEntryListHelper::entryRangeRemoved: invalid count and/or position!" );
if ( ( _rEvent.Position > 0 )
if ( !(( _rEvent.Position > 0 )
&& ( _rEvent.Count > 0 )
&& ( _rEvent.Position + _rEvent.Count <= static_cast<sal_Int32>(m_aStringItems.size()) )
&& ( _rEvent.Position + _rEvent.Count <= static_cast<sal_Int32>(m_aStringItems.size()) ))
)
return;
m_aStringItems.erase(m_aStringItems.begin() + _rEvent.Position,
m_aStringItems.begin() + _rEvent.Position + _rEvent.Count );
if (_rEvent.Position + _rEvent.Count <= m_aTypedItems.getLength())
{
m_aStringItems.erase(m_aStringItems.begin() + _rEvent.Position,
m_aStringItems.begin() + _rEvent.Position + _rEvent.Count );
if (_rEvent.Position + _rEvent.Count <= m_aTypedItems.getLength())
Sequence<Any> aTmp( m_aTypedItems.getLength() - _rEvent.Count );
sal_Int32 nStop = _rEvent.Position;
sal_Int32 i = 0;
for ( ; i < nStop; ++i)
{
Sequence<Any> aTmp( m_aTypedItems.getLength() - _rEvent.Count );
sal_Int32 nStop = _rEvent.Position;
sal_Int32 i = 0;
for ( ; i < nStop; ++i)
{
aTmp[i] = m_aTypedItems[i];
}
nStop = aTmp.getLength();
for (sal_Int32 j = _rEvent.Position + _rEvent.Count; i < nStop; ++i, ++j)
{
aTmp[i] = m_aTypedItems[j];
}
m_aTypedItems = aTmp;
aTmp[i] = m_aTypedItems[i];
}
else if (m_aTypedItems.hasElements())
nStop = aTmp.getLength();
for (sal_Int32 j = _rEvent.Position + _rEvent.Count; i < nStop; ++i, ++j)
{
m_aTypedItems = Sequence<Any>(); // doesn't match anymore
aTmp[i] = m_aTypedItems[j];
}
stringItemListChanged( aLock );
m_aTypedItems = aTmp;
}
else if (m_aTypedItems.hasElements())
{
m_aTypedItems = Sequence<Any>(); // doesn't match anymore
}
stringItemListChanged( aLock );
}
diff --git a/forms/source/component/imgprod.cxx b/forms/source/component/imgprod.cxx
index 930fa60..a7435f2 100644
--- a/forms/source/component/imgprod.cxx
+++ b/forms/source/component/imgprod.cxx
@@ -62,26 +62,26 @@ ImgProdLockBytes::ImgProdLockBytes( SvStream* pStm, bool bOwner ) :
ImgProdLockBytes::ImgProdLockBytes( css::uno::Reference< css::io::XInputStream > const & rStmRef ) :
xStmRef( rStmRef )
{
if( xStmRef.is() )
if( !xStmRef.is() )
return;
const sal_uInt32 nBytesToRead = 65535;
sal_uInt32 nRead;
do
{
const sal_uInt32 nBytesToRead = 65535;
sal_uInt32 nRead;
css::uno::Sequence< sal_Int8 > aReadSeq;
do
nRead = xStmRef->readSomeBytes( aReadSeq, nBytesToRead );
if( nRead )
{
css::uno::Sequence< sal_Int8 > aReadSeq;
nRead = xStmRef->readSomeBytes( aReadSeq, nBytesToRead );
if( nRead )
{
const sal_uInt32 nOldLength = maSeq.getLength();
maSeq.realloc( nOldLength + nRead );
memcpy( maSeq.getArray() + nOldLength, aReadSeq.getConstArray(), aReadSeq.getLength() );
}
const sal_uInt32 nOldLength = maSeq.getLength();
maSeq.realloc( nOldLength + nRead );
memcpy( maSeq.getArray() + nOldLength, aReadSeq.getConstArray(), aReadSeq.getLength() );
}
while( nBytesToRead == nRead );
}
while( nBytesToRead == nRead );
}
ErrCode ImgProdLockBytes::ReadAt(sal_uInt64 const nPos,
@@ -248,45 +248,45 @@ void ImageProducer::NewDataAvailable()
void ImageProducer::startProduction()
{
if( !maConsList.empty() || maDoneHdl.IsSet() )
if( !(!maConsList.empty() || maDoneHdl.IsSet()) )
return;
bool bNotifyEmptyGraphics = false;
// valid stream or filled graphic? => update consumers
if( mpStm || ( mpGraphic->GetType() != GraphicType::NONE ) )
{
bool bNotifyEmptyGraphics = false;
// valid stream or filled graphic? => update consumers
if( mpStm || ( mpGraphic->GetType() != GraphicType::NONE ) )
// if we already have a graphic, we don't have to import again;
// graphic is cleared if a new Stream is set
if( ( mpGraphic->GetType() == GraphicType::NONE ) || mpGraphic->GetReaderContext() )
{
// if we already have a graphic, we don't have to import again;
// graphic is cleared if a new Stream is set
if( ( mpGraphic->GetType() == GraphicType::NONE ) || mpGraphic->GetReaderContext() )
{
if ( ImplImportGraphic( *mpGraphic ) )
maDoneHdl.Call( mpGraphic.get() );
}
if( mpGraphic->GetType() != GraphicType::NONE )
ImplUpdateData( *mpGraphic );
else
bNotifyEmptyGraphics = true;
if ( ImplImportGraphic( *mpGraphic ) )
maDoneHdl.Call( mpGraphic.get() );
}
if( mpGraphic->GetType() != GraphicType::NONE )
ImplUpdateData( *mpGraphic );
else
bNotifyEmptyGraphics = true;
if ( bNotifyEmptyGraphics )
{
// reset image
// create temporary list to hold interfaces
ConsumerList_t aTmp = maConsList;
// iterate through interfaces
for (auto const& elem : aTmp)
{
elem->init( 0, 0 );
elem->complete( css::awt::ImageStatus::IMAGESTATUS_STATICIMAGEDONE, this );
}
maDoneHdl.Call( nullptr );
}
}
else
bNotifyEmptyGraphics = true;
if ( !bNotifyEmptyGraphics )
return;
// reset image
// create temporary list to hold interfaces
ConsumerList_t aTmp = maConsList;
// iterate through interfaces
for (auto const& elem : aTmp)
{
elem->init( 0, 0 );
elem->complete( css::awt::ImageStatus::IMAGESTATUS_STATICIMAGEDONE, this );
}
maDoneHdl.Call( nullptr );
}
@@ -360,99 +360,72 @@ void ImageProducer::ImplUpdateConsumer( const Graphic& rGraphic )
Bitmap aBmp( aBmpEx.GetBitmap() );
BitmapReadAccess* pBmpAcc = aBmp.AcquireReadAccess();
if( pBmpAcc )
if( !pBmpAcc )
return;
Bitmap aMask( aBmpEx.GetMask() );
BitmapReadAccess* pMskAcc = !!aMask ? aMask.AcquireReadAccess() : nullptr;
const long nWidth = pBmpAcc->Width();
const long nHeight = pBmpAcc->Height();
const long nStartX = 0;
const long nEndX = nWidth - 1;
const long nStartY = 0;
const long nEndY = nHeight - 1;
const long nPartWidth = nEndX - nStartX + 1;
const long nPartHeight = nEndY - nStartY + 1;
if( !pMskAcc )
{
Bitmap aMask( aBmpEx.GetMask() );
BitmapReadAccess* pMskAcc = !!aMask ? aMask.AcquireReadAccess() : nullptr;
const long nWidth = pBmpAcc->Width();
const long nHeight = pBmpAcc->Height();
const long nStartX = 0;
const long nEndX = nWidth - 1;
const long nStartY = 0;
const long nEndY = nHeight - 1;
const long nPartWidth = nEndX - nStartX + 1;
const long nPartHeight = nEndY - nStartY + 1;
aMask = Bitmap( aBmp.GetSizePixel(), 1 );
aMask.Erase( COL_BLACK );
pMskAcc = aMask.AcquireReadAccess();
}
if( !pMskAcc )
// create temporary list to hold interfaces
ConsumerList_t aTmp = maConsList;
if( pBmpAcc->HasPalette() )
{
const BitmapColor aWhite( pMskAcc->GetBestMatchingColor( COL_WHITE ) );
if( mnTransIndex < 256 )
{
aMask = Bitmap( aBmp.GetSizePixel(), 1 );
aMask.Erase( COL_BLACK );
pMskAcc = aMask.AcquireReadAccess();
}
css::uno::Sequence<sal_Int8> aData( nPartWidth * nPartHeight );
sal_Int8* pTmp = aData.getArray();
// create temporary list to hold interfaces
ConsumerList_t aTmp = maConsList;
if( pBmpAcc->HasPalette() )
{
const BitmapColor aWhite( pMskAcc->GetBestMatchingColor( COL_WHITE ) );
if( mnTransIndex < 256 )
for( long nY = nStartY; nY <= nEndY; nY++ )
{
css::uno::Sequence<sal_Int8> aData( nPartWidth * nPartHeight );
sal_Int8* pTmp = aData.getArray();
for( long nY = nStartY; nY <= nEndY; nY++ )
Scanline pScanlineMask = pMskAcc->GetScanline( nY );
Scanline pScanline = pBmpAcc->GetScanline( nY );
for( long nX = nStartX; nX <= nEndX; nX++ )
{
Scanline pScanlineMask = pMskAcc->GetScanline( nY );
Scanline pScanline = pBmpAcc->GetScanline( nY );
for( long nX = nStartX; nX <= nEndX; nX++ )
{
if( pMskAcc->GetPixelFromData( pScanlineMask, nX ) == aWhite )
*pTmp++ = sal::static_int_cast< sal_Int8 >(
mnTransIndex );
else
*pTmp++ = pBmpAcc->GetPixelFromData( pScanline, nX ).GetIndex();
}
if( pMskAcc->GetPixelFromData( pScanlineMask, nX ) == aWhite )
*pTmp++ = sal::static_int_cast< sal_Int8 >(
mnTransIndex );
else
*pTmp++ = pBmpAcc->GetPixelFromData( pScanline, nX ).GetIndex();
}
// iterate through interfaces
for (auto const& elem : aTmp)
elem->setPixelsByBytes( nStartX, nStartY, nPartWidth, nPartHeight, aData, 0UL, nPartWidth );
}
else
{
css::uno::Sequence<sal_Int32> aData( nPartWidth * nPartHeight );
sal_Int32* pTmp = aData.getArray();
for( long nY = nStartY; nY <= nEndY; nY++ )
{
Scanline pScanlineMask = pMskAcc->GetScanline( nY );
Scanline pScanline = pBmpAcc->GetScanline( nY );
for( long nX = nStartX; nX <= nEndX; nX++ )
{
if( pMskAcc->GetPixelFromData( pScanlineMask, nX ) == aWhite )
*pTmp++ = mnTransIndex;
else
*pTmp++ = pBmpAcc->GetPixelFromData( pScanline, nX ).GetIndex();
}
}
// iterate through interfaces
for (auto const& elem : aTmp)
elem->setPixelsByLongs( nStartX, nStartY, nPartWidth, nPartHeight, aData, 0UL, nPartWidth );
}
// iterate through interfaces
for (auto const& elem : aTmp)
elem->setPixelsByBytes( nStartX, nStartY, nPartWidth, nPartHeight, aData, 0UL, nPartWidth );
}
else
{
css::uno::Sequence<sal_Int32> aData( nPartWidth * nPartHeight );
const BitmapColor aWhite( pMskAcc->GetBestMatchingColor( COL_WHITE ) );
sal_Int32* pTmp = aData.getArray();
for( long nY = nStartY; nY <= nEndY; nY++ )
{
Scanline pScanlineMask = pMskAcc->GetScanline( nY );
Scanline pScanline = pBmpAcc->GetScanline( nY );
for( long nX = nStartX; nX <= nEndX; nX++, pTmp++ )
for( long nX = nStartX; nX <= nEndX; nX++ )
{
const BitmapColor aCol( pBmpAcc->GetPixelFromData( pScanline, nX ) );
*pTmp = static_cast<sal_Int32>(aCol.GetRed()) << 24;
*pTmp |= static_cast<sal_Int32>(aCol.GetGreen()) << 16;
*pTmp |= static_cast<sal_Int32>(aCol.GetBlue()) << 8;
if( pMskAcc->GetPixelFromData( pScanlineMask, nX ) != aWhite )
*pTmp |= 0x000000ffUL;
if( pMskAcc->GetPixelFromData( pScanlineMask, nX ) == aWhite )
*pTmp++ = mnTransIndex;
else
*pTmp++ = pBmpAcc->GetPixelFromData( pScanline, nX ).GetIndex();
}
}
@@ -460,10 +433,37 @@ void ImageProducer::ImplUpdateConsumer( const Graphic& rGraphic )
for (auto const& elem : aTmp)
elem->setPixelsByLongs( nStartX, nStartY, nPartWidth, nPartHeight, aData, 0UL, nPartWidth );
}
Bitmap::ReleaseAccess( pBmpAcc );
Bitmap::ReleaseAccess( pMskAcc );
}
else
{
css::uno::Sequence<sal_Int32> aData( nPartWidth * nPartHeight );
const BitmapColor aWhite( pMskAcc->GetBestMatchingColor( COL_WHITE ) );
sal_Int32* pTmp = aData.getArray();
for( long nY = nStartY; nY <= nEndY; nY++ )
{
Scanline pScanlineMask = pMskAcc->GetScanline( nY );
Scanline pScanline = pBmpAcc->GetScanline( nY );
for( long nX = nStartX; nX <= nEndX; nX++, pTmp++ )
{
const BitmapColor aCol( pBmpAcc->GetPixelFromData( pScanline, nX ) );
*pTmp = static_cast<sal_Int32>(aCol.GetRed()) << 24;
*pTmp |= static_cast<sal_Int32>(aCol.GetGreen()) << 16;
*pTmp |= static_cast<sal_Int32>(aCol.GetBlue()) << 8;
if( pMskAcc->GetPixelFromData( pScanlineMask, nX ) != aWhite )
*pTmp |= 0x000000ffUL;
}
}
// iterate through interfaces
for (auto const& elem : aTmp)
elem->setPixelsByLongs( nStartX, nStartY, nPartWidth, nPartHeight, aData, 0UL, nPartWidth );
}
Bitmap::ReleaseAccess( pBmpAcc );
Bitmap::ReleaseAccess( pMskAcc );
}
diff --git a/forms/source/helper/formnavigation.cxx b/forms/source/helper/formnavigation.cxx
index 96e2b6b..5182b05 100644
--- a/forms/source/helper/formnavigation.cxx
+++ b/forms/source/helper/formnavigation.cxx
@@ -119,21 +119,21 @@ namespace frm
void SAL_CALL OFormNavigationHelper::disposing( const EventObject& _rSource )
{
// was it one of our external dispatchers?
if ( m_nConnectedFeatures )
{
for (auto & feature : m_aSupportedFeatures)
{
if ( feature.second.xDispatcher == _rSource.Source )
{
feature.second.xDispatcher->removeStatusListener( static_cast< XStatusListener* >( this ), feature.second.aURL );
feature.second.xDispatcher = nullptr;
feature.second.bCachedState = false;
feature.second.aCachedAdditionalState.clear();
--m_nConnectedFeatures;
if ( !m_nConnectedFeatures )
return;
featureStateChanged( feature.first, false );
break;
}
for (auto & feature : m_aSupportedFeatures)
{
if ( feature.second.xDispatcher == _rSource.Source )
{
feature.second.xDispatcher->removeStatusListener( static_cast< XStatusListener* >( this ), feature.second.aURL );
feature.second.xDispatcher = nullptr;
feature.second.bCachedState = false;
feature.second.aCachedAdditionalState.clear();
--m_nConnectedFeatures;
featureStateChanged( feature.first, false );
break;
}
}
}
@@ -234,26 +234,26 @@ namespace frm
void OFormNavigationHelper::initializeSupportedFeatures( )
{
if ( m_aSupportedFeatures.empty() )
if ( !m_aSupportedFeatures.empty() )
return;
// ask the derivee which feature ids it wants us to support
::std::vector< sal_Int16 > aFeatureIds;
getSupportedFeatures( aFeatureIds );
OFormNavigationMapper aUrlMapper( m_xORB );
for (auto const& feature : aFeatureIds)
{
// ask the derivee which feature ids it wants us to support
::std::vector< sal_Int16 > aFeatureIds;
getSupportedFeatures( aFeatureIds );
FeatureInfo aFeatureInfo;
OFormNavigationMapper aUrlMapper( m_xORB );
bool bKnownId =
aUrlMapper.getFeatureURL( feature, aFeatureInfo.aURL );
DBG_ASSERT( bKnownId, "OFormNavigationHelper::initializeSupportedFeatures: unknown feature id!" );
for (auto const& feature : aFeatureIds)
{
FeatureInfo aFeatureInfo;
bool bKnownId =
aUrlMapper.getFeatureURL( feature, aFeatureInfo.aURL );
DBG_ASSERT( bKnownId, "OFormNavigationHelper::initializeSupportedFeatures: unknown feature id!" );
if ( bKnownId )
// add to our map
m_aSupportedFeatures.emplace( feature, aFeatureInfo );
}
if ( bKnownId )
// add to our map
m_aSupportedFeatures.emplace( feature, aFeatureInfo );
}
}
diff --git a/forms/source/misc/InterfaceContainer.cxx b/forms/source/misc/InterfaceContainer.cxx
index a30c408..41dbd7f3 100644
--- a/forms/source/misc/InterfaceContainer.cxx
+++ b/forms/source/misc/InterfaceContainer.cxx
@@ -353,20 +353,21 @@ struct TransformEventTo52Format
{
void operator()( ScriptEventDescriptor& _rDescriptor )
{
if ( _rDescriptor.ScriptType == "StarBasic" )
{ // it's a starbasic macro
sal_Int32 nPrefixLength = _rDescriptor.ScriptCode.indexOf( ':' );
if ( 0 <= nPrefixLength )
{ // the macro name does not already contain a :
if ( _rDescriptor.ScriptType != "StarBasic" )
return;
// it's a starbasic macro
sal_Int32 nPrefixLength = _rDescriptor.ScriptCode.indexOf( ':' );
if ( 0 <= nPrefixLength )
{ // the macro name does not already contain a :
#ifdef DBG_UTIL
const OUString sPrefix = _rDescriptor.ScriptCode.copy( 0, nPrefixLength );
DBG_ASSERT( sPrefix == "document"
|| sPrefix == "application",
"TransformEventTo52Format: invalid (unknown) prefix!" );
const OUString sPrefix = _rDescriptor.ScriptCode.copy( 0, nPrefixLength );
DBG_ASSERT( sPrefix == "document"
|| sPrefix == "application",
"TransformEventTo52Format: invalid (unknown) prefix!" );
#endif
// cut the prefix
_rDescriptor.ScriptCode = _rDescriptor.ScriptCode.copy( nPrefixLength + 1 );
}
// cut the prefix
_rDescriptor.ScriptCode = _rDescriptor.ScriptCode.copy( nPrefixLength + 1 );
}
}
};
@@ -449,26 +450,26 @@ void SAL_CALL OInterfaceContainer::write( const Reference< XObjectOutputStream >
// Write length
_rxOutStream->writeLong(nLen);
if (nLen)
if (!nLen)
return;
// 1. Version
_rxOutStream->writeShort(0x0001);
// 2. Objects
for (sal_Int32 i = 0; i < nLen; i++)
{
// 1. Version
_rxOutStream->writeShort(0x0001);
// 2. Objects
for (sal_Int32 i = 0; i < nLen; i++)
Reference<XPersistObject> xObj(m_aItems[i], UNO_QUERY);
if (xObj.is())
_rxOutStream->writeObject(xObj);
else
{
Reference<XPersistObject> xObj(m_aItems[i], UNO_QUERY);
if (xObj.is())
_rxOutStream->writeObject(xObj);
else
{
// Error
}
// Error
}
// 3. Scripts
writeEvents(_rxOutStream);
}
// 3. Scripts
writeEvents(_rxOutStream);
}
@@ -619,47 +620,47 @@ void SAL_CALL OInterfaceContainer::disposing(const css::lang::EventObject& _rSou
break;
}
if ( m_aItems.end() != j )
if ( m_aItems.end() == j )
return;
m_aItems.erase(j);
// look up in, and erase from, m_aMap, too
OInterfaceMap::iterator i = m_aMap.begin();
while ( i != m_aMap.end() )
{
m_aItems.erase(j);
DBG_ASSERT( i->second.get() == Reference< XInterface >( i->second, UNO_QUERY ).get(),
"OInterfaceContainer::disposing: map element not normalized!" );
// look up in, and erase from, m_aMap, too
OInterfaceMap::iterator i = m_aMap.begin();
while ( i != m_aMap.end() )
if ( i->second.get() == xSource.get() )
{
DBG_ASSERT( i->second.get() == Reference< XInterface >( i->second, UNO_QUERY ).get(),
"OInterfaceContainer::disposing: map element not normalized!" );
if ( i->second.get() == xSource.get() )
{
// found it
m_aMap.erase(i);
break;
}
++i;
DBG_ASSERT( i != m_aMap.end(), "OInterfaceContainer::disposing: inconsistency: the element was in m_aItems, but not in m_aMap!" );
// found it
m_aMap.erase(i);
break;
}
++i;
DBG_ASSERT( i != m_aMap.end(), "OInterfaceContainer::disposing: inconsistency: the element was in m_aItems, but not in m_aMap!" );
}
}
// XPropertyChangeListener
void OInterfaceContainer::propertyChange(const PropertyChangeEvent& evt) {
if (evt.PropertyName == PROPERTY_NAME)
{
::osl::MutexGuard aGuard( m_rMutex );
auto range = m_aMap.equal_range(::comphelper::getString(evt.OldValue));
for (auto it = range.first; it != range.second; ++it)
if (it->second == evt.Source)
{
css::uno::Reference<css::uno::XInterface> xCorrectType(it->second);
m_aMap.erase(it);
m_aMap.insert(::std::pair<const OUString, css::uno::Reference<css::uno::XInterface> >(::comphelper::getString(evt.NewValue),xCorrectType));
break;
}
}
if (evt.PropertyName != PROPERTY_NAME)
return;
::osl::MutexGuard aGuard( m_rMutex );
auto range = m_aMap.equal_range(::comphelper::getString(evt.OldValue));
for (auto it = range.first; it != range.second; ++it)
if (it->second == evt.Source)
{
css::uno::Reference<css::uno::XInterface> xCorrectType(it->second);
m_aMap.erase(it);
m_aMap.insert(::std::pair<const OUString, css::uno::Reference<css::uno::XInterface> >(::comphelper::getString(evt.NewValue),xCorrectType));
break;
}
}
// XElementAccess
diff --git a/forms/source/misc/limitedformats.cxx b/forms/source/misc/limitedformats.cxx
index 3ee26ec..f49b861 100644
--- a/forms/source/misc/limitedformats.cxx
+++ b/forms/source/misc/limitedformats.cxx
@@ -148,53 +148,53 @@ namespace frm
void OLimitedFormats::ensureTableInitialized(const sal_Int16 _nTableId)
{
FormatEntry* pFormatTable = lcl_getFormatTable(_nTableId);
if (-1 == pFormatTable->nKey)
if (-1 != pFormatTable->nKey)
return;
::osl::MutexGuard aGuard(s_aMutex);
if (-1 != pFormatTable->nKey)
return;
// initialize the keys
Reference<XNumberFormats> xStandardFormats;
if (s_xStandardFormats.is())
xStandardFormats = s_xStandardFormats->getNumberFormats();
OSL_ENSURE(xStandardFormats.is(), "OLimitedFormats::ensureTableInitialized: don't have a formats supplier!");
if (!xStandardFormats.is())
return;
// loop through the table
FormatEntry* pLoopFormats = pFormatTable;
while (pLoopFormats->pDescription)
{
::osl::MutexGuard aGuard(s_aMutex);
if (-1 == pFormatTable->nKey)
// get the key for the description
pLoopFormats->nKey = xStandardFormats->queryKey(
OUString::createFromAscii(pLoopFormats->pDescription),
getLocale(pLoopFormats->eLocale),
false
);
if (-1 == pLoopFormats->nKey)
{
// initialize the keys
Reference<XNumberFormats> xStandardFormats;
if (s_xStandardFormats.is())
xStandardFormats = s_xStandardFormats->getNumberFormats();
OSL_ENSURE(xStandardFormats.is(), "OLimitedFormats::ensureTableInitialized: don't have a formats supplier!");
if (xStandardFormats.is())
{
// loop through the table
FormatEntry* pLoopFormats = pFormatTable;
while (pLoopFormats->pDescription)
{
// get the key for the description
pLoopFormats->nKey = xStandardFormats->queryKey(
OUString::createFromAscii(pLoopFormats->pDescription),
getLocale(pLoopFormats->eLocale),
false
);
if (-1 == pLoopFormats->nKey)
{
pLoopFormats->nKey = xStandardFormats->addNew(
OUString::createFromAscii(pLoopFormats->pDescription),
getLocale(pLoopFormats->eLocale)
);
pLoopFormats->nKey = xStandardFormats->addNew(
OUString::createFromAscii(pLoopFormats->pDescription),
getLocale(pLoopFormats->eLocale)
);
#ifdef DBG_UTIL
try
{
xStandardFormats->getByKey(pLoopFormats->nKey);
}
catch(const Exception&)
{
OSL_FAIL("OLimitedFormats::ensureTableInitialized: adding the key to the formats collection failed!");
}
#endif
}
// next
++pLoopFormats;
}
try
{
xStandardFormats->getByKey(pLoopFormats->nKey);
}
catch(const Exception&)
{
OSL_FAIL("OLimitedFormats::ensureTableInitialized: adding the key to the formats collection failed!");
}
#endif
}
// next
++pLoopFormats;
}
}
@@ -241,27 +241,27 @@ namespace frm
_rValue.clear();
OSL_ENSURE(m_xAggregate.is() && (-1 != m_nFormatEnumPropertyHandle), "OLimitedFormats::getFormatKeyPropertyValue: not initialized!");
if (m_xAggregate.is())
{
// get the aggregate's enum property value
Any aEnumPropertyValue = m_xAggregate->getFastPropertyValue(m_nFormatEnumPropertyHandle);
sal_Int32 nValue = -1;
::cppu::enum2int(nValue, aEnumPropertyValue);
if (!m_xAggregate.is())
return;
// get the translation table
const FormatEntry* pFormats = lcl_getFormatTable(m_nTableId);
// get the aggregate's enum property value
Any aEnumPropertyValue = m_xAggregate->getFastPropertyValue(m_nFormatEnumPropertyHandle);
sal_Int32 nValue = -1;
::cppu::enum2int(nValue, aEnumPropertyValue);
// seek to the nValue'th entry
sal_Int32 nLookup = 0;
for ( ;
(nullptr != pFormats->pDescription) && (nLookup < nValue);
++pFormats, ++nLookup
)
;
OSL_ENSURE(nullptr != pFormats->pDescription, "OLimitedFormats::getFormatKeyPropertyValue: did not find the value!");
if (pFormats->pDescription)
_rValue <<= pFormats->nKey;
}
// get the translation table
const FormatEntry* pFormats = lcl_getFormatTable(m_nTableId);
// seek to the nValue'th entry
sal_Int32 nLookup = 0;
for ( ;
(nullptr != pFormats->pDescription) && (nLookup < nValue);
++pFormats, ++nLookup
)
;
OSL_ENSURE(nullptr != pFormats->pDescription, "OLimitedFormats::getFormatKeyPropertyValue: did not find the value!");
if (pFormats->pDescription)
_rValue <<= pFormats->nKey;
// TODO: should use a standard format for the control type we're working for
}
diff --git a/forms/source/richtext/richtextcontrol.cxx b/forms/source/richtext/richtextcontrol.cxx
index 4cf1f391..1c96b98 100644
--- a/forms/source/richtext/richtextcontrol.cxx
+++ b/forms/source/richtext/richtextcontrol.cxx
@@ -168,51 +168,51 @@ namespace frm
SolarMutexGuard aGuard;
if (!getPeer().is())
if (getPeer().is())
return;
mbCreatingPeer = true;
// determine the VLC window for the parent
vcl::Window* pParentWin = nullptr;
if ( _rParentPeer.is() )
{
mbCreatingPeer = true;
// determine the VLC window for the parent
vcl::Window* pParentWin = nullptr;
if ( _rParentPeer.is() )
{
VCLXWindow* pParentXWin = comphelper::getUnoTunnelImplementation<VCLXWindow>( _rParentPeer );
if ( pParentXWin )
pParentWin = pParentXWin->GetWindow().get();
DBG_ASSERT( pParentWin, "ORichTextControl::createPeer: could not obtain the VCL-level parent window!" );
}
// create the peer
Reference< XControlModel > xModel( getModel() );
rtl::Reference<ORichTextPeer> pPeer = ORichTextPeer::Create( xModel, pParentWin, getWinBits( xModel ) );
DBG_ASSERT( pPeer, "ORichTextControl::createPeer: invalid peer returned!" );
if ( pPeer )
{
// announce the peer to the base class
setPeer( pPeer.get() );
// initialize ourself (and thus the peer) with the model properties
updateFromModel();
Reference< XView > xPeerView( getPeer(), UNO_QUERY );
if ( xPeerView.is() )
{
xPeerView->setZoom( maComponentInfos.nZoomX, maComponentInfos.nZoomY );
xPeerView->setGraphics( mxGraphics );
}
// a lot of initial settings from our component infos
setPosSize( maComponentInfos.nX, maComponentInfos.nY, maComponentInfos.nWidth, maComponentInfos.nHeight, PosSize::POSSIZE );
pPeer->setVisible ( maComponentInfos.bVisible && !mbDesignMode );
pPeer->setEnable ( maComponentInfos.bEnable );
pPeer->setDesignMode( mbDesignMode );
peerCreated();
}
mbCreatingPeer = false;
VCLXWindow* pParentXWin = comphelper::getUnoTunnelImplementation<VCLXWindow>( _rParentPeer );
if ( pParentXWin )
pParentWin = pParentXWin->GetWindow().get();
DBG_ASSERT( pParentWin, "ORichTextControl::createPeer: could not obtain the VCL-level parent window!" );
}
// create the peer
Reference< XControlModel > xModel( getModel() );
rtl::Reference<ORichTextPeer> pPeer = ORichTextPeer::Create( xModel, pParentWin, getWinBits( xModel ) );
DBG_ASSERT( pPeer, "ORichTextControl::createPeer: invalid peer returned!" );
if ( pPeer )
{
// announce the peer to the base class
setPeer( pPeer.get() );
// initialize ourself (and thus the peer) with the model properties
updateFromModel();
Reference< XView > xPeerView( getPeer(), UNO_QUERY );
if ( xPeerView.is() )
{
xPeerView->setZoom( maComponentInfos.nZoomX, maComponentInfos.nZoomY );
xPeerView->setGraphics( mxGraphics );
}
// a lot of initial settings from our component infos
setPosSize( maComponentInfos.nX, maComponentInfos.nY, maComponentInfos.nWidth, maComponentInfos.nHeight, PosSize::POSSIZE );
pPeer->setVisible ( maComponentInfos.bVisible && !mbDesignMode );
pPeer->setEnable ( maComponentInfos.bEnable );
pPeer->setDesignMode( mbDesignMode );
peerCreated();
}
mbCreatingPeer = false;
}
OUString SAL_CALL ORichTextControl::getImplementationName()
diff --git a/forms/source/richtext/rtattributehandler.cxx b/forms/source/richtext/rtattributehandler.cxx
index 1f17b32..ee7a3fe 100644
--- a/forms/source/richtext/rtattributehandler.cxx
+++ b/forms/source/richtext/rtattributehandler.cxx
@@ -345,26 +345,26 @@ namespace frm
const SvxFontHeightItem* pFontHeightItem = dynamic_cast<const SvxFontHeightItem*>( _pAdditionalArg );
OSL_ENSURE( pFontHeightItem, "FontSizeHandler::executeAttribute: need a FontHeightItem!" );
if ( pFontHeightItem )
if ( !pFontHeightItem )
return;
sal_uLong nHeight = pFontHeightItem->GetHeight();
if ( _rNewAttribs.GetPool()->GetMetric( getWhich() ) != MapUnit::MapTwip )
{
sal_uLong nHeight = pFontHeightItem->GetHeight();
if ( _rNewAttribs.GetPool()->GetMetric( getWhich() ) != MapUnit::MapTwip )
{
nHeight = OutputDevice::LogicToLogic(
Size( 0, nHeight ),
MapMode( MapUnit::MapTwip ),
MapMode( _rNewAttribs.GetPool()->GetMetric( getWhich() ) )
).Height();
}
SvxFontHeightItem aNewItem( nHeight, 100, getWhich() );
aNewItem.SetProp( pFontHeightItem->GetProp(), pFontHeightItem->GetPropUnit() );
if ( ( getAttributeId() == SID_ATTR_CHAR_FONTHEIGHT ) && _nForScriptType != SvtScriptType::NONE)
putItemForScript( _rNewAttribs, aNewItem, _nForScriptType );
else
_rNewAttribs.Put( aNewItem );
nHeight = OutputDevice::LogicToLogic(
Size( 0, nHeight ),
MapMode( MapUnit::MapTwip ),
MapMode( _rNewAttribs.GetPool()->GetMetric( getWhich() ) )
).Height();
}
SvxFontHeightItem aNewItem( nHeight, 100, getWhich() );
aNewItem.SetProp( pFontHeightItem->GetProp(), pFontHeightItem->GetPropUnit() );
if ( ( getAttributeId() == SID_ATTR_CHAR_FONTHEIGHT ) && _nForScriptType != SvtScriptType::NONE)
putItemForScript( _rNewAttribs, aNewItem, _nForScriptType );
else
_rNewAttribs.Put( aNewItem );
}
ParagraphDirectionHandler::ParagraphDirectionHandler( AttributeId _nAttributeId )
diff --git a/forms/source/runtime/formoperations.cxx b/forms/source/runtime/formoperations.cxx
index 90208a5..6966160 100644
--- a/forms/source/runtime/formoperations.cxx
+++ b/forms/source/runtime/formoperations.cxx
@@ -1022,39 +1022,39 @@ namespace frm
impl_invalidateAllSupportedFeatures_nothrow( aGuard );
}
if ( m_xParser.is() && ( m_xCursor == _rEvent.Source ) )
if ( !(m_xParser.is() && ( m_xCursor == _rEvent.Source )) )
return;
try
{
try
OUString sNewValue;
_rEvent.NewValue >>= sNewValue;
if ( _rEvent.PropertyName == PROPERTY_ACTIVECOMMAND )
{
OUString sNewValue;
m_xParser->setElementaryQuery( sNewValue );
}
else if ( _rEvent.PropertyName == PROPERTY_FILTER )
{
if ( m_xParser->getFilter() != sNewValue )
m_xParser->setFilter( sNewValue );
}
else if ( _rEvent.PropertyName == PROPERTY_HAVINGCLAUSE )
{
if ( m_xParser->getHavingClause() != sNewValue )
m_xParser->setHavingClause( sNewValue );
}
else if ( _rEvent.PropertyName == PROPERTY_SORT )
{
_rEvent.NewValue >>= sNewValue;
if ( _rEvent.PropertyName == PROPERTY_ACTIVECOMMAND )
{
m_xParser->setElementaryQuery( sNewValue );
}
else if ( _rEvent.PropertyName == PROPERTY_FILTER )
{
if ( m_xParser->getFilter() != sNewValue )
m_xParser->setFilter( sNewValue );
}
else if ( _rEvent.PropertyName == PROPERTY_HAVINGCLAUSE )
{
if ( m_xParser->getHavingClause() != sNewValue )
m_xParser->setHavingClause( sNewValue );
}
else if ( _rEvent.PropertyName == PROPERTY_SORT )
{
_rEvent.NewValue >>= sNewValue;
if ( m_xParser->getOrder() != sNewValue )
m_xParser->setOrder( sNewValue );
}
if ( m_xParser->getOrder() != sNewValue )
m_xParser->setOrder( sNewValue );
}
catch( const Exception& )
{
OSL_FAIL( "FormOperations::propertyChange: caught an exception while updating the parser!" );
}
impl_invalidateAllSupportedFeatures_nothrow( aGuard );
}
catch( const Exception& )
{
OSL_FAIL( "FormOperations::propertyChange: caught an exception while updating the parser!" );
}
impl_invalidateAllSupportedFeatures_nothrow( aGuard );
}
diff --git a/forms/source/solar/component/navbarcontrol.cxx b/forms/source/solar/component/navbarcontrol.cxx
index 78acd82..f39464f 100644
--- a/forms/source/solar/component/navbarcontrol.cxx
+++ b/forms/source/solar/component/navbarcontrol.cxx
@@ -114,48 +114,48 @@ namespace frm
{
SolarMutexGuard aGuard;
if (!getPeer().is())
if (getPeer().is())
return;
mbCreatingPeer = true;
// determine the VLC window for the parent
vcl::Window* pParentWin = nullptr;
if ( _rParentPeer.is() )
{
mbCreatingPeer = true;
// determine the VLC window for the parent
vcl::Window* pParentWin = nullptr;
if ( _rParentPeer.is() )
{
VCLXWindow* pParentXWin = comphelper::getUnoTunnelImplementation<VCLXWindow>( _rParentPeer );
if ( pParentXWin )
pParentWin = pParentXWin->GetWindow().get();
DBG_ASSERT( pParentWin, "ONavigationBarControl::createPeer: could not obtain the VCL-level parent window!" );
}
// create the peer
rtl::Reference<ONavigationBarPeer> pPeer = ONavigationBarPeer::Create( m_xContext, pParentWin, getModel() );
assert(pPeer && "ONavigationBarControl::createPeer: invalid peer returned!");
// announce the peer to the base class
setPeer( pPeer.get() );
// initialize ourself (and thus the peer) with the model properties
updateFromModel();
Reference< XView > xPeerView( getPeer(), UNO_QUERY );
if ( xPeerView.is() )
{
xPeerView->setZoom( maComponentInfos.nZoomX, maComponentInfos.nZoomY );
xPeerView->setGraphics( mxGraphics );
}
// a lot of initial settings from our component infos
setPosSize( maComponentInfos.nX, maComponentInfos.nY, maComponentInfos.nWidth, maComponentInfos.nHeight, PosSize::POSSIZE );
pPeer->setVisible ( maComponentInfos.bVisible && !mbDesignMode );
pPeer->setEnable ( maComponentInfos.bEnable );
pPeer->setDesignMode( mbDesignMode );
peerCreated();
mbCreatingPeer = false;
VCLXWindow* pParentXWin = comphelper::getUnoTunnelImplementation<VCLXWindow>( _rParentPeer );
if ( pParentXWin )
pParentWin = pParentXWin->GetWindow().get();
DBG_ASSERT( pParentWin, "ONavigationBarControl::createPeer: could not obtain the VCL-level parent window!" );
}
// create the peer
rtl::Reference<ONavigationBarPeer> pPeer = ONavigationBarPeer::Create( m_xContext, pParentWin, getModel() );
assert(pPeer && "ONavigationBarControl::createPeer: invalid peer returned!");
// announce the peer to the base class
setPeer( pPeer.get() );
// initialize ourself (and thus the peer) with the model properties
updateFromModel();
Reference< XView > xPeerView( getPeer(), UNO_QUERY );
if ( xPeerView.is() )
{
xPeerView->setZoom( maComponentInfos.nZoomX, maComponentInfos.nZoomY );
xPeerView->setGraphics( mxGraphics );
}
// a lot of initial settings from our component infos
setPosSize( maComponentInfos.nX, maComponentInfos.nY, maComponentInfos.nWidth, maComponentInfos.nHeight, PosSize::POSSIZE );
pPeer->setVisible ( maComponentInfos.bVisible && !mbDesignMode );
pPeer->setEnable ( maComponentInfos.bEnable );
pPeer->setDesignMode( mbDesignMode );
peerCreated();
mbCreatingPeer = false;
}
diff --git a/forms/source/xforms/binding.cxx b/forms/source/xforms/binding.cxx
index 5c2287e..a3a6086 100644
--- a/forms/source/xforms/binding.cxx
+++ b/forms/source/xforms/binding.cxx
@@ -461,40 +461,40 @@ static void lcl_addListenerToNode( const Reference<XNode>& xNode,
const Reference<XEventListener>& xListener )
{
Reference<XEventTarget> xTarget( xNode, UNO_QUERY );
if( xTarget.is() )
{
xTarget->addEventListener( "DOMCharacterDataModified",
xListener, false );
xTarget->addEventListener( "DOMCharacterDataModified",
xListener, true );
xTarget->addEventListener( "DOMAttrModified",
xListener, false );
xTarget->addEventListener( "DOMAttrModified",
xListener, true );
xTarget->addEventListener( "DOMAttrModified",
xListener, true );
xTarget->addEventListener( "xforms-generic",
xListener, true );
}
if( !xTarget.is() )
return;
xTarget->addEventListener( "DOMCharacterDataModified",
xListener, false );
xTarget->addEventListener( "DOMCharacterDataModified",
xListener, true );
xTarget->addEventListener( "DOMAttrModified",
xListener, false );
xTarget->addEventListener( "DOMAttrModified",
xListener, true );
xTarget->addEventListener( "DOMAttrModified",
xListener, true );
xTarget->addEventListener( "xforms-generic",
xListener, true );
}
static void lcl_removeListenerFromNode( const Reference<XNode>& xNode,
const Reference<XEventListener>& xListener )
{
Reference<XEventTarget> xTarget( xNode, UNO_QUERY );
if( xTarget.is() )
{
xTarget->removeEventListener( "DOMCharacterDataModified",
xListener, false );
xTarget->removeEventListener( "DOMCharacterDataModified",
xListener, true );
xTarget->removeEventListener( "DOMAttrModified",
xListener, false );
xTarget->removeEventListener( "DOMAttrModified",
xListener, true );
xTarget->removeEventListener( "xforms-generic",
xListener, true );
}
if( !xTarget.is() )
return;
xTarget->removeEventListener( "DOMCharacterDataModified",
xListener, false );
xTarget->removeEventListener( "DOMCharacterDataModified",
xListener, true );
xTarget->removeEventListener( "DOMAttrModified",
xListener, false );
xTarget->removeEventListener( "DOMAttrModified",
xListener, true );
xTarget->removeEventListener( "xforms-generic",
xListener, true );
}
::std::vector<EvaluationContext> Binding::_getMIPEvaluationContexts() const
@@ -931,24 +931,24 @@ void Binding::_setNamespaces( const css::uno::Reference<css::container::XNameCon
void Binding::_checkBindingID()
{
if( getModel().is() )
if( !getModel().is() )
return;
Reference<XNameAccess> xBindings( getModel()->getBindings(), UNO_QUERY_THROW );
if( !msBindingID.isEmpty() )
return;
// no binding ID? then make one up!
OUString sIDPrefix = getResource( RID_STR_XFORMS_BINDING_UI_NAME ) + " ";
sal_Int32 nNumber = 0;
OUString sName;
do
{
Reference<XNameAccess> xBindings( getModel()->getBindings(), UNO_QUERY_THROW );
if( msBindingID.isEmpty() )
{
// no binding ID? then make one up!
OUString sIDPrefix = getResource( RID_STR_XFORMS_BINDING_UI_NAME ) + " ";
sal_Int32 nNumber = 0;
OUString sName;
do
{
nNumber++;
sName = sIDPrefix + OUString::number( nNumber );
}
while( xBindings->hasByName( sName ) );
setBindingID( sName );
}
nNumber++;
sName = sIDPrefix + OUString::number( nNumber );
}
while( xBindings->hasByName( sName ) );
setBindingID( sName );
}
diff --git a/forms/source/xforms/model.cxx b/forms/source/xforms/model.cxx
index 433bbb8..5075222e 100644
--- a/forms/source/xforms/model.cxx
+++ b/forms/source/xforms/model.cxx
@@ -324,29 +324,29 @@ void Model::loadInstance( sal_Int32 nInstance )
getInstanceData( aSequence, nullptr, nullptr, &sURL, &bOnce );
// if we have a URL, load the document and set it into the instance
if( !sURL.isEmpty() )
if( sURL.isEmpty() )
return;
try
{
try
Reference<XInputStream> xInput =
SimpleFileAccess::create( ::comphelper::getProcessComponentContext() )->openFileRead( sURL );
if( xInput.is() )
{
Reference<XInputStream> xInput =
SimpleFileAccess::create( ::comphelper::getProcessComponentContext() )->openFileRead( sURL );
if( xInput.is() )
Reference<XDocument> xInstance =
getDocumentBuilder()->parse( xInput );
if( xInstance.is() )
{
Reference<XDocument> xInstance =
getDocumentBuilder()->parse( xInput );
if( xInstance.is() )
{
OUString sEmpty;
setInstanceData( aSequence, nullptr, &xInstance,
bOnce ? &sEmpty : &sURL, nullptr);
mxInstances->setItem( nInstance, aSequence );
}
OUString sEmpty;
setInstanceData( aSequence, nullptr, &xInstance,
bOnce ? &sEmpty : &sURL, nullptr);
mxInstances->setItem( nInstance, aSequence );
}
}
catch( const Exception& )
{
// couldn't load the instance -> ignore!
}
}
catch( const Exception& )
{
// couldn't load the instance -> ignore!
}
}
diff --git a/forms/source/xforms/model_ui.cxx b/forms/source/xforms/model_ui.cxx
index a107c6c0..0dca32ac 100644
--- a/forms/source/xforms/model_ui.cxx
+++ b/forms/source/xforms/model_ui.cxx
@@ -170,32 +170,32 @@ static void lcl_OutInstance( OUStringBuffer& rBuffer,
{
Reference<XDocument> xDoc = xNode->getOwnerDocument();
if( xDoc != pModel->getDefaultInstance() )
if( xDoc == pModel->getDefaultInstance() )
return;
rBuffer.insert( 0, "')" );
// iterate over instances, and find the right one
OUString sInstanceName;
Reference<XEnumeration> xEnum =
pModel->getInstances()->createEnumeration();
while( sInstanceName.isEmpty() && xEnum->hasMoreElements() )
{
rBuffer.insert( 0, "')" );
Sequence<PropertyValue> aValues;
xEnum->nextElement() >>= aValues;
// iterate over instances, and find the right one
OUString sInstanceName;
Reference<XEnumeration> xEnum =
pModel->getInstances()->createEnumeration();
while( sInstanceName.isEmpty() && xEnum->hasMoreElements() )
{
Sequence<PropertyValue> aValues;
xEnum->nextElement() >>= aValues;
// get ID and instance
OUString sId;
Reference<XDocument> xInstance;
getInstanceData( aValues, &sId, &xInstance, nullptr, nullptr );
// get ID and instance
OUString sId;
Reference<XDocument> xInstance;
getInstanceData( aValues, &sId, &xInstance, nullptr, nullptr );
// now check whether this was our instance:
if( xInstance == xDoc )
sInstanceName = sId;
}
rBuffer.insert( 0, sInstanceName );
rBuffer.insert( 0, "instance('" );
// now check whether this was our instance:
if( xInstance == xDoc )
sInstanceName = sId;
}
rBuffer.insert( 0, sInstanceName );
rBuffer.insert( 0, "instance('" );
}
OUString Model::getDefaultBindingExpressionForNode(
@@ -443,38 +443,38 @@ void Model::renameInstance( const OUString& sFrom,
sal_Bool bURLOnce )
{
sal_Int32 nPos = lcl_findInstance( mxInstances.get(), sFrom );
if( nPos != -1 )
if( nPos == -1 )
return;
Sequence<PropertyValue> aSeq = mxInstances->getItem( nPos );
PropertyValue* pSeq = aSeq.getArray();
sal_Int32 nLength = aSeq.getLength();
sal_Int32 nProp = lcl_findProp( pSeq, nLength, "ID" );
if( nProp == -1 )
{
Sequence<PropertyValue> aSeq = mxInstances->getItem( nPos );
PropertyValue* pSeq = aSeq.getArray();
sal_Int32 nLength = aSeq.getLength();
sal_Int32 nProp = lcl_findProp( pSeq, nLength, "ID" );
if( nProp == -1 )
{
// add name property
aSeq.realloc( nLength + 1 );
pSeq = aSeq.getArray();
pSeq[ nLength ].Name = "ID";
nProp = nLength;
}
// change name
pSeq[ nProp ].Value <<= sTo;
// change url
nProp = lcl_findProp( pSeq, nLength, "URL" );
if(nProp != -1)
pSeq[ nProp ].Value <<= sURL;
// change urlonce
nProp = lcl_findProp( pSeq, nLength, "URLOnce" );
if(nProp != -1)
pSeq[ nProp ].Value <<= bURLOnce;
// set instance
mxInstances->setItem( nPos, aSeq );
// add name property
aSeq.realloc( nLength + 1 );
pSeq = aSeq.getArray();
pSeq[ nLength ].Name = "ID";
nProp = nLength;
}
// change name
pSeq[ nProp ].Value <<= sTo;
// change url
nProp = lcl_findProp( pSeq, nLength, "URL" );
if(nProp != -1)
pSeq[ nProp ].Value <<= sURL;
// change urlonce
nProp = lcl_findProp( pSeq, nLength, "URLOnce" );
if(nProp != -1)
pSeq[ nProp ].Value <<= bURLOnce;
// set instance
mxInstances->setItem( nPos, aSeq );
}
void Model::removeInstance( const OUString& sName )
diff --git a/forms/source/xforms/submission.cxx b/forms/source/xforms/submission.cxx
index 2df4499..84d8599 100644
--- a/forms/source/xforms/submission.cxx
+++ b/forms/source/xforms/submission.cxx
@@ -510,18 +510,18 @@ static void cloneNodes(Model& aModel, const Reference< XNode >& dstParent, const
Reference< XDocument > dstDoc = dstParent->getOwnerDocument();
Reference< XNode > imported;
if (cur.is())
if (!cur.is())
return;
// is this node relevant?
MIP mip = aModel.queryMIP(cur);
if(mip.isRelevant() && !(bRemoveWSNodes && isIgnorable(cur)))
{
// is this node relevant?
MIP mip = aModel.queryMIP(cur);
if(mip.isRelevant() && !(bRemoveWSNodes && isIgnorable(cur)))
{
imported = dstDoc->importNode(cur, false);
imported = dstParent->appendChild(imported);
// append source children to new imported parent
for( cur = cur->getFirstChild(); cur.is(); cur = cur->getNextSibling() )
cloneNodes(aModel, imported, cur, bRemoveWSNodes);
}
imported = dstDoc->importNode(cur, false);
imported = dstParent->appendChild(imported);
// append source children to new imported parent
for( cur = cur->getFirstChild(); cur.is(); cur = cur->getNextSibling() )
cloneNodes(aModel, imported, cur, bRemoveWSNodes);
}
}
Reference< XDocument > Submission::getInstanceDocument(const Reference< XXPathObject >& aObj)