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]

Reply via email to