You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2014/08/07 15:35:52 UTC

svn commit: r1616489 - in /openoffice/branches/AOO410/main: ./ comphelper/inc/comphelper/embeddedobjectcontainer.hxx comphelper/source/container/embeddedobjectcontainer.cxx sfx2/source/appl/linkmgr2.cxx svtools/source/misc/embedhlp.cxx

Author: alg
Date: Thu Aug  7 13:35:51 2014
New Revision: 1616489

URL: http://svn.apache.org/r1616489
Log:
i125386 secured user request and changed some bools to bitfield

Modified:
    openoffice/branches/AOO410/main/   (props changed)
    openoffice/branches/AOO410/main/comphelper/inc/comphelper/embeddedobjectcontainer.hxx
    openoffice/branches/AOO410/main/comphelper/source/container/embeddedobjectcontainer.cxx
    openoffice/branches/AOO410/main/sfx2/source/appl/linkmgr2.cxx
    openoffice/branches/AOO410/main/svtools/source/misc/embedhlp.cxx

Propchange: openoffice/branches/AOO410/main/
------------------------------------------------------------------------------
  Merged /openoffice/trunk/main:r1616457

Modified: openoffice/branches/AOO410/main/comphelper/inc/comphelper/embeddedobjectcontainer.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/comphelper/inc/comphelper/embeddedobjectcontainer.hxx?rev=1616489&r1=1616488&r2=1616489&view=diff
==============================================================================
--- openoffice/branches/AOO410/main/comphelper/inc/comphelper/embeddedobjectcontainer.hxx (original)
+++ openoffice/branches/AOO410/main/comphelper/inc/comphelper/embeddedobjectcontainer.hxx Thu Aug  7 13:35:51 2014
@@ -178,6 +178,9 @@ sal_Bool            RemoveEmbeddedObject
     * \return <FALSE/> if no error occured, otherwise <TRUE/>.
     */
     sal_Bool             SetPersistentEntries(const com::sun::star::uno::Reference< com::sun::star::embed::XStorage >& _xStorage,bool _bClearModifedFlag = true);
+
+    bool getUserAllowsLinkUpdate() const;
+    void setUserAllowsLinkUpdate(bool bNew);
 };
 
 }

Modified: openoffice/branches/AOO410/main/comphelper/source/container/embeddedobjectcontainer.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/comphelper/source/container/embeddedobjectcontainer.cxx?rev=1616489&r1=1616488&r2=1616489&view=diff
==============================================================================
--- openoffice/branches/AOO410/main/comphelper/source/container/embeddedobjectcontainer.cxx (original)
+++ openoffice/branches/AOO410/main/comphelper/source/container/embeddedobjectcontainer.cxx Thu Aug  7 13:35:51 2014
@@ -92,7 +92,10 @@ struct EmbedImpl
     uno::WeakReference < uno::XInterface > m_xModel;
     //EmbeddedObjectContainerNameMap maTempObjectContainer;
     //uno::Reference < embed::XStorage > mxTempStorage;
-    sal_Bool bOwnsStorage;
+
+    /// bitfield
+    bool mbOwnsStorage : 1;
+    bool mbUserAllowsLinkUpdate : 1;
 
     const uno::Reference < embed::XStorage >& GetReplacements();
 };
@@ -123,7 +126,8 @@ EmbeddedObjectContainer::EmbeddedObjectC
 {
     pImpl = new EmbedImpl;
     pImpl->mxStorage = ::comphelper::OStorageHelper::GetTemporaryStorage();
-    pImpl->bOwnsStorage = sal_True;
+    pImpl->mbOwnsStorage = true;
+    pImpl->mbUserAllowsLinkUpdate = true;
     pImpl->mpTempObjectContainer = 0;
 }
 
@@ -131,7 +135,8 @@ EmbeddedObjectContainer::EmbeddedObjectC
 {
     pImpl = new EmbedImpl;
     pImpl->mxStorage = rStor;
-    pImpl->bOwnsStorage = sal_False;
+    pImpl->mbOwnsStorage = false;
+    pImpl->mbUserAllowsLinkUpdate = true;
     pImpl->mpTempObjectContainer = 0;
 }
 
@@ -139,7 +144,8 @@ EmbeddedObjectContainer::EmbeddedObjectC
 {
     pImpl = new EmbedImpl;
     pImpl->mxStorage = rStor;
-    pImpl->bOwnsStorage = sal_False;
+    pImpl->mbOwnsStorage = false;
+    pImpl->mbUserAllowsLinkUpdate = true;
     pImpl->mpTempObjectContainer = 0;
     pImpl->m_xModel = xModel;
 }
@@ -148,11 +154,11 @@ void EmbeddedObjectContainer::SwitchPers
 {
 	ReleaseImageSubStorage();
 
-    if ( pImpl->bOwnsStorage )
+    if ( pImpl->mbOwnsStorage )
         pImpl->mxStorage->dispose();
 
     pImpl->mxStorage = rStor;
-    pImpl->bOwnsStorage = sal_False;
+    pImpl->mbOwnsStorage = false;
 }
 
 sal_Bool EmbeddedObjectContainer::CommitImageSubStorage()
@@ -208,7 +214,7 @@ EmbeddedObjectContainer::~EmbeddedObject
 {
 	ReleaseImageSubStorage();
 
-    if ( pImpl->bOwnsStorage )
+    if ( pImpl->mbOwnsStorage )
         pImpl->mxStorage->dispose();
 
     delete pImpl->mpTempObjectContainer;
@@ -1401,7 +1407,7 @@ sal_Bool EmbeddedObjectContainer::StoreA
                     xStream = GetGraphicStream( xObj, &aMediaType );
                 }
 
-                if ( !xStream.is() )
+                if ( !xStream.is() && getUserAllowsLinkUpdate() )
                 {
                     // the image must be regenerated
                     // TODO/LATER: another aspect could be used
@@ -1685,4 +1691,18 @@ sal_Bool EmbeddedObjectContainer::SetPer
 	}
     return bError;
 }
+
+bool EmbeddedObjectContainer::getUserAllowsLinkUpdate() const
+{
+    return pImpl->mbUserAllowsLinkUpdate;
+}
+
+void EmbeddedObjectContainer::setUserAllowsLinkUpdate(bool bNew)
+{
+    if(pImpl->mbUserAllowsLinkUpdate != bNew)
+    {
+        pImpl->mbUserAllowsLinkUpdate = bNew;
+    }
+}
+
 }

Modified: openoffice/branches/AOO410/main/sfx2/source/appl/linkmgr2.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/sfx2/source/appl/linkmgr2.cxx?rev=1616489&r1=1616488&r2=1616489&view=diff
==============================================================================
--- openoffice/branches/AOO410/main/sfx2/source/appl/linkmgr2.cxx (original)
+++ openoffice/branches/AOO410/main/sfx2/source/appl/linkmgr2.cxx Thu Aug  7 13:35:51 2014
@@ -318,7 +318,17 @@ void LinkManager::UpdateAllLinks( 
 		{
             int nRet = QueryBox( pParentWin, WB_YES_NO | WB_DEF_YES, SfxResId( STR_QUERY_UPDATE_LINKS ) ).Execute();
 			if( RET_YES != nRet )
+            {
+                SfxObjectShell* pShell = pLink->GetLinkManager()->GetPersist();
+
+                if(pShell)
+                {
+                    comphelper::EmbeddedObjectContainer& rEmbeddedObjectContainer = pShell->getEmbeddedObjectContainer();
+                    rEmbeddedObjectContainer.setUserAllowsLinkUpdate(false);
+                }
+
 				return ;		// es soll nichts geupdatet werden
+            }
 			bAskUpdate = sal_False;		// einmal reicht
 		}
 

Modified: openoffice/branches/AOO410/main/svtools/source/misc/embedhlp.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/svtools/source/misc/embedhlp.cxx?rev=1616489&r1=1616488&r2=1616489&view=diff
==============================================================================
--- openoffice/branches/AOO410/main/svtools/source/misc/embedhlp.cxx (original)
+++ openoffice/branches/AOO410/main/svtools/source/misc/embedhlp.cxx Thu Aug  7 13:35:51 2014
@@ -709,19 +709,30 @@ SvStream* EmbeddedObjectRef::GetGraphicS
     if ( !xStream.is() )
     {
 		RTL_LOGFILE_CONTEXT_TRACE( aLog, "getting stream from object" );
-        // update wanted or no stream in container storage available
-		xStream = GetGraphicReplacementStream( mpImp->nViewAspect, mxObj, &mpImp->aMediaType );
+        bool bUserAllowsLinkUpdate(true);
+        const comphelper::EmbeddedObjectContainer* pContainer = GetContainer();
 
-		if ( xStream.is() )
-		{
-			if ( mpImp->pContainer )
-            	mpImp->pContainer->InsertGraphicStream( xStream, mpImp->aPersistName, mpImp->aMediaType );
+        if(pContainer)
+        {
+            bUserAllowsLinkUpdate = pContainer->getUserAllowsLinkUpdate();
+        }
 
-            SvStream* pResult = ::utl::UcbStreamHelper::CreateStream( xStream );
-            if ( pResult && bUpdate )
-                mpImp->bNeedUpdate = sal_False;
+        if(bUserAllowsLinkUpdate)
+        {
+            // update wanted or no stream in container storage available
+            xStream = GetGraphicReplacementStream(mpImp->nViewAspect,mxObj,&mpImp->aMediaType);
+
+            if(xStream.is())
+            {
+                if(mpImp->pContainer)
+                    mpImp->pContainer->InsertGraphicStream(xStream,mpImp->aPersistName,mpImp->aMediaType);
+
+                SvStream* pResult = ::utl::UcbStreamHelper::CreateStream( xStream );
+                if ( pResult && bUpdate )
+                    mpImp->bNeedUpdate = sal_False;
 
-            return pResult;
+                return pResult;
+            }
         }
     }