summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--reportdesign/inc/RptObject.hxx4
-rw-r--r--reportdesign/source/core/sdr/RptObject.cxx55
2 files changed, 40 insertions, 19 deletions
diff --git a/reportdesign/inc/RptObject.hxx b/reportdesign/inc/RptObject.hxx
index 3a4c6cbe35de..31e3346c074d 100644
--- a/reportdesign/inc/RptObject.hxx
+++ b/reportdesign/inc/RptObject.hxx
@@ -229,6 +229,9 @@ class REPORTDESIGN_DLLPUBLIC OUnoObject: public SdrUnoObj , public OObjectBase
friend class DlgEdFactory;
sal_uInt16 m_nObjectType;
+ // tdf#118730 remember if this object was created interactively (due to ::EndCreate being called)
+ bool m_bSetDefaultLabel;
+
protected:
OUnoObject(SdrModel& rSdrModel,
const OUString& _sComponentName,
@@ -246,6 +249,7 @@ protected:
virtual void NbcMove( const Size& rSize ) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
virtual void NbcSetLogicRect(const tools::Rectangle& rRect) override;
+ virtual bool EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd) override;
virtual SdrPage* GetImplPage() const override;
diff --git a/reportdesign/source/core/sdr/RptObject.cxx b/reportdesign/source/core/sdr/RptObject.cxx
index 16435cdf5d83..0bb74d0a31e4 100644
--- a/reportdesign/source/core/sdr/RptObject.cxx
+++ b/reportdesign/source/core/sdr/RptObject.cxx
@@ -596,6 +596,8 @@ OUnoObject::OUnoObject(
: SdrUnoObj(rSdrModel, rModelName)
,OObjectBase(_sComponentName)
,m_nObjectType(_nObjectType)
+ // tdf#119067
+ ,m_bSetDefaultLabel(false)
{
if ( !rModelName.isEmpty() )
impl_initializeModel_nothrow();
@@ -609,6 +611,8 @@ OUnoObject::OUnoObject(
: SdrUnoObj(rSdrModel, rModelName)
,OObjectBase(_xComponent)
,m_nObjectType(_nObjectType)
+ // tdf#119067
+ ,m_bSetDefaultLabel(false)
{
impl_setUnoShape( uno::Reference< uno::XInterface >( _xComponent, uno::UNO_QUERY ) );
@@ -731,6 +735,22 @@ void OUnoObject::NbcSetLogicRect(const tools::Rectangle& rRect)
OObjectBase::StartListening();
}
+bool OUnoObject::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
+{
+ const bool bResult(SdrUnoObj::EndCreate(rStat, eCmd));
+
+ if(bResult)
+ {
+ // tdf#118730 remember if this object was created interactively (due to ::EndCreate being called)
+ m_bSetDefaultLabel = true;
+
+ // set geometry properties
+ SetPropsFromRect(GetLogicRect());
+ }
+
+ return bResult;
+}
+
OUString OUnoObject::GetDefaultName(const OUnoObject* _pObj)
{
OUString aDefaultName = "HERE WE HAVE TO INSERT OUR NAME!";
@@ -825,32 +845,29 @@ void OUnoObject::CreateMediator(bool _bReverse)
impl_initializeModel_nothrow();
}
- // tdf#118730 Directly do thinigs formerly done in
- // OUnoObject::EndCreate here
- if(m_xReportComponent.is())
+ if(m_xReportComponent.is() && m_bSetDefaultLabel)
{
- // set labels
- if ( m_xReportComponent.is() )
+ // tdf#118730 Directly do things formerly done in
+ // OUnoObject::EndCreate here
+ // tdf#119067 ...but *only* if result of interactive
+ // creation in Report DesignView
+ m_bSetDefaultLabel = false;
+
+ try
{
- try
+ if ( supportsService( SERVICE_FIXEDTEXT ) )
{
- if ( supportsService( SERVICE_FIXEDTEXT ) )
- {
- m_xReportComponent->setPropertyValue( PROPERTY_LABEL, uno::makeAny(GetDefaultName(this)) );
- }
+ m_xReportComponent->setPropertyValue(
+ PROPERTY_LABEL,
+ uno::makeAny(GetDefaultName(this)));
}
- catch(const uno::Exception&)
- {
- DBG_UNHANDLED_EXCEPTION("reportdesign");
- }
-
- impl_initializeModel_nothrow();
+ }
+ catch(const uno::Exception&)
+ {
+ DBG_UNHANDLED_EXCEPTION("reportdesign");
}
}
- // tdf#118730 set geometry properties
- SetPropsFromRect(GetLogicRect());
-
if(!m_xMediator.is() && m_xReportComponent.is())
{
Reference<XPropertySet> xControlModel(GetUnoControlModel(),uno::UNO_QUERY);