From 3eb5318ed9ae8cf02804fbdc584a5f4b046db0ae Mon Sep 17 00:00:00 2001 From: Samuel Mehrbrodt Date: Tue, 1 Sep 2020 12:51:09 +0200 Subject: [PATCH] tdf#136423 make SwXDrawPage::group work with a single shape No reason this should not work (and the implementation in Draw/Impress/Calc also works this way) Change-Id: Ic5bc7420e9025b45ed848dccf68b112c0c6c2cd5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101842 Tested-by: Samuel Mehrbrodt Reviewed-by: Samuel Mehrbrodt --- sw/PythonTest_sw_python.mk | 1 + sw/qa/python/check_drawpage.py | 44 ++++++++++++++++++++++++++++++ sw/source/core/unocore/unodraw.cxx | 2 +- 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 sw/qa/python/check_drawpage.py diff --git a/sw/PythonTest_sw_python.mk b/sw/PythonTest_sw_python.mk index b1c96a5c26ab..d64a8b516563 100644 --- a/sw/PythonTest_sw_python.mk +++ b/sw/PythonTest_sw_python.mk @@ -16,6 +16,7 @@ $(eval $(call gb_PythonTest_set_defs,sw_python,\ $(eval $(call gb_PythonTest_add_modules,sw_python,$(SRCDIR)/sw/qa/python,\ check_bookmarks \ check_change_color \ + check_drawpage \ check_index \ check_flies \ check_fields \ diff --git a/sw/qa/python/check_drawpage.py b/sw/qa/python/check_drawpage.py new file mode 100644 index 000000000000..ef28490ce224 --- /dev/null +++ b/sw/qa/python/check_drawpage.py @@ -0,0 +1,44 @@ +#! /usr/bin/env python +# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +# +# This file is part of the LibreOffice project. +# +# 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/. +# +import unittest +from org.libreoffice.unotest import UnoInProcess + +from com.sun.star.text.TextContentAnchorType import AT_PARAGRAPH + +class CheckDrawPage(unittest.TestCase): + + @classmethod + def setUpClass(cls): + cls._uno = UnoInProcess() + cls._uno.setUp() + + @classmethod + def tearDownClass(cls): + cls._uno.tearDown() + + """ + Test that grouping shapes also works with a single shape. + """ + def test_group_single_shape(self): + xDoc = self.__class__._uno.openEmptyWriterDoc() + page = xDoc.DrawPage + collection = self.__class__._uno.xContext.ServiceManager.createInstance( 'com.sun.star.drawing.ShapeCollection' ) + shape = xDoc.createInstance('com.sun.star.drawing.TextShape') + shape.AnchorType = AT_PARAGRAPH + page.add(shape) + collection.add(shape) + shapegroup = page.group(collection) + + self.assertEqual(shapegroup.Count, 1) + + xDoc.close(True) + +if __name__ == '__main__': + unittest.main() diff --git a/sw/source/core/unocore/unodraw.cxx b/sw/source/core/unocore/unodraw.cxx index 7c7f84f4399b..8e280ea7179a 100644 --- a/sw/source/core/unocore/unodraw.cxx +++ b/sw/source/core/unocore/unodraw.cxx @@ -753,7 +753,7 @@ uno::Reference< drawing::XShapeGroup > SwXDrawPage::group(const uno::Reference< { // mark and return MarkList const SdrMarkList& rMarkList = pPage->PreGroup(xShapes); - if ( rMarkList.GetMarkCount() > 1 ) + if ( rMarkList.GetMarkCount() > 0 ) { for (size_t i = 0; i < rMarkList.GetMarkCount(); ++i) {