[Libreoffice-commits] core.git: chart2/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Oct 9 12:11:17 UTC 2018


 chart2/source/controller/main/ChartController_Tools.cxx |   61 ++++++----------
 1 file changed, 23 insertions(+), 38 deletions(-)

New commits:
commit c11ee0f7b0e4e7bf4d1e2e5bb4309f24b917ce79
Author:     Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Tue Oct 9 10:26:54 2018 +0000
Commit:     Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Tue Oct 9 14:10:56 2018 +0200

    tdf#120387 get lock to use ImpEditView::CutCopy
    
    ImpEditView::CutCopy releases the SolarMutex to handle clipboard
    access. So lock the SolarMutex when accessing this function
    through OutlinerView::Copy().
    
    Now all paths effectively need the SolarMutex, so remove all the
    intermediate locking. I guess the explicit release for the
    xTransferable.is() test isn't needed.
    
    Change-Id: Ib2a69a520bbf0ef7ba4ccb893c6489b292207f2a
    Reviewed-on: https://gerrit.libreoffice.org/61580
    Tested-by: Jenkins
    Reviewed-by: Jan-Marek Glogowski <glogow at fbihome.de>

diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx
index b1310ae68550..e552656f1da6 100644
--- a/chart2/source/controller/main/ChartController_Tools.cxx
+++ b/chart2/source/controller/main/ChartController_Tools.cxx
@@ -496,47 +496,32 @@ void ChartController::impl_PasteStringAsTextShape( const OUString& rString, cons
 
 void ChartController::executeDispatch_Copy()
 {
-    if ( m_pDrawViewWrapper )
+    SolarMutexGuard aSolarGuard;
+    if (!m_pDrawViewWrapper)
+        return;
+
+    OutlinerView* pOutlinerView = m_pDrawViewWrapper->GetTextEditOutlinerView();
+    if (pOutlinerView)
+        pOutlinerView->Copy();
+    else
     {
-        OutlinerView* pOutlinerView = m_pDrawViewWrapper->GetTextEditOutlinerView();
-        if ( pOutlinerView )
-        {
-            pOutlinerView->Copy();
-        }
-        else
+        SdrObject* pSelectedObj = nullptr;
+        ObjectIdentifier aSelOID(m_aSelection.getSelectedOID());
+
+        if (aSelOID.isAutoGeneratedObject())
+            pSelectedObj = m_pDrawModelWrapper->getNamedSdrObject( aSelOID.getObjectCID() );
+        else if (aSelOID.isAdditionalShape())
+            pSelectedObj = DrawViewWrapper::getSdrObject( aSelOID.getAdditionalShape() );
+
+        if (pSelectedObj)
         {
-            Reference< datatransfer::XTransferable > xTransferable;
+            Reference<datatransfer::clipboard::XClipboard> xClipboard(GetChartWindow()->GetClipboard());
+            if (xClipboard.is())
             {
-                SolarMutexGuard aSolarGuard;
-                if ( m_pDrawModelWrapper )
-                {
-                    SdrObject* pSelectedObj = nullptr;
-                    ObjectIdentifier aSelOID( m_aSelection.getSelectedOID() );
-                    if ( aSelOID.isAutoGeneratedObject() )
-                    {
-                        pSelectedObj = m_pDrawModelWrapper->getNamedSdrObject( aSelOID.getObjectCID() );
-                    }
-                    else if ( aSelOID.isAdditionalShape() )
-                    {
-                        pSelectedObj = DrawViewWrapper::getSdrObject( aSelOID.getAdditionalShape() );
-                    }
-                    if ( pSelectedObj )
-                    {
-                        xTransferable.set( new ChartTransferable(
-                                m_pDrawModelWrapper->getSdrModel(),
-                                pSelectedObj,
-                                aSelOID.isAdditionalShape() ) );
-                    }
-                }
-            }
-            if ( xTransferable.is() )
-            {
-                SolarMutexGuard aSolarGuard;
-                Reference<datatransfer::clipboard::XClipboard> xClipboard(GetChartWindow()->GetClipboard());
-                if ( xClipboard.is() )
-                {
-                    xClipboard->setContents( xTransferable, Reference< datatransfer::clipboard::XClipboardOwner >() );
-                }
+                Reference< datatransfer::XTransferable > xTransferable(
+                    new ChartTransferable(m_pDrawModelWrapper->getSdrModel(),
+                                          pSelectedObj, aSelOID.isAdditionalShape()));
+                xClipboard->setContents(xTransferable, Reference< datatransfer::clipboard::XClipboardOwner >());
             }
         }
     }


More information about the Libreoffice-commits mailing list