From b9b2c6a98fec798fc0ec76ec3cd407724f19dcac Mon Sep 17 00:00:00 2001 From: László Németh Date: Wed, 21 Apr 2021 15:42:37 +0200 Subject: tdf#141933 add preset dash styles with round cap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New OOXML-compatible preset styles weren't recognized on the UI, including the Drawing Object Properties toolbar and Line Style settings, if the preset styles use round cap, e.g. line styles with dot-like dots (i.e. not tiny squares as dots). As a workaround for interoperability and access to the line styles with dot-like dots, add "Rounded" version for every OOXML-compatible preset styles with round cap. This allows to apply dot-like dotted lines to new shapes, too. Background: round cap modifies the DotLen and DashLen values of the LineDash struct during the OOXML import, using ~zero values to get dot-like dots. For the details, see commit 3f3b50015e4fd9efc3459612a70409fca49cf390 "tdf#134053 tweak dash and space length for ooxml" and commit 24d770799660d3ec94ee7add435645794426042b "tdf#134128 Use Gdiplus::DashCapRound for round dash or dot". Follow of commit 183c06fc02a50fb117bb6162e4d6e56cdd34fad1 "tdf#139301 fix OOXML-compatible preset dash styles". Change-Id: I4f3173579964b2c00618ada475b012c85320f758 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114459 Tested-by: László Németh Reviewed-by: László Németh --- extras/source/palettes/standard.sod | 10 ++++++ .../uitest/data/tdf127166_prstDash_round_cap.docx | Bin 0 -> 23784 bytes sw/qa/uitest/writer_tests7/tdf139301.py | 34 +++++++++++++++++++-- 3 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 sw/qa/uitest/data/tdf127166_prstDash_round_cap.docx diff --git a/extras/source/palettes/standard.sod b/extras/source/palettes/standard.sod index 3ac90cb0604a..7b68ea06cf9c 100644 --- a/extras/source/palettes/standard.sod +++ b/extras/source/palettes/standard.sod @@ -2,15 +2,25 @@ + + + + + + + + + + diff --git a/sw/qa/uitest/data/tdf127166_prstDash_round_cap.docx b/sw/qa/uitest/data/tdf127166_prstDash_round_cap.docx new file mode 100644 index 000000000000..52f9aaa5589f Binary files /dev/null and b/sw/qa/uitest/data/tdf127166_prstDash_round_cap.docx differ diff --git a/sw/qa/uitest/writer_tests7/tdf139301.py b/sw/qa/uitest/writer_tests7/tdf139301.py index 62a80b29998f..064018889031 100644 --- a/sw/qa/uitest/writer_tests7/tdf139301.py +++ b/sw/qa/uitest/writer_tests7/tdf139301.py @@ -9,12 +9,40 @@ from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file class tdf139301(UITestCase): + styles = ('Long Dash', 'Long Dash Dot', 'Long Dot', 'Double Dash', 'Double Dash Dot', 'Double Dash Dot Dot', 'Dash', 'Dash Dot', 'Dash Dot Dot', 'Dot') + def test_tdf139301(self): writer_doc = self.ui_test.load_file(get_url_for_data_file("tdf127166_prstDash_Word97.docx")) - styles = ('Long Dash', 'Long Dash Dot', 'Long Dot', 'Double Dash', 'Double Dash Dot', 'Double Dash Dot Dot', 'Dash', 'Dash Dot', 'Dash Dot Dot', 'Dot') + for i in range(len(self.styles)): + # select next line shape + writer_doc.getCurrentController().select(writer_doc.getDrawPage()[i]) + + # wait for available line style setting + self.ui_test.wait_until_child_is_available('metricfield') + + # line setting dialog window + self.ui_test.execute_dialog_through_command(".uno:FormatLine") + xFormatLineDlg = self.xUITest.getTopFocusWindow() + # get line style combo box + xLineStyle = xFormatLineDlg.getChild("LB_LINE_STYLE") + + # check preset line style + style = get_state_as_dict(xLineStyle)['SelectEntryText'] + + xOKBtn = xFormatLineDlg.getChild("ok") + self.ui_test.close_dialog_through_button(xOKBtn) + + self.assertEqual(style, self.styles[i]) + + self.ui_test.close_doc() + + def test_round_cap(self): + writer_doc = self.ui_test.load_file(get_url_for_data_file("tdf127166_prstDash_round_cap.docx")) + + style_name_extension = ' (Rounded)' - for i in range(len(styles)): + for i in range(len(self.styles)): # select next line shape writer_doc.getCurrentController().select(writer_doc.getDrawPage()[i]) @@ -33,7 +61,7 @@ class tdf139301(UITestCase): xOKBtn = xFormatLineDlg.getChild("ok") self.ui_test.close_dialog_through_button(xOKBtn) - self.assertEqual(style, styles[i]) + self.assertEqual(style, self.styles[i] + style_name_extension) self.ui_test.close_doc() -- cgit