[Libreoffice-commits] core.git: Branch 'libreoffice-7-5' - chart2/source sw/qa

2023-03-07 Thread László Németh (via logerrit)
 chart2/source/controller/dialogs/DialogModel.cxx |   17 +
 sw/qa/uitest/writer_tests7/tdf132714.py  |   28 +++
 2 files changed, 40 insertions(+), 5 deletions(-)

New commits:
commit ad3fe5c2e71deb7cd51d40549331371022cfb3b4
Author: László Németh 
AuthorDate: Mon Feb 27 13:56:01 2023 +0100
Commit: Caolán McNamara 
CommitDate: Tue Mar 7 16:50:22 2023 +

tdf#153859 sw: crash fix for setting chart with deleted data table

Opening Data Ranges dialog window of a chart with
deleted data table crashed Writer immediately.

Follow-up to commit 5b9855acc7fa6d1e4a5f53ff0bc47e1dd4729827
"tdf#132714 sw: fix crash at table row deletion associated
to a chart".

Change-Id: I96e901db75d40ae234f58827a957204bca13aa92
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147893
Tested-by: László Németh 
Reviewed-by: László Németh 
(cherry picked from commit e706698353a7187f46ddbf0faf1f6f7772753df6)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147904
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/chart2/source/controller/dialogs/DialogModel.cxx 
b/chart2/source/controller/dialogs/DialogModel.cxx
index 564343c62671..d6d1fbd71b97 100644
--- a/chart2/source/controller/dialogs/DialogModel.cxx
+++ b/chart2/source/controller/dialogs/DialogModel.cxx
@@ -631,13 +631,20 @@ void DialogModel::setCategories( const Reference< 
chart2::data::XLabeledDataSequ
 
 OUString DialogModel::getCategoriesRange() const
 {
-uno::Reference< chart2::data::XLabeledDataSequence > xLSeq( 
getCategories());
 OUString aRange;
-if( xLSeq.is())
+try
+{
+uno::Reference< chart2::data::XLabeledDataSequence > xLSeq( 
getCategories());
+if( xLSeq.is())
+{
+Reference< data::XDataSequence > xSeq( xLSeq->getValues());
+if( xSeq.is())
+aRange = xSeq->getSourceRangeRepresentation();
+}
+}
+catch (const lang::DisposedException&)
 {
-Reference< data::XDataSequence > xSeq( xLSeq->getValues());
-if( xSeq.is())
-aRange = xSeq->getSourceRangeRepresentation();
+TOOLS_WARN_EXCEPTION( "chart2", "unexpected exception caught" );
 }
 return aRange;
 }
diff --git a/sw/qa/uitest/writer_tests7/tdf132714.py 
b/sw/qa/uitest/writer_tests7/tdf132714.py
index 7ccedbeb6f4d..cad8ff24e80d 100644
--- a/sw/qa/uitest/writer_tests7/tdf132714.py
+++ b/sw/qa/uitest/writer_tests7/tdf132714.py
@@ -66,4 +66,32 @@ class tdf132714(UITestCase):
 # Without the fix in place, this test would have crashed here
 xToolkitRobot.mouseMove(xMouseEvent)
 
+def test_data_ranges(self):
+with self.ui_test.load_file(get_url_for_data_file("tdf132714.odt")) as 
document:
+
+# delete second row (first data row) in the associated text table 
of the chart
+self.xUITest.executeCommand(".uno:GoDown")
+self.xUITest.executeCommand(".uno:GoDown")
+# Without the fix in place, at this point crash occurs.
+self.xUITest.executeCommand(".uno:DeleteTable")
+
+# select embedded chart
+self.assertEqual(1, document.EmbeddedObjects.Count)
+
document.CurrentController.select(document.getEmbeddedObjects().getByIndex(0))
+self.assertEqual("SwXTextEmbeddedObject", 
document.CurrentSelection.getImplementationName())
+
+xChartMainTop = self.xUITest.getTopFocusWindow()
+xWriterEdit = xChartMainTop.getChild("writer_edit")
+# edit object by pressing Enter
+xWriterEdit.executeAction("TYPE", 
mkPropertyValues({"KEYCODE":"RETURN"}))
+
+# open DataRanges dialog window
+xChartMain = xChartMainTop.getChild("chart_window")
+xSeriesObj =  xChartMain.getChild("CID/Page=")
+
+# Without the fix in place, this test would have crashed here
+with self.ui_test.execute_dialog_through_action(xSeriesObj, 
"COMMAND", mkPropertyValues({"COMMAND": "DataRanges"})) as xDialog:
+pass
+
+
 # vim: set shiftwidth=4 softtabstop=4 expandtab:


[Libreoffice-commits] core.git: Branch 'libreoffice-7-5' - chart2/source sw/qa sw/source

2023-03-07 Thread László Németh (via logerrit)
 chart2/source/controller/dialogs/ObjectNameProvider.cxx |   26 +
 chart2/source/tools/DataSeriesHelper.cxx|   13 +++-
 sw/qa/uitest/writer_tests7/tdf132714.py |   46 
 sw/source/core/unocore/unochart.cxx |   25 +---
 4 files changed, 89 insertions(+), 21 deletions(-)

New commits:
commit 78373e81c79a8afe67ffe3ac84aef5649fcf489a
Author: László Németh 
AuthorDate: Mon Feb 27 11:20:09 2023 +0100
Commit: Caolán McNamara 
CommitDate: Tue Mar 7 16:50:00 2023 +

tdf#153858 sw: crash fix for chart with deleted data table

Using mouse, e.g. simply moving the mouse pointer
during editing a chart with a deleted data table
crashed Writer immediately.

Follow-up to commit 5b9855acc7fa6d1e4a5f53ff0bc47e1dd4729827
"tdf#132714 sw: fix crash at table row deletion associated
to a chart".

Change-Id: I6d89eabc84565c548e2d9ded922789d623367ce4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147882
Tested-by: László Németh 
Reviewed-by: László Németh 
(cherry picked from commit 4f2dcc4bc70c3602e2612dab611b610410637920)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147898
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/chart2/source/controller/dialogs/ObjectNameProvider.cxx 
b/chart2/source/controller/dialogs/ObjectNameProvider.cxx
index 2bf6af62..c60ff1ca364a 100644
--- a/chart2/source/controller/dialogs/ObjectNameProvider.cxx
+++ b/chart2/source/controller/dialogs/ObjectNameProvider.cxx
@@ -124,13 +124,15 @@ OUString lcl_getDataPointValueText( const rtl::Reference< 
DataSeries >& xSeries,
 uno::Reference  xDataSequence( 
aDataSequences[nN]->getValues());
 if( !xDataSequence.is() )
 continue;
-Sequence< Any > aData( xDataSequence->getData() );
-if( nPointIndex >= aData.getLength() )
-continue;
-uno::Reference xProp(xDataSequence, 
uno::UNO_QUERY );
-if( xProp.is())
+
+try
 {
-try
+Sequence< Any > aData( xDataSequence->getData() );
+
+if( nPointIndex >= aData.getLength() )
+continue;
+uno::Reference xProp(xDataSequence, 
uno::UNO_QUERY );
+if( xProp.is())
 {
 uno::Any aARole = xProp->getPropertyValue( "Role" );
 OUString aRole;
@@ -179,10 +181,14 @@ OUString lcl_getDataPointValueText( const rtl::Reference< 
DataSeries >& xSeries,
 a_Size = aNumberFormatterWrapper.getFormattedString( 
nNumberFormatKey, fValue, nLabelColor, bColorChanged );
 }
 }
-catch( const uno::Exception& )
-{
-TOOLS_WARN_EXCEPTION("chart2", "" );
-}
+}
+catch (const lang::DisposedException&)
+{
+TOOLS_WARN_EXCEPTION( "chart2", "unexpected exception caught" );
+}
+catch( const uno::Exception& )
+{
+TOOLS_WARN_EXCEPTION("chart2", "" );
 }
 }
 
diff --git a/chart2/source/tools/DataSeriesHelper.cxx 
b/chart2/source/tools/DataSeriesHelper.cxx
index e2bc3cfbe7d0..47b3ad979b05 100644
--- a/chart2/source/tools/DataSeriesHelper.cxx
+++ b/chart2/source/tools/DataSeriesHelper.cxx
@@ -208,10 +208,17 @@ uno::Reference< chart2::data::XLabeledDataSequence >
 if( ! xSource.is())
 return aNoResult;
 const Sequence< Reference< chart2::data::XLabeledDataSequence > > 
aLabeledSeq( xSource->getDataSequences());
-for (auto const & i : aLabeledSeq)
+try
+{
+for (auto const & i : aLabeledSeq)
+{
+if (lcl_MatchesRole(aRole, bMatchPrefix)(i))
+return i;
+}
+}
+catch (const lang::DisposedException&)
 {
-if (lcl_MatchesRole(aRole, bMatchPrefix)(i))
-return i;
+TOOLS_WARN_EXCEPTION( "chart2", "unexpected exception caught" );
 }
 
 return aNoResult;
diff --git a/sw/qa/uitest/writer_tests7/tdf132714.py 
b/sw/qa/uitest/writer_tests7/tdf132714.py
index 971db5f97ad3..7ccedbeb6f4d 100644
--- a/sw/qa/uitest/writer_tests7/tdf132714.py
+++ b/sw/qa/uitest/writer_tests7/tdf132714.py
@@ -8,6 +8,9 @@
 #
 from uitest.framework import UITestCase
 from uitest.uihelper.common import get_url_for_data_file
+from libreoffice.uno.propertyvalue import mkPropertyValues
+from com.sun.star.awt import MouseButton
+from com.sun.star.awt import MouseEvent
 
 class tdf132714(UITestCase):
 def test_tdf132714(self):
@@ -20,4 +23,47 @@ class tdf132714(UITestCase):
 # Without the fix in place, at this point crash occurs.
 self.xUITest.executeCommand(".uno:DeleteRows")
 
+def test_delete_table(self):
+with self.ui_test.load_file(get_url_for_data_file("tdf132714.odt")) as 
document:
+
+# delete second row (first data row) in the associated text table 
of the chart
+