tdf#96389 Use default tab stop value of MSO for pptx import.

Change-Id: Ib3dde68c672b44d8b60f121fb0e637942b5986b1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131698
Tested-by: Jenkins
Reviewed-by: Gülşah Köse <gulsah.kose@collabora.com>
diff --git a/sd/qa/unit/data/pptx/deftabstop.pptx b/sd/qa/unit/data/pptx/deftabstop.pptx
new file mode 100644
index 0000000..5cfe717
--- /dev/null
+++ b/sd/qa/unit/data/pptx/deftabstop.pptx
Binary files differ
diff --git a/sd/qa/unit/import-tests2.cxx b/sd/qa/unit/import-tests2.cxx
index 2654e6f..7a67deb 100644
--- a/sd/qa/unit/import-tests2.cxx
+++ b/sd/qa/unit/import-tests2.cxx
@@ -129,6 +129,7 @@ public:
    void testHyperlinksOnShapes();
    void testTdf112209();
    void testTdf128596();
    void testDefaultTabStop();

    CPPUNIT_TEST_SUITE(SdImportTest2);

@@ -194,6 +195,7 @@ public:
    CPPUNIT_TEST(testHyperlinksOnShapes);
    CPPUNIT_TEST(testTdf112209);
    CPPUNIT_TEST(testTdf128596);
    CPPUNIT_TEST(testDefaultTabStop);

    CPPUNIT_TEST_SUITE_END();
};
@@ -1907,6 +1909,18 @@ void SdImportTest2::testTdf128596()
    xDocShRef->DoClose();
}

void SdImportTest2::testDefaultTabStop()
{
    sd::DrawDocShellRef xDocShRef
        = loadURL(m_directories.getURLFromSrc(u"/sd/qa/unit/data/pptx/deftabstop.pptx"), PPTX);
    SdDrawDocument* pDoc = xDocShRef->GetDoc();
    sal_Int32 nDefTab = pDoc->GetDefaultTabulator();

    CPPUNIT_ASSERT_EQUAL(sal_Int32(2540), nDefTab);

    xDocShRef->DoClose();
}

CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest2);

CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sd/source/ui/docshell/docshel4.cxx b/sd/source/ui/docshell/docshel4.cxx
index bed18cb..6150321 100644
--- a/sd/source/ui/docshell/docshel4.cxx
+++ b/sd/source/ui/docshell/docshel4.cxx
@@ -399,6 +399,18 @@ bool DrawDocShell::ImportFrom(SfxMedium &rMedium,
        mpDoc->SetSummationOfParagraphs();
    }

    if (aFilterName == "Impress MS PowerPoint 2007 XML" ||
        aFilterName == "Impress MS PowerPoint 2007 XML AutoPlay" ||
        aFilterName == "Impress MS PowerPoint 2007 XML VBA" ||
        aFilterName == "Impress Office Open XML")
    {
        // We need to be able to set the default tab size for each text object.
        // This is possible at the moment only for the whole document. See
        // TextParagraphPropertiesContext constructor. So default tab width
        // of the LibreOffice is 1270 but MSO is 2540 on general settings.
        mpDoc->SetDefaultTabulator( 2540 );
    }

    const bool bRet = SfxObjectShell::ImportFrom(rMedium, xInsertPosition);

    SfxItemSet* pSet = rMedium.GetItemSet();