pjfanning opened a new pull request, #1342: URL: https://github.com/apache/poi/pull/1342
https://bz.apache.org/bugzilla/show_bug.cgi?id=60072 HSSF counterpart of #1341. `HSSFSheet.shiftRows` moved cells, merged regions, row breaks, hyperlinks and comments, but the client anchors of the other shapes in the sheet's drawing (pictures, text boxes, charts, ...) stayed put. `shiftColumns` moved nothing but cells and formulas. This adds `HSSFRowShifter.shiftDrawingAnchors(startRow, endRow, n)` and `HSSFColumnShifter.shiftDrawingAnchors(startColumn, endColumn, n)` and calls them from `shiftRows`/`shiftColumns`, with the shared logic in `HSSFRowColShifter`. Semantics match the XSSF change: - A top-level shape is moved when its `HSSFClientAnchor`'s top-left row (column) is within `[start, end]`. Both corners are shifted so the shape keeps its size — Excel's "move but don't size with cells". Shapes whose top-left is outside the range are untouched. - Results are clipped to the sheet bounds (`HSSFClientAnchor.MAX_ROW` / `MAX_COL`). - Comments are skipped: `shiftRows` already moves them with their cells (`moveCommentsForRowShift`). Shapes inside groups use `HSSFChildAnchor`s and move with their group. - Uses `getDrawingPatriarch()` rather than `createDrawingPatriarch()`, so a sheet with no drawing doesn't get one. Independent of #1341 — the two PRs don't touch the same files and can go in either order. Tests: `TestHSSFSheetShiftRows.bug60072ShiftRowsMovesDrawingAnchors` and `TestHSSFSheetShiftColumns.bug60072ShiftColumnsMovesDrawingAnchors` — a simple shape, a text box, a picture and (for rows) a comment; shift down (insert), shift a sub-range up, write out and read back. 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
