This is an automated email from the ASF dual-hosted git repository.
pjfanning pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/poi.git
The following commit(s) were added to refs/heads/trunk by this push:
new 1076994774 Fix: XSLFTableCell.setBorderColor Overwrites (#1052)
1076994774 is described below
commit 10769947741d94646c22b3abd04e27e2ad74547b
Author: Micah <[email protected]>
AuthorDate: Wed Jun 3 09:58:27 2026 -0400
Fix: XSLFTableCell.setBorderColor Overwrites (#1052)
fix: XSLFTableCell.setBorderColor will overwrite pre-existing solidFill
elements instead of just appending
---
.../org/apache/poi/xslf/usermodel/XSLFTableCell.java | 5 ++++-
.../org/apache/poi/xslf/usermodel/TestXSLFTable.java | 19 +++++++++++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java
b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java
index c43483912a..c8a99c6307 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java
@@ -304,7 +304,10 @@ public class XSLFTableCell extends XSLFTextShape
implements TableCell<XSLFShape,
throw new IllegalArgumentException("Colors need to be specified.");
}
- CTLineProperties ln = setBorderDefaults(edge);
+ final CTLineProperties ln = setBorderDefaults(edge);
+ if (ln.isSetSolidFill()) {
+ ln.unsetSolidFill();
+ }
CTSolidColorFillProperties fill = ln.addNewSolidFill();
XSLFColor c = new XSLFColor(fill, getSheet().getTheme(),
fill.getSchemeClr(), getSheet());
c.setColor(color);
diff --git
a/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFTable.java
b/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFTable.java
index 9529309a2a..c76849e46f 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFTable.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFTable.java
@@ -280,6 +280,25 @@ class TestXSLFTable {
ppt2.close();
}
+ @Test
+ void testBorderColorOverwrite() throws IOException {
+ XMLSlideShow ppt = new XMLSlideShow();
+ XSLFSlide slide = ppt.createSlide();
+ XSLFTable tbl = slide.createTable();
+ XSLFTableRow row = tbl.addRow();
+ XSLFTableCell cell = row.addCell();
+
+ for (BorderEdge edge : BorderEdge.values()) {
+ cell.setBorderColor(edge, Color.yellow);
+ assertEquals(Color.yellow, cell.getBorderColor(edge));
+ // additional calls to setBorderColor do not add multiple
solidFill elements
+ cell.setBorderColor(edge, Color.red);
+ assertEquals(Color.red, cell.getBorderColor(edge));
+ }
+
+ ppt.close();
+ }
+
@Test
void removeTable() throws IOException {
XMLSlideShow ss =
XSLFTestDataSamples.openSampleDocument("shapes.pptx");
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]