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

Szabolcs Toth (via logerrit) logerrit at kemper.freedesktop.org
Tue Oct 8 18:58:06 UTC 2019


 sc/qa/unit/data/ods/CommentTextHAlign.ods |binary
 sc/qa/unit/subsequent_export-test.cxx     |   19 +++++++++++++++++++
 sc/source/filter/oox/commentsbuffer.cxx   |   16 ++++++++++++++++
 sc/source/filter/xcl97/xcl97rec.cxx       |   17 +++++++++++++++++
 4 files changed, 52 insertions(+)

New commits:
commit 10c85f825f1fb5989490ec731fdba036c0b8e247
Author:     Szabolcs Toth <szabolcs450 at gmail.com>
AuthorDate: Tue Oct 8 11:21:50 2019 +0200
Commit:     László Németh <nemeth at numbertext.org>
CommitDate: Tue Oct 8 20:56:46 2019 +0200

    tdf#123339 XLSX: fix horizontal alignment in comments
    
    Import and export of VML element TextHAlign weren't
    supported by Calc, losing horizontal aligment of the
    comments assigned to the spreadsheet cells.
    
    Change-Id: I41766d3004dd07ab34a2619e28532281366bf235
    Reviewed-on: https://gerrit.libreoffice.org/79963
    Tested-by: Jenkins
    Reviewed-by: László Németh <nemeth at numbertext.org>

diff --git a/sc/qa/unit/data/ods/CommentTextHAlign.ods b/sc/qa/unit/data/ods/CommentTextHAlign.ods
new file mode 100644
index 000000000000..2132779cb76a
Binary files /dev/null and b/sc/qa/unit/data/ods/CommentTextHAlign.ods differ
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index eaadde60f558..4c53441de68a 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -223,6 +223,7 @@ public:
     void testTdf126024XLSX();
     void testTdf126177XLSX();
     void testCommentTextVAlignment();
+    void testCommentTextHAlignment();
 
     void testXltxExport();
 
@@ -351,6 +352,7 @@ public:
     CPPUNIT_TEST(testTdf126024XLSX);
     CPPUNIT_TEST(testTdf126177XLSX);
     CPPUNIT_TEST(testCommentTextVAlignment);
+    CPPUNIT_TEST(testCommentTextHAlignment);
 
     CPPUNIT_TEST(testXltxExport);
 
@@ -4504,6 +4506,23 @@ void ScExportTest::testCommentTextVAlignment()
     assertXPathContent(pVmlDrawing, "/xml/v:shape/xx:ClientData/xx:TextVAlign", "Center");
 }
 
+void ScExportTest::testCommentTextHAlignment()
+{
+    // Testing comment text alignments.
+    ScDocShellRef xShell = loadDoc("CommentTextHAlign.", FORMAT_ODS);
+    CPPUNIT_ASSERT(xShell.is());
+
+    std::shared_ptr<utl::TempFile> pXPathFile
+        = ScBootstrapFixture::exportTo(&(*xShell), FORMAT_XLSX);
+
+    const xmlDocPtr pVmlDrawing
+        = XPathHelper::parseExport(pXPathFile, m_xSFactory, "xl/drawings/vmlDrawing1.vml");
+    CPPUNIT_ASSERT(pVmlDrawing);
+
+    assertXPathContent(pVmlDrawing, "/xml/v:shape/xx:ClientData/xx:TextHAlign", "Center");
+}
+
+
 CPPUNIT_TEST_SUITE_REGISTRATION(ScExportTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sc/source/filter/oox/commentsbuffer.cxx b/sc/source/filter/oox/commentsbuffer.cxx
index 00045842c9fd..c3c60c3f5a6d 100644
--- a/sc/source/filter/oox/commentsbuffer.cxx
+++ b/sc/source/filter/oox/commentsbuffer.cxx
@@ -77,6 +77,21 @@ static sal_Int32 lcl_ToVertAlign( sal_Int32 nAlign )
     }
 }
 
+static sal_Int16 lcl_ToParaAlign(sal_Int32 nAlign)
+{
+    switch ( nAlign )
+    {
+        case XML_Left:
+            return sal_Int16(css::style::ParagraphAdjust_LEFT);
+        case XML_Right:
+            return sal_Int16(css::style::ParagraphAdjust_RIGHT);
+        case XML_Center:
+            return sal_Int16(css::style::ParagraphAdjust_CENTER);
+        default:
+            return sal_Int16(css::style::ParagraphAdjust_BLOCK);
+    }
+}
+
 CommentModel::CommentModel()
     : mnAuthorId(-1)
     , mbAutoFill(false)
@@ -171,6 +186,7 @@ void Comment::finalizeImport()
             // Setting comment text alignment
             const ::oox::vml::ClientData* xClientData = pNoteShape->getClientData();
             aCommentPr.setProperty(PROP_TextVerticalAdjust, lcl_ToVertAlign(xClientData->mnTextVAlign));
+            aCommentPr.setProperty(PROP_ParaAdjust, lcl_ToParaAlign(xClientData->mnTextHAlign));
         }
         xAnno->setIsVisible( bVisible );
 
diff --git a/sc/source/filter/xcl97/xcl97rec.cxx b/sc/source/filter/xcl97/xcl97rec.cxx
index f750fdb9ad6c..3384e305185e 100644
--- a/sc/source/filter/xcl97/xcl97rec.cxx
+++ b/sc/source/filter/xcl97/xcl97rec.cxx
@@ -624,6 +624,21 @@ sal_Int32 VmlCommentExporter::StartShape()
     return nId;
 }
 
+static const char* lcl_GetHorizAlignFromItemSetChar(const SfxItemSet& rItemSet)
+{
+    switch (rItemSet.Get(EE_PARA_JUST).GetAdjust())
+    {
+        case SvxAdjust::Center:
+            return "Center";
+        case SvxAdjust::Right:
+            return "Right";
+        case SvxAdjust::Block:
+            return "Justify";
+        default:
+            return "Left";
+    }
+}
+
 static const char* lcl_GetVertAlignFromItemSetChar( const SfxItemSet& rItemSet )
 {
     switch( rItemSet.Get( SDRATTR_TEXT_VERTADJUST ).GetValue() )
@@ -650,6 +665,7 @@ void VmlCommentExporter::EndShape( sal_Int32 nShapeElement )
 
     // Getting comment text alignments
     const char* pVertAlign = lcl_GetVertAlignFromItemSetChar(mpCaption->GetMergedItemSet());
+    const char* pHorizAlign = lcl_GetHorizAlignFromItemSetChar(mpCaption->GetMergedItemSet());
 
     pVmlDrawing->startElement(FSNS(XML_x, XML_ClientData), XML_ObjectType, "Note");
     pVmlDrawing->singleElement(FSNS(XML_x, XML_MoveWithCells));
@@ -657,6 +673,7 @@ void VmlCommentExporter::EndShape( sal_Int32 nShapeElement )
     XclXmlUtils::WriteElement( pVmlDrawing, FSNS( XML_x, XML_Anchor ), pAnchor );
     XclXmlUtils::WriteElement( pVmlDrawing, FSNS( XML_x, XML_AutoFill ), "False" );
     XclXmlUtils::WriteElement( pVmlDrawing, FSNS( XML_x, XML_TextVAlign ), pVertAlign );
+    XclXmlUtils::WriteElement( pVmlDrawing, FSNS( XML_x, XML_TextHAlign ), pHorizAlign );
     XclXmlUtils::WriteElement( pVmlDrawing, FSNS( XML_x, XML_Row ), maScPos.Row() );
     XclXmlUtils::WriteElement( pVmlDrawing, FSNS(XML_x, XML_Column), sal_Int32(maScPos.Col()));
     if(mbVisible)


More information about the Libreoffice-commits mailing list