Skip to content

[FIX] selection: prevent partial move of table rows with headers #6760

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: 18.0
Choose a base branch
from

Conversation

dhrp-odoo
Copy link
Contributor

Description:

Previously, it was possible to move only part of a table that includes header rows.
This could result in broken table structure or orphaned headers.

This PR prevents such partial row moves by disallowing the operation when the selected rows include header rows but not the full table range.

Task: 4862731

review checklist

  • feature is organized in plugin, or UI components
  • support of duplicate sheet (deep copy)
  • in model/core: ranges are Range object, and can be adapted (adaptRanges)
  • in model/UI: ranges are strings (to show the user)
  • undo-able commands (uses this.history.update)
  • multiuser-able commands (has inverse commands and transformations where needed)
  • new/updated/removed commands are documented
  • exportable in excel
  • translations (_t("qmsdf %s", abc))
  • unit tested
  • clean commented code
  • track breaking changes
  • doc is rebuild (npm run doc)
  • status is correct in Odoo

@robodoo
Copy link
Collaborator

robodoo commented Jul 4, 2025

Pull request status dashboard

Copy link
Contributor

@hokolomopo hokolomopo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👋

Please update the spec of the task in Odoo, without reading all the chatter it isn't clear that you're not doing point B 🙂

Comment on lines 632 to 636
const headerSelected = selectedRows.some(
(row) => row >= headerRowStart && row < headerRowEnd
);

if (!headerSelected) {
return false;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably not needed ? the loop below is enough no ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I kept the headerSelected check because we want to allow moving rows when the header is not selected.
The loop below only checks for completeness but doesn't distinguish whether the header is selected.
So this check is necessary to enforce: "Header selected but partial rows - not allowed."

Previously, it was possible to move only part of a table that includes
header rows.
This could result in broken table structure or orphaned headers.

This commit prevents such partial row moves by disallowing the operation
when the selected rows include header rows but not the full table range.

Task: 4862731
@dhrp-odoo dhrp-odoo force-pushed the 18.0-fix-table-move-columns-rows-dhrp branch from b0e7f83 to faa8eba Compare July 15, 2025 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants