From 0bd1df2d72bd62327dbbc8b39cc23e06c444f73a Mon Sep 17 00:00:00 2001 From: Justin Luth Date: Sat, 15 Mar 2025 16:43:03 -0400 Subject: [PATCH] tdf#165521 svx layout: clear Outliner FixedCellHeight after use This specifically avoids a PPTX custom shape's editEngine flag from bleeding into the remainder of the document and affecting another shape's sizing calculations. This bleeding was noticably affecting PPTX table sizes, triggering the investigation that lead to this patch. FALSE REGRESSION NOTE: It appears that perhaps PPT/X tables SHOULD ALWAYS be sized according to SDRATTR_TEXT_USEFIXEDCELLHEIGHT = TRUE. In other words, tables currently match MS Powerpoint's table size only when they accidentally have this setting bleed through. With this patch, we are effectively always setting it to FALSE, and thus tables will never be accidentally correct anymore. ... and the same possibly is true for all kinds of other shapes. The problem with having a correct table size is that the text inside the table needs to also be in sync with this sizing calculation. Otherwise it will either be too small (commonly), or it could spill out of the table (in cases where the font is designed with a large leading). This patch's effect on tables is to allow the table to only be defined by its own content. Now when other actions cause a table recalculation (like selecting text, drag and drop, editing) the table size won't fluctuate (since in this re-draw context there wasn't any FixedCellHeight bleeding into the calculation). make CppunitTest_svx_unit \ CPPUNIT_TEST_NAME=testTdf165521_fixedCellHeight Change-Id: I5239c78cf8f1e8fffd65b6aa285a840428e92e5c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183172 Reviewed-by: Justin Luth Tested-by: Jenkins --- .../unit/data/tdf165521_fixedCellHeight.pptx | Bin 0 -> 19442 bytes svx/qa/unit/table.cxx | 53 ++++++++++++++++++ svx/source/svdraw/svdoashp.cxx | 2 + 3 files changed, 55 insertions(+) create mode 100644 svx/qa/unit/data/tdf165521_fixedCellHeight.pptx diff --git a/svx/qa/unit/data/tdf165521_fixedCellHeight.pptx b/svx/qa/unit/data/tdf165521_fixedCellHeight.pptx new file mode 100644 index 0000000000000000000000000000000000000000..82192eb1c2effaebb0bfd83a46a085f8accf9508 GIT binary patch literal 19442 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 h;XU2Kddy722e7O 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 YJTl^-?+KUy0I2VO9Pek}g#Nhte>peQ!2kdN literal 0 HcmV?d00001 diff --git a/svx/qa/unit/table.cxx b/svx/qa/unit/table.cxx index 8a1349f3e02c..bb43a984daf7 100644 --- a/svx/qa/unit/table.cxx +++ b/svx/qa/unit/table.cxx @@ -102,6 +102,59 @@ CPPUNIT_TEST_FIXTURE(Test, testTableShadowBlur) u"80"); } +CPPUNIT_TEST_FIXTURE(Test, testTdf165521_fixedCellHeight) +{ + // Given a document containing a table whose size/text should match the textbox: + // (In this Liberation Sans unit test, the text is too small and doesn't fill the table, + // while in the bug report's Marianne font example, the text is too large, spilling out of it.) + + loadFromFile(u"tdf165521_fixedCellHeight.pptx"); + + // When rendering the table: + uno::Reference xDrawPagesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0), + uno::UNO_QUERY); + drawinglayer::primitive2d::Primitive2DContainer xPrimitiveSequence + = renderPageToPrimitives(xDrawPage); + + // TODO: Then make sure the text in both table and textbox are the same line height + svx::ExtendedPrimitive2dXmlDump aDumper; + xmlDocUniquePtr pDocument = aDumper.dumpAndParse(xPrimitiveSequence); + // const char sTextboxPath6[] = "/primitive2D/objectinfo[1]/unhandled/group/sdrblocktext/" + // "texthierarchyblock/texthierarchyparagraph/texthierarchyline[6]/" + // "textsimpleportion"; + const char sTextboxPath7[] = "/primitive2D/objectinfo[1]/unhandled/group/sdrblocktext/" + "texthierarchyblock/texthierarchyparagraph/texthierarchyline[7]/" + "textsimpleportion"; + CPPUNIT_ASSERT( + getXPath(pDocument, sTextboxPath7, "text") + .startsWith("Autofit Custom Shape forces Fixed Cell Height even in the table.")); + // const sal_Int32 nTextBoxFontLineHeight = getXPath(pDocument, sTextboxPath7, "y").toInt32() + // - getXPath(pDocument, sTextboxPath6, "y").toInt32(); + + const char sTablePath6[] = "/primitive2D/objectinfo[2]/sdrCell[2]/group/sdrblocktext/" + "texthierarchyblock/texthierarchyparagraph/texthierarchyline[6]/" + "textsimpleportion"; + const char sTablePath7[] = "/primitive2D/objectinfo[2]/sdrCell[2]/group/sdrblocktext/" + "texthierarchyblock/texthierarchyparagraph/texthierarchyline[7]/" + "textsimpleportion"; + CPPUNIT_ASSERT(getXPath(pDocument, sTablePath7, "text").startsWith("Qualcomm Snapdragon")); + const sal_Int32 nTableFontLineHeight = getXPath(pDocument, sTablePath7, "y").toInt32() + - getXPath(pDocument, sTablePath6, "y").toInt32(); + // Expected: 593. + // Actual (without the acompanying patch) 553 + // CPPUNIT_ASSERT_EQUAL(nTextBoxFontLineHeight, nTableFontLineHeight); + + // All of the text must fit inside the table, + // and the table must be approximately the same size as the lines of text. + sal_Int32 nTableHeight + = getXPath(pDocument, + "/primitive2D/objectinfo[2]/sdrCell[2]/group/polypolygoncolor/polypolygon", + "height") + .toInt32(); + CPPUNIT_ASSERT_DOUBLES_EQUAL(7 * nTableFontLineHeight, nTableHeight, 1); +} + CPPUNIT_TEST_FIXTURE(Test, testSvxTableControllerSetAttrToSelectedShape) { // Given a document with a table shape, editing cell text: diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx index f5a13207d840..7b0e91323a0b 100644 --- a/svx/source/svdraw/svdoashp.cxx +++ b/svx/source/svdraw/svdoashp.cxx @@ -2374,7 +2374,9 @@ bool SdrObjCustomShape::AdjustTextFrameWidthAndHeight(tools::Rectangle& rR, bool nHgt = rR.getOpenHeight(); } } + // cleanup outliner rOutliner.Clear(); + rOutliner.SetFixedCellHeight(false); } } else