jenkins-bot has submitted this change and it was merged.
Change subject: Ensure that selection is not lost inside block slugs after
backspace/delete
......................................................................
Ensure that selection is not lost inside block slugs after backspace/delete
It is no longer possible to cursor into a block slug, therefore this
would cause the selection to be lost after backspace/delete in some
cases (see the added test case). We were allowing slug or content
offset, rather than content offset only.
Change-Id: I43f70c657e1ac537c8eb8039c26d7f07834556a8
---
M src/dm/ve.dm.SurfaceFragment.js
M tests/ce/ve.ce.Surface.test.js
2 files changed, 20 insertions(+), 6 deletions(-)
Approvals:
Trevor Parscal: Looks good to me, approved
jenkins-bot: Verified
diff --git a/src/dm/ve.dm.SurfaceFragment.js b/src/dm/ve.dm.SurfaceFragment.js
index 40e87ad..0a63346 100644
--- a/src/dm/ve.dm.SurfaceFragment.js
+++ b/src/dm/ve.dm.SurfaceFragment.js
@@ -925,16 +925,17 @@
] );
}
}
- rangeAfterRemove = new ve.Range( rangeAfterRemove.start );
}
+
// rangeAfterRemove is now guaranteed to be collapsed so make sure that
it is a content offset
- if ( !this.document.data.isContentOffset( rangeAfterRemove.start ) ) {
- rangeAfterRemove = this.document.getRelativeRange(
- rangeAfterRemove,
+ rangeAfterRemove = new ve.Range(
+ this.document.data.getNearestContentOffset(
+ rangeAfterRemove.start,
// If undefined (e.g. cut), default to backwards
movement
directionAfterDelete || -1
- );
- }
+ )
+ );
+
this.change( [], new ve.dm.LinearSelection( this.getDocument(),
rangeAfterRemove ) );
return this;
diff --git a/tests/ce/ve.ce.Surface.test.js b/tests/ce/ve.ce.Surface.test.js
index 7f0cabe..3d2687a 100644
--- a/tests/ce/ve.ce.Surface.test.js
+++ b/tests/ce/ve.ce.Surface.test.js
@@ -220,6 +220,19 @@
msg: 'Empty list node deleted by backspace from
after'
},
{
+ html:
'<ul><li><p></p><ul><li><p></p></li></ul></li></ul>',
+ range: new ve.Range( 7 ),
+ operations: ['backspace'],
+ expectedData: function ( data ) {
+ data.splice( 2, 2 );
+ },
+ expectedSelection: {
+ type: 'linear',
+ range: new ve.Range( 5 )
+ },
+ msg: 'Selection is not lost inside block slug
after backspace'
+ },
+ {
range: new ve.Range( 0, 63 ),
operations: ['backspace'],
expectedData: function ( data ) {
--
To view, visit https://gerrit.wikimedia.org/r/198656
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I43f70c657e1ac537c8eb8039c26d7f07834556a8
Gerrit-PatchSet: 6
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Bartosz Dziewoński <[email protected]>
Gerrit-Reviewer: Bartosz Dziewoński <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: Divec <[email protected]>
Gerrit-Reviewer: Esanders <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: Trevor Parscal <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits