[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.0' - include/svx svx/source sw/qa sw/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Fri Jan 25 15:57:52 UTC 2019


 include/svx/svdcrtv.hxx                        |    3 +
 svx/source/svdraw/svdcrtv.cxx                  |   45 +++++++++++++------------
 sw/qa/extras/tiledrendering/tiledrendering.cxx |    6 ++-
 sw/source/core/frmedt/feshview.cxx             |    1 
 4 files changed, 34 insertions(+), 21 deletions(-)

New commits:
commit eed72a8cf515ab54de829001ec1b71a0aaaa352b
Author:     Jan Holesovsky <kendy at collabora.com>
AuthorDate: Fri Jan 25 14:40:40 2019 +0100
Commit:     Miklos Vajna <vmiklos at collabora.com>
CommitDate: Fri Jan 25 16:56:54 2019 +0100

    sw: Ctrl + shape insertion was not setting up the layer.
    
    The consequence was that the shapes were inserted into the background
    layer.
    
    The problem was particularly visible with the LOK, but reproducible on
    the desktop too.
    
    Includes unit test.
    
    Change-Id: I16137331f944101e25679ec8c4a034bea658bc57
    Reviewed-on: https://gerrit.libreoffice.org/66915
    Reviewed-by: Miklos Vajna <vmiklos at collabora.com>
    Tested-by: Miklos Vajna <vmiklos at collabora.com>

diff --git a/include/svx/svdcrtv.hxx b/include/svx/svdcrtv.hxx
index 419193dcadca..26ebce763128 100644
--- a/include/svx/svdcrtv.hxx
+++ b/include/svx/svdcrtv.hxx
@@ -114,6 +114,9 @@ public:
     bool IsCreateObj() const { return pAktCreate!=nullptr; }
     SdrObject* GetCreateObj() const { return pAktCreate; }
 
+    /// Setup layer (eg. foreground / background) of the given object.
+    static void SetupObjLayer(const SdrPageView* pPageView, const OUString& aActiveLayer, SdrObject* pObj);
+
     // BegCreateCaptionObj() creates a SdrCaptionObj (legend item).
     // rObjSiz is the initial size of the legend text frame.
     // Only the length of the tip is dragged
diff --git a/svx/source/svdraw/svdcrtv.cxx b/svx/source/svdraw/svdcrtv.cxx
index 2570ee7bcc82..e5632fce1e5f 100644
--- a/svx/source/svdraw/svdcrtv.cxx
+++ b/svx/source/svdraw/svdcrtv.cxx
@@ -575,6 +575,30 @@ void SdrCreateView::MovCreateObj(const Point& rPnt)
     }
 }
 
+void SdrCreateView::SetupObjLayer(const SdrPageView* pPageView, const OUString& aActiveLayer, SdrObject* pObj)
+{
+    const SdrLayerAdmin& rAd = pPageView->GetPage()->GetLayerAdmin();
+    SdrLayerID nLayer(0);
+
+    // #i72535#
+    if(dynamic_cast<const FmFormObj*>( pObj) !=  nullptr)
+    {
+        // for FormControls, force to form layer
+        nLayer = rAd.GetLayerID(rAd.GetControlLayerName());
+    }
+    else
+    {
+        nLayer = rAd.GetLayerID(aActiveLayer);
+    }
+
+    if(SDRLAYER_NOTFOUND == nLayer)
+    {
+        nLayer = SdrLayerID(0);
+    }
+
+    pObj->SetLayer(nLayer);
+}
+
 bool SdrCreateView::EndCreateObj(SdrCreateCmd eCmd)
 {
     bool bRet=false;
@@ -605,26 +629,7 @@ bool SdrCreateView::EndCreateObj(SdrCreateCmd eCmd)
                 SdrObject* pObj=pAktCreate;
                 pAktCreate=nullptr;
 
-                const SdrLayerAdmin& rAd = pCreatePV->GetPage()->GetLayerAdmin();
-                SdrLayerID nLayer(0);
-
-                // #i72535#
-                if(dynamic_cast<const FmFormObj*>( pObj) !=  nullptr)
-                {
-                    // for FormControls, force to form layer
-                    nLayer = rAd.GetLayerID(rAd.GetControlLayerName());
-                }
-                else
-                {
-                    nLayer = rAd.GetLayerID(maActualLayer);
-                }
-
-                if(SDRLAYER_NOTFOUND == nLayer)
-                {
-                    nLayer = SdrLayerID(0);
-                }
-
-                pObj->SetLayer(nLayer);
+                SetupObjLayer(pCreatePV, maActualLayer, pObj);
 
                 // recognize creation of a new 3D object inside a 3D scene
                 bool bSceneIntoScene(false);
diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx
index 21c78e9ce24b..807efac9ea68 100644
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -466,10 +466,14 @@ void SwTiledRenderingTest::testInsertShape()
     comphelper::dispatchCommand(".uno:BasicShapes.circle", uno::Sequence<beans::PropertyValue>());
 
     // check that the shape was inserted in the visible area, not outside
-    SdrPage* pPage = pWrtShell->GetDoc()->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0);
+    IDocumentDrawModelAccess &rDrawModelAccess = pWrtShell->GetDoc()->getIDocumentDrawModelAccess();
+    SdrPage* pPage = rDrawModelAccess.GetDrawModel()->GetPage(0);
     SdrObject* pObject = pPage->GetObj(0);
     CPPUNIT_ASSERT_EQUAL(tools::Rectangle(2736, 868, 7264, 3132), pObject->GetSnapRect());
 
+    // check that it is in the foreground layer
+    CPPUNIT_ASSERT(rDrawModelAccess.GetHeavenId() == pObject->GetLayer());
+
     comphelper::LibreOfficeKit::setActive(false);
 }
 
diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx
index a35dfd3e6621..4f17c72777f1 100644
--- a/sw/source/core/frmedt/feshview.cxx
+++ b/sw/source/core/frmedt/feshview.cxx
@@ -3119,6 +3119,7 @@ long SwFEShell::GetSectionWidth( SwFormat const & rFormat ) const
             }
         }
         SdrPageView* pPageView = pDrawView->GetSdrPageView();
+        SdrCreateView::SetupObjLayer(pPageView, pDrawView->GetActiveLayer(), pObj);
         pDrawView->InsertObjectAtView(pObj, *pPageView);
     }
     ImpEndCreate();


More information about the Libreoffice-commits mailing list