Frontmatter
| id | 8971 |
| title | fix: Enable horizontal scrolling by forcing Row VDOM updates on column mount change (#8964) |
| state | Closed |
| labels | bugai |
| assignees | tobiu |
| createdAt | Feb 3, 2026, 10:00 PM |
| updatedAt | Feb 3, 2026, 10:07 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8971 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8964 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 3, 2026, 10:07 PM |
fix: Enable horizontal scrolling by forcing Row VDOM updates on column mount change (#8964)
tobiu assigned to @tobiu on Feb 3, 2026, 10:01 PM

tobiu
Feb 3, 2026, 10:07 PM
Input from Gemini 3 Pro:
✦ I have updated
GridBody.mjsto force a view update whenmountedColumnschanges. This ensures that even if the row records are identical, the VDOM is regenerated to reflect the new column visibility.Horizontal scrolling should now work as expected.
tobiu closed this issue on Feb 3, 2026, 10:07 PM
tobiu added parent issue #8964 on Feb 3, 2026, 10:12 PM
Problem: Horizontal scrolling updates
mountedColumnsinGridBody. However,createViewDataiterates over rows and callsrow.set({ record, rowIndex }). Since vertical scrolling hasn't occurred,recordandrowIndexare identical to their current values. The Neo.mjs config system detects no change and aborts the setter, preventingafterSetRecord(and thuscreateVdom) from firing. As a result, the Row VDOM is not updated to reflect the new set of visible columns.Solution: Utilize the
forceparameter increateViewData(introduced in #8970). UpdateGridBody.afterSetMountedColumnsto callthis.createViewData(false, true). This will bypass the config equality check and explicitly triggeritem.createVdom().Tasks:
src/grid/Body.mjs: UpdateafterSetMountedColumnsto passtruefor the force parameter.