[Libreoffice-commits] core.git: 4 commits - sc/source svx/source

Eike Rathke erack at redhat.com
Fri Dec 16 01:38:42 UTC 2016


 sc/source/core/data/drwlayer.cxx                  |    7 +++++
 sc/source/ui/Accessibility/AccessibleDocument.cxx |   13 ++-------
 svx/source/svdraw/svdedxv.cxx                     |   30 +++++++++++-----------
 3 files changed, 27 insertions(+), 23 deletions(-)

New commits:
commit 0c565095983b0cc8b96a78012c611b7a03962204
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Dec 16 00:36:00 2016 +0100

    remove superfluous this->Init() call
    
    Init() does exactly the same, just that it didn't because it was already done ...
    Went in with IAccessible2 integration.
    
    Change-Id: Ib29bd000e283bbb500689914f1ceb692dd0ab380

diff --git a/sc/source/ui/Accessibility/AccessibleDocument.cxx b/sc/source/ui/Accessibility/AccessibleDocument.cxx
index cbdc599b..e34f666 100644
--- a/sc/source/ui/Accessibility/AccessibleDocument.cxx
+++ b/sc/source/ui/Accessibility/AccessibleDocument.cxx
@@ -1555,17 +1555,12 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
             mpAccessibleSpreadsheet.is())
         {
             FreeAccessibleSpreadsheet();
+
+            // Shapes / form controls after reload not accessible, rebuild the
+            // mpChildrenShapes variable.
             if (mpChildrenShapes)
                 DELETEZ(mpChildrenShapes);
-
-            // Accessibility: Shapes / form controls after reload not accessible
-            if ( !mpChildrenShapes )
-            {
-                mpChildrenShapes = new ScChildrenShapes( this, mpViewShell, meSplitPos );
-            }
-
-            //Invoke Init() to rebuild the mpChildrenShapes variable
-            this->Init();
+            mpChildrenShapes = new ScChildrenShapes( this, mpViewShell, meSplitPos );
 
             AccessibleEventObject aEvent;
             aEvent.EventId = AccessibleEventId::INVALIDATE_ALL_CHILDREN;
commit 6a334757082be4915e7e731ce4c1b0bd4641050d
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Dec 16 00:18:52 2016 +0100

    Resolves: tdf#103543 disable mass broadcasts from drawing objects' changes
    
    Specifically the a11y listeners are nasty bottle necks. A11y will get
    updated on paint/view. We're touching all objects on that drawing page
    to reposition so interdependencies that need to be broadcasted should
    not happen.
    
    Change-Id: Ic80446e22422a3097281ba20eecf0a078ac6a7cb

diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx
index 1deb958..3689aab 100644
--- a/sc/source/core/data/drwlayer.cxx
+++ b/sc/source/core/data/drwlayer.cxx
@@ -587,6 +587,9 @@ void ScDrawLayer::SetPageSize( sal_uInt16 nPageNo, const Size& rSize, bool bUpda
 
         bool bNegativePage = pDoc && pDoc->IsNegativePage( static_cast<SCTAB>(nPageNo) );
 
+        // Disable mass broadcasts from drawing objects' position changes.
+        bool bWasLocked = isLocked();
+        setLock(true);
         const size_t nCount = pPage->GetObjCount();
         for ( size_t i = 0; i < nCount; ++i )
         {
@@ -595,6 +598,7 @@ void ScDrawLayer::SetPageSize( sal_uInt16 nPageNo, const Size& rSize, bool bUpda
             if( pData )
                 RecalcPos( pObj, *pData, bNegativePage, bUpdateNoteCaptionPos );
         }
+        setLock(bWasLocked);
     }
 }
 
commit b954f1427a9549d89d8b0800259af9374b4767df
Author: Eike Rathke <erack at redhat.com>
Date:   Thu Dec 15 21:34:17 2016 +0100

    prevent mutiple broadcasts during the series of changes on one drawing object
    
    Change-Id: I3a26d3589cbbcb8359242f7e1709fa7c34bd2900

diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx
index f2e93dd..1deb958 100644
--- a/sc/source/core/data/drwlayer.cxx
+++ b/sc/source/core/data/drwlayer.cxx
@@ -821,6 +821,9 @@ void ScDrawLayer::RecalcPos( SdrObject* pObj, ScDrawObjData& rData, bool bNegati
     }
     else
     {
+        // Prevent mutiple broadcasts during the series of changes.
+        SdrDelayBroadcastObjectChange aDelayBroadcastObjectChange(*pObj);
+
         bool bCanResize = bValid2 && !pObj->IsResizeProtect();
 
         //First time positioning, must be able to at least move it
commit ba53b2d28274ad4e36ef57084b48c4ed73d15e63
Author: Eike Rathke <erack at redhat.com>
Date:   Thu Dec 15 19:54:15 2016 +0100

    avoid dynamic_cast
    
    Change-Id: I9f64eac95b39adc649b2e63cd5abdd6e7a448ee6

diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index 512bc34..1fe56c8 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -216,21 +216,23 @@ void SdrObjEditView::TakeActionRect(Rectangle& rRect) const
 void SdrObjEditView::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
 {
     SdrGlueEditView::Notify(rBC,rHint);
-    // change of printer while editing
-    const SdrHint* pSdrHint = dynamic_cast<const SdrHint*>(&rHint);
-    if (pSdrHint!=nullptr && pTextEditOutliner!=nullptr) {
-        SdrHintKind eKind=pSdrHint->GetKind();
-        if (eKind==SdrHintKind::RefDeviceChange) {
-            pTextEditOutliner->SetRefDevice(mpModel->GetRefDevice());
-        }
-        if (eKind==SdrHintKind::DefaultTabChange) {
-            pTextEditOutliner->SetDefTab(mpModel->GetDefaultTabulator());
-        }
-        if (eKind==SdrHintKind::DefaultFontHeightChange) {
+    if (pTextEditOutliner!=nullptr) {
+        // change of printer while editing
+        const SdrHint* pSdrHint = dynamic_cast<const SdrHint*>(&rHint);
+        if (pSdrHint!=nullptr) {
+            SdrHintKind eKind=pSdrHint->GetKind();
+            if (eKind==SdrHintKind::RefDeviceChange) {
+                pTextEditOutliner->SetRefDevice(mpModel->GetRefDevice());
+            }
+            if (eKind==SdrHintKind::DefaultTabChange) {
+                pTextEditOutliner->SetDefTab(mpModel->GetDefaultTabulator());
+            }
+            if (eKind==SdrHintKind::DefaultFontHeightChange) {
 
-        }
-        if (eKind==SdrHintKind::ModelSaved) {
-            pTextEditOutliner->ClearModifyFlag();
+            }
+            if (eKind==SdrHintKind::ModelSaved) {
+                pTextEditOutliner->ClearModifyFlag();
+            }
         }
     }
 }


More information about the Libreoffice-commits mailing list