diff options
-rw-r--r-- | cui/source/tabpages/tpline.cxx | 12 | ||||
-rw-r--r-- | svx/source/tbxctrls/linectrl.cxx | 13 | ||||
-rw-r--r-- | sw/qa/uitest/writer_tests7/apply_line_cap.py | 102 |
3 files changed, 127 insertions, 0 deletions
diff --git a/cui/source/tabpages/tpline.cxx b/cui/source/tabpages/tpline.cxx index 796eda3c51f2..1edf9a56d0bf 100644 --- a/cui/source/tabpages/tpline.cxx +++ b/cui/source/tabpages/tpline.cxx @@ -1312,6 +1312,18 @@ void SvxLineTabPage::ClickInvisibleHdl_Impl() } else { + // set cap style associated to the line style + sal_Int32 nPos = m_xLbLineStyle->get_active(); + if( nPos > 1 && m_pDashList->Count() > static_cast<tools::Long>( nPos - 2 ) ) + { + css::drawing::DashStyle eStyle = + m_pDashList->GetDash( nPos - 2 )->GetDash().GetDashStyle(); + if ( eStyle == drawing::DashStyle_RECT || eStyle == drawing::DashStyle_RECTRELATIVE) + m_xLBCapStyle->set_active(0); + else + m_xLBCapStyle->set_active(1); + } + m_xBoxColor->set_sensitive(true); m_xBoxWidth->set_sensitive(true); diff --git a/svx/source/tbxctrls/linectrl.cxx b/svx/source/tbxctrls/linectrl.cxx index 509b54c1d786..1771e2f74649 100644 --- a/svx/source/tbxctrls/linectrl.cxx +++ b/svx/source/tbxctrls/linectrl.cxx @@ -34,6 +34,7 @@ #include <svx/drawitem.hxx> #include <svx/xlineit0.hxx> +#include <svx/xlncapit.hxx> #include <svx/xlndsit.hxx> #include <svx/xlnstit.hxx> #include <svx/xlnedit.hxx> @@ -615,6 +616,18 @@ IMPL_LINK_NOARG(SvxLineBox, SelectHdl, ValueSet*, void) aLineDashItem.QueryValue ( a ); aArgs[0].Value = a; mxControl->dispatchLineStyleCommand(".uno:LineDash", aArgs); + + // set also cap style using the toolbar line style selection popup + css::drawing::DashStyle eStyle = pEntry->GetDash().GetDashStyle(); + XLineCapItem aLineCapItem( + eStyle == drawing::DashStyle_RECT || eStyle == drawing::DashStyle_RECTRELATIVE + ? css::drawing::LineCap_BUTT + : css::drawing::LineCap_ROUND ); + Sequence< PropertyValue > aArgs2( 1 ); + aArgs2[0].Name = "LineCap"; + aLineCapItem.QueryValue ( a ); + aArgs2[0].Value = a; + mxControl->dispatchLineStyleCommand(".uno:LineCap", aArgs2); } } break; diff --git a/sw/qa/uitest/writer_tests7/apply_line_cap.py b/sw/qa/uitest/writer_tests7/apply_line_cap.py new file mode 100644 index 000000000000..5e7b42ca9a2f --- /dev/null +++ b/sw/qa/uitest/writer_tests7/apply_line_cap.py @@ -0,0 +1,102 @@ +# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +from uitest.framework import UITestCase +from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file +from uitest.uihelper.common import select_pos + +class apply_line_cap(UITestCase): + + def test_apply_line_cap(self): + writer_doc = self.ui_test.load_file(get_url_for_data_file("tdf127166_prstDash_Word97.docx")) + + # check FLAT -> ROUND cap style change by selecting the new 'Rounded' preset line styles + + # select second line shape (dashDot) + writer_doc.getCurrentController().select(writer_doc.getDrawPage()[1]) + + # 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 cap style combo box + xCapStyle = xFormatLineDlg.getChild("LB_CAP_STYLE") + cap_style = get_state_as_dict(xCapStyle)['SelectEntryText'] + + # get line style combo box + xLineStyle = xFormatLineDlg.getChild("LB_LINE_STYLE") + + # select 'Dot (Rounded)', but store the previous value + style = get_state_as_dict(xLineStyle)['SelectEntryText'] + select_pos(xLineStyle, "3") + + xOKBtn = xFormatLineDlg.getChild("ok") + self.ui_test.close_dialog_through_button(xOKBtn) + + self.assertEqual(cap_style, 'Flat') + self.assertEqual(style, 'Long Dash Dot') + + # check round cap setting, opening the line style dialog again + writer_doc.getCurrentController().select(writer_doc.getDrawPage()[1]) + + # 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 cap style combo box + xCapStyle = xFormatLineDlg.getChild("LB_CAP_STYLE") + cap_style = get_state_as_dict(xCapStyle)['SelectEntryText'] + + # get line style combo box + xLineStyle = xFormatLineDlg.getChild("LB_LINE_STYLE") + + # select 'Dot', but store the previous value + style = get_state_as_dict(xLineStyle)['SelectEntryText'] + select_pos(xLineStyle, "2") + + xOKBtn = xFormatLineDlg.getChild("ok") + self.ui_test.close_dialog_through_button(xOKBtn) + + # This was 'Flat' (set only dash style of the line style before) + self.assertEqual(cap_style, 'Round') + self.assertEqual(style, 'Dot (Rounded)') + + # 2. check ROUND -> FLAT cap style change + writer_doc.getCurrentController().select(writer_doc.getDrawPage()[1]) + + # 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 cap style combo box + xCapStyle = xFormatLineDlg.getChild("LB_CAP_STYLE") + cap_style = get_state_as_dict(xCapStyle)['SelectEntryText'] + + # get line style combo box + xLineStyle = xFormatLineDlg.getChild("LB_LINE_STYLE") + + style = get_state_as_dict(xLineStyle)['SelectEntryText'] + + xOKBtn = xFormatLineDlg.getChild("ok") + self.ui_test.close_dialog_through_button(xOKBtn) + + # This was 'Flat' (set only dash style of the line style before) + self.assertEqual(cap_style, 'Flat') + self.assertEqual(style, 'Dot') + + self.ui_test.close_doc() + + +# vim: set shiftwidth=4 softtabstop=4 expandtab: |