Esanders has uploaded a new change for review.
https://gerrit.wikimedia.org/r/189472
Change subject: Only replace selection when we know it has changed
......................................................................
Only replace selection when we know it has changed
Usually when extra 'select' events are emitted we always
re-apply the native selection without checking if it has
actually changed.
TODO: Check this is a performance increase.
Bug: T87419
Change-Id: I53f7d939f1a9aa0261da3dc08f504d3a3fed4e59
---
M src/ce/ve.ce.Surface.js
1 file changed, 16 insertions(+), 16 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor
refs/changes/72/189472/1
diff --git a/src/ce/ve.ce.Surface.js b/src/ce/ve.ce.Surface.js
index 1cce4e1..60fe173 100644
--- a/src/ce/ve.ce.Surface.js
+++ b/src/ce/ve.ce.Surface.js
@@ -3156,27 +3156,27 @@
rangeSelection = this.getRangeSelection( range ),
nativeRange = this.getElementDocument().createRange();
- this.nativeSelection.removeAllRanges();
+ nativeRange.setStart( rangeSelection.start.node,
rangeSelection.start.offset );
if ( rangeSelection.end ) {
- nativeRange.setStart( rangeSelection.start.node,
rangeSelection.start.offset );
nativeRange.setEnd( rangeSelection.end.node,
rangeSelection.end.offset );
- if ( rangeSelection.isBackwards && this.nativeSelection.extend
) {
- endRange = nativeRange.cloneRange();
- endRange.collapse( false );
- this.nativeSelection.addRange( endRange );
- try {
- this.nativeSelection.extend(
nativeRange.startContainer, nativeRange.startOffset );
- } catch ( e ) {
- // Firefox sometimes fails when nodes are
different,
- // see
https://bugzilla.mozilla.org/show_bug.cgi?id=921444
- this.nativeSelection.addRange( nativeRange );
- }
- } else {
+ }
+ if ( rangeSelection.end && rangeSelection.isBackwards &&
this.nativeSelection.extend ) {
+ endRange = nativeRange.cloneRange();
+ endRange.collapse( false );
+ this.nativeSelection.removeAllRanges();
+ this.nativeSelection.addRange( endRange );
+ try {
+ this.nativeSelection.extend(
nativeRange.startContainer, nativeRange.startOffset );
+ } catch ( e ) {
+ // Firefox sometimes fails when nodes are different,
+ // see
https://bugzilla.mozilla.org/show_bug.cgi?id=921444
this.nativeSelection.addRange( nativeRange );
}
} else {
- nativeRange.setStart( rangeSelection.start.node,
rangeSelection.start.offset );
- this.nativeSelection.addRange( nativeRange );
+ if ( !this.nativeSelection.rangeCount || !ve.compare(
nativeRange, this.nativeSelection.getRangeAt( 0 ) ) ) {
+ this.nativeSelection.removeAllRanges();
+ this.nativeSelection.addRange( nativeRange );
+ }
}
// Setting a range doesn't give focus in all browsers so make sure this
happens
// Also set focus after range to prevent scrolling to top
--
To view, visit https://gerrit.wikimedia.org/r/189472
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I53f7d939f1a9aa0261da3dc08f504d3a3fed4e59
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits