summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2011-10-27 23:53:34 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2011-10-27 23:54:24 +0200
commit67315dcfb0664a35fdd34f86242452bc27df6105 (patch)
tree70f8b6b1f2877d5ac2fe7bfc19dd35680c239745 /sc
parent35896a678b004a84bafc54fd3e08dfc97a0d4886 (diff)
use uno for local range name api, it crashs otherwise sometimes
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/nameuno.hxx10
-rw-r--r--sc/source/ui/unoobj/nameuno.cxx21
2 files changed, 17 insertions, 14 deletions
diff --git a/sc/inc/nameuno.hxx b/sc/inc/nameuno.hxx
index 9d7ca9351343..c08222632419 100644
--- a/sc/inc/nameuno.hxx
+++ b/sc/inc/nameuno.hxx
@@ -38,6 +38,7 @@
#include <com/sun/star/sheet/XNamedRange.hpp>
#include <com/sun/star/sheet/XFormulaTokens.hpp>
#include <com/sun/star/sheet/XNamedRanges.hpp>
+#include <com/sun/star/container/XNamed.hpp>
#include <com/sun/star/container/XEnumerationAccess.hpp>
#include <com/sun/star/lang/XServiceName.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
@@ -69,7 +70,7 @@ private:
ScNamedRangesObj* mpParent;
ScDocShell* pDocShell;
String aName;
- ScTableSheetObj* mpSheet;
+ com::sun::star::uno::Reference< com::sun::star::container::XNamed > mxSheet;
private:
ScRangeData* GetRangeData_Impl();
@@ -80,7 +81,8 @@ private:
SCTAB GetTab_Impl();
public:
- ScNamedRangeObj(ScNamedRangesObj* pParent, ScDocShell* pDocSh, const String& rNm, ScTableSheetObj* pSheet = NULL);
+ ScNamedRangeObj(ScNamedRangesObj* pParent, ScDocShell* pDocSh, const String& rNm,
+ com::sun::star::uno::Reference< com::sun::star::container::XNamed > xSheet = com::sun::star::uno::Reference< com::sun::star::container::XNamed > ());
virtual ~ScNamedRangeObj();
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
@@ -337,9 +339,9 @@ private:
virtual ScRangeName* GetRangeName_Impl();
virtual SCTAB GetTab_Impl();
- ScTableSheetObj* mpSheet;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed > mxSheet;
public:
- ScLocalNamedRangesObj(ScDocShell* pDocSh, ScTableSheetObj* pSheet);
+ ScLocalNamedRangesObj(ScDocShell* pDocSh, ::com::sun::star::uno::Reference< com::sun::star::container::XNamed > xNamed );
virtual ~ScLocalNamedRangesObj();
};
diff --git a/sc/source/ui/unoobj/nameuno.cxx b/sc/source/ui/unoobj/nameuno.cxx
index 3726eb788b0f..7e9a52df2d61 100644
--- a/sc/source/ui/unoobj/nameuno.cxx
+++ b/sc/source/ui/unoobj/nameuno.cxx
@@ -99,11 +99,11 @@ bool lcl_UserVisibleName(const ScRangeData& rData)
return !rData.HasType(RT_DATABASE) && !rData.HasType(RT_SHARED);
}
-ScNamedRangeObj::ScNamedRangeObj(ScNamedRangesObj* pParent, ScDocShell* pDocSh, const String& rNm, ScTableSheetObj* pSheet) :
+ScNamedRangeObj::ScNamedRangeObj(ScNamedRangesObj* pParent, ScDocShell* pDocSh, const String& rNm, Reference<container::XNamed> xSheet):
mpParent(pParent),
pDocShell( pDocSh ),
aName( rNm ),
- mpSheet( pSheet )
+ mxSheet( xSheet )
{
pDocShell->GetDocument()->AddUnoObject(*this);
}
@@ -147,13 +147,14 @@ ScRangeData* ScNamedRangeObj::GetRangeData_Impl()
SCTAB ScNamedRangeObj::GetTab_Impl()
{
- if (mpSheet)
+ if (mxSheet.is())
{
if (!pDocShell)
return -2;
ScDocument* pDoc = pDocShell->GetDocument();
SCTAB nTab;
- pDoc->GetTable(mpSheet->getName(), nTab);
+ rtl::OUString sName = mxSheet->getName();
+ pDoc->GetTable(sName, nTab);
return nTab;
}
else
@@ -922,9 +923,9 @@ SCTAB ScGlobalNamedRangesObj::GetTab_Impl()
//------------------------------------------------------------------------
-ScLocalNamedRangesObj::ScLocalNamedRangesObj( ScDocShell* pDocSh, ScTableSheetObj* pSheet )
+ScLocalNamedRangesObj::ScLocalNamedRangesObj( ScDocShell* pDocSh, uno::Reference<container::XNamed> xSheet )
: ScNamedRangesObj(pDocSh),
- mpSheet(pSheet)
+ mxSheet(xSheet)
{
}
@@ -937,7 +938,7 @@ ScLocalNamedRangesObj::~ScLocalNamedRangesObj()
ScNamedRangeObj* ScLocalNamedRangesObj::GetObjectByName_Impl(const ::rtl::OUString& aName)
{
if ( pDocShell && hasByName( aName ) )
- return new ScNamedRangeObj( this, pDocShell, String(aName), mpSheet);
+ return new ScNamedRangeObj( this, pDocShell, String(aName), mxSheet);
return NULL;
}
@@ -947,7 +948,7 @@ ScNamedRangeObj* ScLocalNamedRangesObj::GetObjectByIndex_Impl( sal_uInt16 nIndex
if (!pDocShell)
return NULL;
- rtl::OUString aName = mpSheet->getName();
+ rtl::OUString aName = mxSheet->getName();
ScDocument* pDoc = pDocShell->GetDocument();
SCTAB nTab;
pDoc->GetTable( aName, nTab );
@@ -963,7 +964,7 @@ ScNamedRangeObj* ScLocalNamedRangesObj::GetObjectByIndex_Impl( sal_uInt16 nIndex
if (lcl_UserVisibleName(*itr))
{
if (nPos == nIndex)
- return new ScNamedRangeObj(this, pDocShell, itr->GetName(), mpSheet);
+ return new ScNamedRangeObj(this, pDocShell, itr->GetName(), mxSheet);
}
++nPos;
}
@@ -979,7 +980,7 @@ ScRangeName* ScLocalNamedRangesObj::GetRangeName_Impl()
SCTAB ScLocalNamedRangesObj::GetTab_Impl()
{
SCTAB nTab;
- pDocShell->GetDocument()->GetTable(mpSheet->getName(), nTab);
+ pDocShell->GetDocument()->GetTable(mxSheet->getName(), nTab);
return nTab;
}