sw/qa/uibase/frmdlg/data/image.png |binary
 sw/qa/uibase/frmdlg/frmdlg.cxx     |   27 +++++++++++++++++++++++++++
 sw/source/uibase/frmdlg/frmmgr.cxx |   14 +++++++++++++-
 3 files changed, 40 insertions(+), 1 deletion(-)

New commits:
commit 7413cc96d239f5fd5a588f13784ccb82b6968bac
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Fri Jun 11 11:41:41 2021 +0200
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Fri Jun 11 12:51:32 2021 +0200

    sw image anchor type: consider a style-based custom value
    
    The anchor type is determined during insertion, it's stored as direct
    formatting after that.
    
    We used to have a user-profile default for the anchor type. This commit
    allows customizing the Graphics or OLE styles: if they specify a custom
    anchor type, then that is user instead of the user profile setting.
    
    This allows creating templates where the default depends on the used
    template and not on the user profile.
    
    The UI for this was added in commit
    5951da5175b9d7e5b3b47bd0d90989d2ef528c79 (sw image anchor type: add
    style UI for this, 2021-06-10).
    
    Change-Id: Id05342a5f38dc6267cdbe68b248dc50b87854ce2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117040
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>
    Tested-by: Jenkins

diff --git a/sw/qa/uibase/frmdlg/data/image.png 
b/sw/qa/uibase/frmdlg/data/image.png
new file mode 100644
index 000000000000..fdad35484e7c
Binary files /dev/null and b/sw/qa/uibase/frmdlg/data/image.png differ
diff --git a/sw/qa/uibase/frmdlg/frmdlg.cxx b/sw/qa/uibase/frmdlg/frmdlg.cxx
index 56b96803686e..ce9367ea815b 100644
--- a/sw/qa/uibase/frmdlg/frmdlg.cxx
+++ b/sw/qa/uibase/frmdlg/frmdlg.cxx
@@ -9,6 +9,8 @@
 
 #include <swmodeltestbase.hxx>
 
+#include <comphelper/propertyvalue.hxx>
+
 #include <com/sun/star/text/TextContentAnchorType.hpp>
 
 constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/uibase/frmdlg/data/";
@@ -32,6 +34,31 @@ CPPUNIT_TEST_FIXTURE(SwUibaseFrmdlgTest, 
testWrappedMathObject)
                          getProperty<text::TextContentAnchorType>(getShape(1), 
"AnchorType"));
 }
 
+CPPUNIT_TEST_FIXTURE(SwUibaseFrmdlgTest, testAnchorTypeFromStyle)
+{
+    // Given a document with aGraphics style with anchor type set to 
as-character:
+    createSwDoc();
+    uno::Reference<beans::XPropertySet> 
xGraphics(getStyles("FrameStyles")->getByName("Graphics"),
+                                                  uno::UNO_QUERY);
+    xGraphics->setPropertyValue("AnchorType",
+                                
uno::makeAny(text::TextContentAnchorType_AS_CHARACTER));
+
+    // When inserting an image:
+    OUString aImageURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + 
"image.png";
+    uno::Sequence<beans::PropertyValue> aArgs = {
+        comphelper::makePropertyValue("FileName", aImageURL),
+    };
+    dispatchCommand(mxComponent, ".uno:InsertGraphic", aArgs);
+
+    // Then make sure the image's anchor type is as-char:
+    auto eActual = getProperty<text::TextContentAnchorType>(getShape(1), 
"AnchorType");
+    // Without the accompanying fix in place, this test would have failed with:
+    // - Expected: 1 (AS_CHARACTER)
+    // - Actual  : 4 (AT_CHARACTER)
+    // i.e. the anchor type from the style was ignored.
+    CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AS_CHARACTER, eActual);
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/frmdlg/frmmgr.cxx 
b/sw/source/uibase/frmdlg/frmmgr.cxx
index fa5991baac56..2146b05d44e9 100644
--- a/sw/source/uibase/frmdlg/frmmgr.cxx
+++ b/sw/source/uibase/frmdlg/frmmgr.cxx
@@ -92,7 +92,19 @@ SwFlyFrameAttrMgr::SwFlyFrameAttrMgr( bool bNew, SwWrtShell* 
pSh, Frmmgr_Type nT
             {
                 // Default anchor for new graphics and objects is at-char, 
except for Math objects.
                 SwViewOption aViewOpt(*pSh->GetViewOptions());
-                
m_aSet.Put(SwFormatAnchor(aViewOpt.GetDefaultAnchorType()));//RndStdIds::FLY_AT_CHAR
+
+                RndStdIds eAnchorType = aViewOpt.GetDefaultAnchorType();
+
+                const SwFormatAnchor rStyleAnchor
+                    = 
m_pOwnSh->GetFormatFromPool(nId)->GetAttrSet().GetAnchor();
+                if (rStyleAnchor.GetAnchorId() != RndStdIds::FLY_AT_PARA)
+                {
+                    // The style has a custom anchor type, prefer that over 
the user profile
+                    // default.
+                    eAnchorType = rStyleAnchor.GetAnchorId();
+                }
+
+                m_aSet.Put(SwFormatAnchor(eAnchorType));
             }
         }
     }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to