chart2/Library_chartcontroller.mk                                 |    4 ++
 chart2/source/controller/dialogs/tp_PolarOptions.cxx              |    4 +-
 chart2/source/model/template/PieChartTypeTemplate.cxx             |   11 +++++-
 officecfg/registry/schema/org/openoffice/Office/Compatibility.xcs |    8 ++++
 sw/qa/extras/uiwriter/uiwriter2.cxx                               |   17 
++++++++++
 5 files changed, 42 insertions(+), 2 deletions(-)

New commits:
commit 41fa7244746819411f209110f13af43941f17ce8
Author:     Kelemen Gábor <kelem...@ubuntu.com>
AuthorDate: Tue Nov 12 15:03:04 2019 +0100
Commit:     László Németh <nem...@numbertext.org>
CommitDate: Mon Sep 28 09:18:06 2020 +0200

    tdf#108059 Introduce compatibility key for pie chart orientation
    
    There is no similar setting in MSO, it just always uses clockwise.
    
    LO on the other hand confuses users by using counterclockwise
    which turns to clockwise upon save to OOXML and reload.
    
    Eliminate this behavior by introducing a compatibility key
    for OOXML-heavy environments that:
    - sets the orientation to clockwise when pie chart type is selected
    - hides the checkbox that would have no effect after a save to OOXML
    
    Default value is false to keep current behavior
    
    Change-Id: I9e12ecad8e9978f960c921a521461aee023a5063
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/82524
    Tested-by: Jenkins
    Tested-by: László Németh <nem...@numbertext.org>
    Reviewed-by: Balazs Varga <balazs.varga...@gmail.com>
    Reviewed-by: László Németh <nem...@numbertext.org>

diff --git a/chart2/Library_chartcontroller.mk 
b/chart2/Library_chartcontroller.mk
index 48115dd2a33b..05f031415213 100644
--- a/chart2/Library_chartcontroller.mk
+++ b/chart2/Library_chartcontroller.mk
@@ -22,6 +22,10 @@ $(eval $(call 
gb_Library_use_external,chartcontroller,boost_headers))
 
 $(eval $(call gb_Library_use_sdk_api,chartcontroller))
 
+$(eval $(call gb_Library_use_custom_headers,chartcontroller,\
+        officecfg/registry \
+))
+
 $(eval $(call gb_Library_use_libraries,chartcontroller,\
     basegfx \
     chartcore \
diff --git a/chart2/source/controller/dialogs/tp_PolarOptions.cxx 
b/chart2/source/controller/dialogs/tp_PolarOptions.cxx
index 804c4221247a..e858813bb39f 100644
--- a/chart2/source/controller/dialogs/tp_PolarOptions.cxx
+++ b/chart2/source/controller/dialogs/tp_PolarOptions.cxx
@@ -22,6 +22,7 @@
 
 #include <svl/eitem.hxx>
 #include <svl/intitem.hxx>
+#include <officecfg/Office/Compatibility.hxx>
 
 namespace chart
 {
@@ -80,7 +81,8 @@ void PolarOptionsTabPage::Reset(const SfxItemSet* rInAttrs)
     {
         m_xFL_StartingAngle->hide();
     }
-    if (rInAttrs->GetItemState(SCHATTR_CLOCKWISE, true, &pPoolItem) == 
SfxItemState::SET)
+    // tdf#108059 Hide clockwise orientation checkbox in OOXML-heavy 
environments it would be useless anyways
+    if 
(!officecfg::Office::Compatibility::View::ClockwisePieChartDirection::get() && 
rInAttrs->GetItemState(SCHATTR_CLOCKWISE, true, &pPoolItem) == 
SfxItemState::SET)
     {
         bool bCheck = static_cast< const SfxBoolItem * >( pPoolItem 
)->GetValue();
         m_xCB_Clockwise->set_active(bCheck);
diff --git a/chart2/source/model/template/PieChartTypeTemplate.cxx 
b/chart2/source/model/template/PieChartTypeTemplate.cxx
index ec08764a7509..7f58b6e856e6 100644
--- a/chart2/source/model/template/PieChartTypeTemplate.cxx
+++ b/chart2/source/model/template/PieChartTypeTemplate.cxx
@@ -34,6 +34,7 @@
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <officecfg/Office/Compatibility.hxx>
 #include <tools/diagnose_ex.h>
+#include <officecfg/Office/Compatibility.hxx>
 
 #include <rtl/math.hxx>
 
@@ -237,7 +238,15 @@ void PieChartTypeTemplate::adaptScales(
             {
                 chart2::ScaleData aScaleData( xAxis->getScaleData() );
                 AxisHelper::removeExplicitScaling( aScaleData );
-                aScaleData.Orientation = chart2::AxisOrientation_MATHEMATICAL;
+                // tdf#108059 Create new pie/donut charts with clockwise 
orientation
+                if 
(!officecfg::Office::Compatibility::View::ClockwisePieChartDirection::get())
+                {
+                    aScaleData.Orientation = 
chart2::AxisOrientation_MATHEMATICAL;
+                }
+                else
+                {
+                    aScaleData.Orientation = chart2::AxisOrientation_REVERSE;
+                }
                 xAxis->setScaleData( aScaleData );
             }
 
diff --git a/officecfg/registry/schema/org/openoffice/Office/Compatibility.xcs 
b/officecfg/registry/schema/org/openoffice/Office/Compatibility.xcs
index 5b89f9498005..87d139fb9116 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Compatibility.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Compatibility.xcs
@@ -193,6 +193,14 @@
         </info>
         <value>true</value>
       </prop>
+      <prop oor:name="ClockwisePieChartDirection" oor:type="xs:boolean" 
oor:nillable="false">
+        <info>
+        <!-- See tdf#108059 for rationale -->
+            <desc>Specifies whether the default orientation of pie charts 
should be clockwise. In OOXML-heavy environments it might be confusing to see 
charts being mirrored after save, avoid that by setting this key to true.</desc>
+            <label>Pie chart default orientation. Set to true for more 
OOXML-ish UX.</label>
+        </info>
+        <value>false</value>
+      </prop>
     </group>
   </component>
 </oor:component-schema>
diff --git a/sw/qa/extras/uiwriter/uiwriter2.cxx 
b/sw/qa/extras/uiwriter/uiwriter2.cxx
index 8fb14a87c945..a6efc4a5ee60 100644
--- a/sw/qa/extras/uiwriter/uiwriter2.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter2.cxx
@@ -2977,9 +2977,20 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf123218)
         }
         ~ReverseXAxisOrientationDoughnutChart() = delete;
     };
+
+    struct ClockwisePieChartDirection
+        : public comphelper::ConfigurationProperty<ClockwisePieChartDirection, 
bool>
+    {
+        static OUString path()
+        {
+            return 
"/org.openoffice.Office.Compatibility/View/ClockwisePieChartDirection";
+        }
+        ~ClockwisePieChartDirection() = delete;
+    };
     auto batch = comphelper::ConfigurationChanges::create();
 
     ReverseXAxisOrientationDoughnutChart::set(false, batch);
+    ClockwisePieChartDirection::set(true, batch);
     batch->commit();
 
     createDoc();
@@ -3028,5 +3039,11 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf123218)
     CPPUNIT_ASSERT(xAxis.is());
     chart2::ScaleData aScaleData = xAxis->getScaleData();
     CPPUNIT_ASSERT_EQUAL(chart2::AxisOrientation_MATHEMATICAL, 
aScaleData.Orientation);
+
+    // tdf#108059 test primary Y axis Orientation value
+    uno::Reference<chart2::XAxis> xYAxis = xCoord->getAxisByDimension(1, 0);
+    CPPUNIT_ASSERT(xYAxis.is());
+    aScaleData = xYAxis->getScaleData();
+    CPPUNIT_ASSERT_EQUAL(chart2::AxisOrientation_REVERSE, 
aScaleData.Orientation);
 }
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to