tdf#133005 Chart: fix ODF import of date axis position
Chart with date axis setting "On tick marks" wasn't
imported correctly.
See commit 40d83914d43f60a196dfabddea0b52e2046b333a
(tdf#127792 implement UNO chart attribute MajorOrigin)
Change-Id: I5967c4bab8690df1f191b33ecb0e5b043bca68a9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94621
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
diff --git a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
index 57375c33..1add043 100644
--- a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
+++ b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
@@ -191,7 +191,7 @@ void ObjectPropertiesDialogParameter::init( const uno::Reference< frame::XModel
if( nDimensionIndex==1 && nAxisIndex==1 && ChartTypeHelper::isSupportingBaseValue( xChartType ) )
m_bShowAxisOrigin = true;
if ( nDimensionIndex == 0 && aData.AxisType == chart2::AxisType::CATEGORY )
if ( nDimensionIndex == 0 && ( aData.AxisType == chart2::AxisType::CATEGORY || aData.AxisType == chart2::AxisType::DATE ) )
{
ChartModel* pModel = dynamic_cast<ChartModel*>(xChartModel.get());
if (pModel)
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index bc9d7a1..d3b0e88 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -628,19 +628,13 @@ void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter(
bool SeriesPlotterContainer::isCategoryPositionShifted(
const chart2::ScaleData& rSourceScale, bool bHasComplexCategories )
{
if (rSourceScale.AxisType == AxisType::CATEGORY && rSourceScale.ShiftedCategoryPosition)
return true;
if (rSourceScale.AxisType == AxisType::CATEGORY && bHasComplexCategories)
return true;
if (rSourceScale.AxisType == AxisType::CATEGORY)
return bHasComplexCategories || rSourceScale.ShiftedCategoryPosition;
if (rSourceScale.AxisType == AxisType::DATE)
return true;
return rSourceScale.ShiftedCategoryPosition;
if (rSourceScale.AxisType == AxisType::SERIES)
return true;
return false;
return rSourceScale.AxisType == AxisType::SERIES;
}
void SeriesPlotterContainer::initAxisUsageList(const Date& rNullDate)
diff --git a/sw/qa/extras/layout/data/tdf133005.odt b/sw/qa/extras/layout/data/tdf133005.odt
new file mode 100644
index 0000000..660112d
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf133005.odt
Binary files differ
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index 853d6b9..adac583 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -2347,6 +2347,32 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf123268)
41);
}
CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf133005)
{
SwDoc* pDoc = createDoc("tdf133005.odt");
SwDocShell* pShell = pDoc->GetDocShell();
// Dump the rendering of the first page as an XML file.
std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile();
MetafileXmlDump dumper;
xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile);
CPPUNIT_ASSERT(pXmlDoc);
sal_Int32 nXChartWall = getXPath(pXmlDoc,
"/metafile/push[1]/push[1]/push[1]/push[3]/push[1]/push[1]/"
"push[1]/push[1]/polyline[1]/point[2]",
"x")
.toInt32();
sal_Int32 nXColumn = getXPath(pXmlDoc,
"/metafile/push[1]/push[1]/push[1]/push[3]/push[1]/push[1]/"
"push[1]/push[42]/polypolygon/polygon/point[1]",
"x")
.toInt32();
// This failed, if the value axis doesn't appear inside category.
CPPUNIT_ASSERT_DOUBLES_EQUAL(nXChartWall, nXColumn, 5);
}
CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf115630)
{
SwDoc* pDoc = createDoc("tdf115630.docx");