[Libreoffice-commits] core.git: 2 commits - sc/inc sc/source
Markus Mohrhard
markus.mohrhard at googlemail.com
Sun May 26 16:48:42 PDT 2013
sc/inc/chartlis.hxx | 2 +
sc/source/core/tool/chartlis.cxx | 5 +++
sc/source/ui/unoobj/chartuno.cxx | 50 ++++++++++++++++++++-------------------
3 files changed, 33 insertions(+), 24 deletions(-)
New commits:
commit 911186d98f06b43d4563b401244e2cc216b76f33
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Mon May 27 01:42:46 2013 +0200
remove chart listener when chart is deleted, fdo#64639
Change-Id: I7ebf75f49c89edcb0bba3a597ba24ac1c0a655ef
diff --git a/sc/inc/chartlis.hxx b/sc/inc/chartlis.hxx
index df3c022..ded1f3c 100644
--- a/sc/inc/chartlis.hxx
+++ b/sc/inc/chartlis.hxx
@@ -171,6 +171,8 @@ public:
const ScChartListener* findByName(const OUString& rName) const;
bool hasListeners() const;
+ void removeByName(const OUString& rName);
+
const ListenersType& getListeners() const;
ListenersType& getListeners();
StringSetType& getNonOleObjectNames();
diff --git a/sc/source/core/tool/chartlis.cxx b/sc/source/core/tool/chartlis.cxx
index ed07960..df584d4 100644
--- a/sc/source/core/tool/chartlis.cxx
+++ b/sc/source/core/tool/chartlis.cxx
@@ -469,6 +469,11 @@ void ScChartListenerCollection::insert(ScChartListener* pListener)
maListeners.insert(aName, pListener);
}
+void ScChartListenerCollection::removeByName(const OUString& rName)
+{
+ maListeners.erase(rName);
+}
+
ScChartListener* ScChartListenerCollection::findByName(const OUString& rName)
{
ListenersType::iterator it = maListeners.find(rName);
diff --git a/sc/source/ui/unoobj/chartuno.cxx b/sc/source/ui/unoobj/chartuno.cxx
index 5ac0dae..0db6aac 100644
--- a/sc/source/ui/unoobj/chartuno.cxx
+++ b/sc/source/ui/unoobj/chartuno.cxx
@@ -300,6 +300,7 @@ void SAL_CALL ScChartsObj::removeByName( const OUString& aName )
if (pObj)
{
ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->GetChartListenerCollection()->removeByName(aName);
ScDrawLayer* pModel = pDoc->GetDrawLayer(); // ist nicht 0
SdrPage* pPage = pModel->GetPage(static_cast<sal_uInt16>(nTab)); // ist nicht 0
commit 8046f0b66ea1b02a91976023c7050e2570e97274
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Mon May 27 00:15:41 2013 +0200
String to OUString and small stylistic clean-up
Change-Id: Ic479945c143d3dbd647078b17bcca9cab2ad3e5f
diff --git a/sc/source/ui/unoobj/chartuno.cxx b/sc/source/ui/unoobj/chartuno.cxx
index b31200b..5ac0dae 100644
--- a/sc/source/ui/unoobj/chartuno.cxx
+++ b/sc/source/ui/unoobj/chartuno.cxx
@@ -55,7 +55,7 @@ SC_SIMPLE_SERVICE_INFO( ScChartsObj, "ScChartsObj", "com.sun.star.table.TableCha
//------------------------------------------------------------------------
-static SdrOle2Obj* lcl_FindChartObj( ScDocShell* pDocShell, SCTAB nTab, const String& rName )
+static SdrOle2Obj* lcl_FindChartObj( ScDocShell* pDocShell, SCTAB nTab, const OUString& rName )
{
if (pDocShell)
{
@@ -76,7 +76,7 @@ static SdrOle2Obj* lcl_FindChartObj( ScDocShell* pDocShell, SCTAB nTab, const St
uno::Reference < embed::XEmbeddedObject > xObj = ((SdrOle2Obj*)pObject)->GetObjRef();
if ( xObj.is() )
{
- String aObjName = pDocShell->GetEmbeddedObjectContainer().GetEmbeddedObjectName( xObj );
+ OUString aObjName = pDocShell->GetEmbeddedObjectContainer().GetEmbeddedObjectName( xObj );
if ( aObjName == rName )
return (SdrOle2Obj*)pObject;
}
@@ -157,15 +157,14 @@ ScChartObj* ScChartsObj::GetObjectByIndex_Impl(long nIndex) const
ScChartObj* ScChartsObj::GetObjectByName_Impl(const OUString& aName) const
{
- String aNameString(aName);
- if ( lcl_FindChartObj( pDocShell, nTab, aNameString ) )
- return new ScChartObj( pDocShell, nTab, aNameString );
+ if ( lcl_FindChartObj( pDocShell, nTab, aName ) )
+ return new ScChartObj( pDocShell, nTab, aName );
return NULL;
}
// XTableCharts
-void SAL_CALL ScChartsObj::addNewByName( const OUString& aName,
+void SAL_CALL ScChartsObj::addNewByName( const OUString& rName,
const awt::Rectangle& aRect,
const uno::Sequence<table::CellRangeAddress>& aRanges,
sal_Bool bColumnHeaders, sal_Bool bRowHeaders )
@@ -185,20 +184,20 @@ void SAL_CALL ScChartsObj::addNewByName( const OUString& aName,
// chart can't be inserted if any ole object with that name exists on any table
// (empty string: generate valid name)
- String aNameString(aName);
+ OUString aName = rName;
SCTAB nDummy;
- if ( aNameString.Len() && pModel->GetNamedObject( aNameString, OBJ_OLE2, nDummy ) )
+ if ( !aName.isEmpty() && pModel->GetNamedObject( aName, OBJ_OLE2, nDummy ) )
{
// object exists - only RuntimeException is specified
throw uno::RuntimeException();
}
ScRangeList* pList = new ScRangeList;
- sal_uInt16 nRangeCount = (sal_uInt16)aRanges.getLength();
+ sal_Int32 nRangeCount = aRanges.getLength();
if (nRangeCount)
{
const table::CellRangeAddress* pAry = aRanges.getConstArray();
- for (sal_uInt16 i=0; i<nRangeCount; i++)
+ for (sal_Int32 i=0; i<nRangeCount; i++)
{
ScRange aRange( static_cast<SCCOL>(pAry[i].StartColumn), pAry[i].StartRow, pAry[i].Sheet,
static_cast<SCCOL>(pAry[i].EndColumn), pAry[i].EndRow, pAry[i].Sheet );
@@ -208,22 +207,26 @@ void SAL_CALL ScChartsObj::addNewByName( const OUString& aName,
ScRangeListRef xNewRanges( pList );
uno::Reference < embed::XEmbeddedObject > xObj;
- OUString aTmp( aNameString );
if ( SvtModuleOptions().IsChart() )
- xObj = pDocShell->GetEmbeddedObjectContainer().CreateEmbeddedObject( SvGlobalName( SO3_SCH_CLASSID ).GetByteSequence(), aTmp );
+ xObj = pDocShell->GetEmbeddedObjectContainer().CreateEmbeddedObject( SvGlobalName( SO3_SCH_CLASSID ).GetByteSequence(), aName );
if ( xObj.is() )
{
- String aObjName = aTmp; // wirklich eingefuegter Name...
-
// Rechteck anpassen
//! Fehler/Exception, wenn leer/ungueltig ???
Point aRectPos( aRect.X, aRect.Y );
bool bLayoutRTL = pDoc->IsLayoutRTL( nTab );
- if ( ( aRectPos.X() < 0 && !bLayoutRTL ) || ( aRectPos.X() > 0 && bLayoutRTL ) ) aRectPos.X() = 0;
- if (aRectPos.Y() < 0) aRectPos.Y() = 0;
+ if ( ( aRectPos.X() < 0 && !bLayoutRTL ) || ( aRectPos.X() > 0 && bLayoutRTL ) )
+ aRectPos.X() = 0;
+
+ if (aRectPos.Y() < 0)
+ aRectPos.Y() = 0;
+
Size aRectSize( aRect.Width, aRect.Height );
- if (aRectSize.Width() <= 0) aRectSize.Width() = 5000; // Default-Groesse
- if (aRectSize.Height() <= 0) aRectSize.Height() = 5000;
+ if (aRectSize.Width() <= 0)
+ aRectSize.Width() = 5000; // Default-Groesse
+
+ if (aRectSize.Height() <= 0)
+ aRectSize.Height() = 5000;
Rectangle aInsRect( aRectPos, aRectSize );
sal_Int64 nAspect(embed::Aspects::MSOLE_CONTENT);
@@ -274,11 +277,11 @@ void SAL_CALL ScChartsObj::addNewByName( const OUString& aName,
}
ScChartListener* pChartListener =
- new ScChartListener( aObjName, pDoc, xNewRanges );
+ new ScChartListener( aName, pDoc, xNewRanges );
pDoc->GetChartListenerCollection()->insert( pChartListener );
pChartListener->StartListeningTo();
- SdrOle2Obj* pObj = new SdrOle2Obj( ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ), aObjName, aInsRect );
+ SdrOle2Obj* pObj = new SdrOle2Obj( ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ), aName, aInsRect );
// set VisArea
if( xObj.is())
@@ -293,8 +296,7 @@ void SAL_CALL ScChartsObj::removeByName( const OUString& aName )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
- String aNameString(aName);
- SdrOle2Obj* pObj = lcl_FindChartObj( pDocShell, nTab, aNameString );
+ SdrOle2Obj* pObj = lcl_FindChartObj( pDocShell, nTab, aName );
if (pObj)
{
ScDocument* pDoc = pDocShell->GetDocument();
@@ -431,8 +433,7 @@ sal_Bool SAL_CALL ScChartsObj::hasByName( const OUString& aName )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
- String aNameString(aName);
- return ( lcl_FindChartObj( pDocShell, nTab, aNameString ) != NULL );
+ return ( lcl_FindChartObj( pDocShell, nTab, aName ) != NULL );
}
//------------------------------------------------------------------------
More information about the Libreoffice-commits
mailing list