summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Le Grand <Armin.Le.Grand@cib.de>2018-10-10 16:02:05 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2018-10-18 12:50:21 +0200
commitd68ac1325924f7280545e61b7dff0072a959d4ab (patch)
tree93c7e1feb8d8c0a80ae7c959c61aff97467c6f57
parent6ab0e309adabd8aeda00909b2ea9f0f1cb45144a (diff)
tdf#119067 DefaultLabel only for interactively created OBJs
Both have to work - the Wizard-created report which this report defines and the interactively created ones (see tdf#118730). The second was moved to OUnoObject::CreateMediator and by error sets the default text (e.g. 'Label') now all the time. This was wrong. To solve, remember if the Object was created interactively (which is the case when ::EndCreate was called which is needed again) and set the default only when that is the case. Change-Id: Id26e701d863b098a77db5f6419bcabf1f2ec5017 Reviewed-on: https://gerrit.libreoffice.org/61620 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@cib.de> Reviewed-on: https://gerrit.libreoffice.org/61654 Tested-by: Xisco FaulĂ­ <xiscofauli@libreoffice.org> Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-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);