jenkins-bot has submitted this change and it was merged.
Change subject: Fix edge case in expandLinearSelection when selection covers
node
......................................................................
Fix edge case in expandLinearSelection when selection covers node
Bug: T86762
Change-Id: Ifdd18b6db5c74f1d3ce00f1f1a829e45eb61ced6
---
M src/dm/ve.dm.SurfaceFragment.js
M tests/dm/ve.dm.SurfaceFragment.test.js
2 files changed, 29 insertions(+), 5 deletions(-)
Approvals:
Catrope: 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 9e862c4..7c6d0d6 100644
--- a/src/dm/ve.dm.SurfaceFragment.js
+++ b/src/dm/ve.dm.SurfaceFragment.js
@@ -375,8 +375,13 @@
break;
case 'closest':
// Grow range to cover closest common ancestor node of
given type
- node = this.document.selectNodes( oldRange, 'siblings'
)[0].node;
- parent = node.getParent();
+ nodes = this.document.selectNodes( oldRange, 'siblings'
);
+ // If the range covered the entire node check that node
+ if ( nodes[0].nodeRange.equalsSelection( oldRange ) &&
nodes[0].node instanceof type ) {
+ newRange = nodes[0].nodeOuterRange;
+ break;
+ }
+ parent = nodes[0].node.getParent();
while ( parent && !( parent instanceof type ) ) {
node = parent;
parent = parent.getParent();
diff --git a/tests/dm/ve.dm.SurfaceFragment.test.js
b/tests/dm/ve.dm.SurfaceFragment.test.js
index e233337..3adcd6d 100644
--- a/tests/dm/ve.dm.SurfaceFragment.test.js
+++ b/tests/dm/ve.dm.SurfaceFragment.test.js
@@ -96,12 +96,30 @@
} );
QUnit.test( 'expandLinearSelection (closest)', function ( assert ) {
- var i, fragment,
+ var i, fragment, surface,
doc = ve.dm.example.createExampleDocument(),
- surface = new ve.dm.Surface( doc ),
cases = [
{
- msg: 'closest with invalid type results in null
fragment',
+ msg: 've.dm.BranchNode selects surrounding
paragraph',
+ range: new ve.Range( 1 ),
+ type: ve.dm.BranchNode,
+ expected: new ve.dm.LinearSelection( doc, new
ve.Range( 0, 5 ) )
+ },
+ {
+ msg: 've.dm.BranchNode selects surrounding
paragraph in empty paragraph',
+ doc: 'alienWithEmptyData',
+ range: new ve.Range( 1 ),
+ type: ve.dm.BranchNode,
+ expected: new ve.dm.LinearSelection( doc, new
ve.Range( 0, 2 ) )
+ },
+ {
+ msg: 've.dm.BranchNode selects surrounding
paragraph when entire paragrpah selected',
+ range: new ve.Range( 1, 4 ),
+ type: ve.dm.BranchNode,
+ expected: new ve.dm.LinearSelection( doc, new
ve.Range( 0, 5 ) )
+ },
+ {
+ msg: 'invalid type results in null fragment',
range: new ve.Range( 20, 21 ),
type: function () {},
expected: new ve.dm.NullSelection( doc )
@@ -110,6 +128,7 @@
QUnit.expect( cases.length );
for ( i = 0; i < cases.length; i++ ) {
+ surface = new ve.dm.Surface(
ve.dm.example.createExampleDocument( cases[i].doc ) );
fragment = surface.getLinearFragment( cases[i].range
).expandLinearSelection( 'closest', cases[i].type );
assert.equalHash( fragment.getSelection(), cases[i].expected,
cases[i].msg );
}
--
To view, visit https://gerrit.wikimedia.org/r/197954
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ifdd18b6db5c74f1d3ce00f1f1a829e45eb61ced6
Gerrit-PatchSet: 2
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: Esanders <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits