[Libreoffice-commits] core.git: cui/source svx/source sw/qa

László Németh (via logerrit) logerrit at kemper.freedesktop.org
Wed May 5 11:49:26 UTC 2021


 cui/source/tabpages/tpline.cxx               |   12 +++
 svx/source/tbxctrls/linectrl.cxx             |   13 +++
 sw/qa/uitest/writer_tests7/apply_line_cap.py |  102 +++++++++++++++++++++++++++
 3 files changed, 127 insertions(+)

New commits:
commit 134fb0fdecb898b1568f57e8c9dc8c3528b0d1e0
Author:     László Németh <nemeth at numbertext.org>
AuthorDate: Wed Apr 21 22:45:48 2021 +0200
Commit:     László Németh <nemeth at numbertext.org>
CommitDate: Wed May 5 13:48:48 2021 +0200

    tdf#141935 svx cui: apply line cap setting of line styles
    
    Only line dash pattern of the selected line style
    was applied on the selected line or shape using the
    1) Line Style popup menu of Drawing toolbar and
    sidebar pane Properties and 2) Style popup menu
    of Line pane of Line setting dialog window.
    
    Now both line dash and line cap settings are applied,
    supporting the usage of the new "rounded" preset
    styles and the old not "rounded" versions.
    
    Follow-up to commit b9b2c6a98fec798fc0ec76ec3cd407724f19dcac
    "tdf#141933 add preset dash styles with round cap".
    
    Change-Id: Ib3f64afcdcb50545166d40476a03a4b45f7d0b8a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114461
    Tested-by: László Németh <nemeth at numbertext.org>
    Reviewed-by: László Németh <nemeth at numbertext.org>

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:


More information about the Libreoffice-commits mailing list