[Libreoffice-commits] .: sc/inc sc/source

Kohei Yoshida kohei at kemper.freedesktop.org
Thu Apr 26 12:31:20 PDT 2012


 sc/inc/fielduno.hxx              |    7 +++++--
 sc/source/ui/unoobj/cellsuno.cxx |    5 ++++-
 sc/source/ui/unoobj/fielduno.cxx |   10 +++++-----
 3 files changed, 14 insertions(+), 8 deletions(-)

New commits:
commit 502e11b22eef0b2cfc544790e9430406dda8321e
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Thu Apr 26 15:32:52 2012 -0400

    Pass ScCellObj instance to ScCellFieldsObj instead of creating a new one.

diff --git a/sc/inc/fielduno.hxx b/sc/inc/fielduno.hxx
index 7c237b2..4f3d29b 100644
--- a/sc/inc/fielduno.hxx
+++ b/sc/inc/fielduno.hxx
@@ -69,6 +69,7 @@ class ScCellFieldsObj : public cppu::WeakImplHelper5<
                         public SfxListener
 {
 private:
+    com::sun::star::uno::Reference<com::sun::star::text::XTextRange> mxContent;
     ScDocShell*             pDocShell;
     ScAddress               aCellPos;
     ScEditSource* mpEditSource;
@@ -82,8 +83,10 @@ private:
             GetObjectByIndex_Impl(sal_Int32 Index) const;
 
 public:
-                            ScCellFieldsObj(ScDocShell* pDocSh, const ScAddress& rPos);
-    virtual                 ~ScCellFieldsObj();
+    ScCellFieldsObj(
+        const com::sun::star::uno::Reference<com::sun::star::text::XTextRange>& xContent,
+        ScDocShell* pDocSh, const ScAddress& rPos);
+    virtual ~ScCellFieldsObj();
 
     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
 
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
index a916c6d..9f874e3 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -6704,7 +6704,10 @@ uno::Reference<container::XEnumerationAccess> SAL_CALL ScCellObj::getTextFields(
     SolarMutexGuard aGuard;
     ScDocShell* pDocSh = GetDocShell();
     if ( pDocSh )
-        return new ScCellFieldsObj( pDocSh, aCellPos );
+    {
+        uno::Reference<text::XTextRange> xContent(this);
+        return new ScCellFieldsObj(xContent, pDocSh, aCellPos);
+    }
 
     return NULL;
 }
diff --git a/sc/source/ui/unoobj/fielduno.cxx b/sc/source/ui/unoobj/fielduno.cxx
index fcc5f3b..2753fa6 100644
--- a/sc/source/ui/unoobj/fielduno.cxx
+++ b/sc/source/ui/unoobj/fielduno.cxx
@@ -295,7 +295,10 @@ SvxFieldData* ScUnoEditEngine::FindByPos(sal_uInt16 nPar, xub_StrLen nPos, TypeI
 
 //------------------------------------------------------------------------
 
-ScCellFieldsObj::ScCellFieldsObj(ScDocShell* pDocSh, const ScAddress& rPos) :
+ScCellFieldsObj::ScCellFieldsObj(
+    const uno::Reference<text::XTextRange>& xContent,
+    ScDocShell* pDocSh, const ScAddress& rPos) :
+    mxContent(xContent),
     pDocShell( pDocSh ),
     aCellPos( rPos ),
     mpRefreshListeners( NULL )
@@ -353,16 +356,13 @@ uno::Reference<text::XTextField> ScCellFieldsObj::GetObjectByIndex_Impl(sal_Int3
     if (!pData)
         return uno::Reference<text::XTextField>();
 
-    // Get the parent text range instance.
-    uno::Reference<text::XTextRange> xContent(new ScCellObj(pDocShell, aCellPos));
-
     sal_uInt16 nPar = aTempEngine.GetFieldPar();
     xub_StrLen nPos = aTempEngine.GetFieldPos();
     ESelection aSelection( nPar, nPos, nPar, nPos+1 );      // Feld ist 1 Zeichen
 
     ScEditFieldObj::FieldType eType = getFieldType(pData->GetClassId());
     uno::Reference<text::XTextField> xRet(
-        new ScEditFieldObj(xContent, new ScCellEditSource(pDocShell, aCellPos), eType, aSelection));
+        new ScEditFieldObj(mxContent, new ScCellEditSource(pDocShell, aCellPos), eType, aSelection));
     return xRet;
 }
 


More information about the Libreoffice-commits mailing list