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 <Samuel.Mehrbrodt@cib.de>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
This commit is contained in:
Samuel Mehrbrodt 2020-09-01 12:51:09 +02:00
parent f2b1285a4e
commit 3eb5318ed9
3 changed files with 46 additions and 1 deletions

View file

@ -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 \

View file

@ -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()

View file

@ -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)
{