Esanders has uploaded a new change for review. https://gerrit.wikimedia.org/r/205012
Change subject: Fix placement of linear selection inside a table ...................................................................... Fix placement of linear selection inside a table As stated in the TODO comment, we can't just assume cellRange.end-1 is a sensible content offset, so find the last actual content offset within the cell. If one isn't found, don't set a selection. Bug: T96446 Change-Id: I09a5db549520f2411f3d6758f172c16984ea4f7a --- M demos/ve/pages/tables.html M src/ce/nodes/ve.ce.TableNode.js 2 files changed, 23 insertions(+), 14 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor refs/changes/12/205012/1 diff --git a/demos/ve/pages/tables.html b/demos/ve/pages/tables.html index a047909..cb79930 100644 --- a/demos/ve/pages/tables.html +++ b/demos/ve/pages/tables.html @@ -47,26 +47,26 @@ <table> <tr> - <td>cell 1 row 1</td> - <td>cell 2 row 1</td> + <td>col 1 row 1</td> + <td>col 2 row 1</td> </tr> <tr> - <td>cell 1 row 2</td> + <td>col 1 row 2</td> <td><table> <tr> - <td>table 2 cell 1 row 1</td> - <td>table 2 cell 2 row 1</td> + <td>table 2 col 1 row 1</td> + <td>table 2 col 2 row 1</td> </tr> <tr> - <td>table 2 cell 1 row 2</td> + <td>table 2 col 1 row 2</td> <td><table> <tr> - <td>table 3 cell 1 row 1</td> - <td>table 3 cell 2 row 1</td> + <td>table 3 col 1 row 1</td> + <td>table 3 col 2 row 1</td> </tr> <tr> - <td>table 3 cell 1 row 2</td> - <td>table 3 cell 2 row 2</td> + <td>table 3 col 1 row 2</td> + <td>table 3 col 2 row 2</td> </tr> </table> </td> @@ -74,6 +74,10 @@ </table> </td> </tr> + <tr> + <td><ul><li>List in</li><li>col 1 row 3</li></td> + <td><div rel="ve:Alien">col 2 row 3 contains block alien</div></td> + </tr> </table> <h2>Captioned table</h2> diff --git a/src/ce/nodes/ve.ce.TableNode.js b/src/ce/nodes/ve.ce.TableNode.js index c64374a..7332b5b 100644 --- a/src/ce/nodes/ve.ce.TableNode.js +++ b/src/ce/nodes/ve.ce.TableNode.js @@ -241,8 +241,10 @@ * @param {boolean} noSelect Don't change the selection */ ve.ce.TableNode.prototype.setEditing = function ( isEditing, noSelect ) { + var cell, offset, cellRange, + surfaceModel = this.surface.getModel(), + selection = surfaceModel.getSelection(); if ( isEditing ) { - var cell, selection = this.surface.getModel().getSelection(); if ( !selection.isSingleCell() ) { selection = selection.collapseToFrom(); this.surface.getModel().setSelection( selection ); @@ -251,13 +253,16 @@ cell = this.getCellNodesFromSelection( selection )[0]; cell.setEditing( true ); if ( !noSelect ) { - // TODO: Find content offset within cell - this.surface.getModel().setLinearSelection( new ve.Range( cell.getModel().getRange().end - 1 ) ); + cellRange = cell.getModel().getRange(); + offset = surfaceModel.getDocument().data.getNearestContentOffset( cellRange.end, -1 ); + if ( offset > cellRange.start ) { + surfaceModel.setLinearSelection( new ve.Range( offset ) ); + } } } else if ( this.editingFragment ) { this.getCellNodesFromSelection( this.editingFragment.getSelection() )[0].setEditing( false ); if ( !noSelect ) { - this.surface.getModel().setSelection( this.editingFragment.getSelection() ); + surfaceModel.setSelection( this.editingFragment.getSelection() ); } this.editingFragment = null; } -- To view, visit https://gerrit.wikimedia.org/r/205012 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I09a5db549520f2411f3d6758f172c16984ea4f7a Gerrit-PatchSet: 1 Gerrit-Project: VisualEditor/VisualEditor Gerrit-Branch: master Gerrit-Owner: Esanders <esand...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits