Esanders has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/334368 )
Change subject: Handle home/end/pageup/pagedown keys when on focusable nodes
......................................................................
Handle home/end/pageup/pagedown keys when on focusable nodes
Bug: T156376
Change-Id: Ib34f32a7aa64c4a682725e94c5114b48b23a4ec0
---
M src/ce/keydownhandlers/ve.ce.LinearArrowKeyDownHandler.js
M src/ce/keydownhandlers/ve.ce.TableArrowKeyDownHandler.js
2 files changed, 18 insertions(+), 12 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor
refs/changes/68/334368/1
diff --git a/src/ce/keydownhandlers/ve.ce.LinearArrowKeyDownHandler.js
b/src/ce/keydownhandlers/ve.ce.LinearArrowKeyDownHandler.js
index caf9626..6c9a1b3 100644
--- a/src/ce/keydownhandlers/ve.ce.LinearArrowKeyDownHandler.js
+++ b/src/ce/keydownhandlers/ve.ce.LinearArrowKeyDownHandler.js
@@ -25,7 +25,10 @@
ve.ce.LinearArrowKeyDownHandler.static.name = 'linearArrow';
-ve.ce.LinearArrowKeyDownHandler.static.keys = [ OO.ui.Keys.UP,
OO.ui.Keys.DOWN, OO.ui.Keys.LEFT, OO.ui.Keys.RIGHT ];
+ve.ce.LinearArrowKeyDownHandler.static.keys = [
+ OO.ui.Keys.UP, OO.ui.Keys.DOWN, OO.ui.Keys.LEFT, OO.ui.Keys.RIGHT,
+ OO.ui.Keys.HOME, OO.ui.Keys.END, OO.ui.Keys.PAGEUP, OO.ui.Keys.PAGEDOWN
+];
ve.ce.LinearArrowKeyDownHandler.static.supportedSelections = [ 'linear' ];
@@ -35,8 +38,12 @@
* @inheritdoc
*/
ve.ce.LinearArrowKeyDownHandler.static.execute = function ( surface, e ) {
- var nativeRange, collapseNode, collapseOffset, direction,
directionality, upOrDown,
+ var nativeRange, collapseNode, collapseOffset, direction,
directionality,
startFocusNode, startFocusOffset,
+ isBlockMove = e.keyCode === OO.ui.Keys.UP || e.keyCode ===
OO.ui.Keys.DOWN ||
+ e.keyCode === OO.ui.Keys.PAGEUP || e.keyCode ===
OO.ui.Keys.PAGEDOWN ||
+ e.keyCode === OO.ui.Keys.HOME || e.keyCode ===
OO.ui.Keys.END,
+ keyBlockDirection = e.keyCode === OO.ui.Keys.DOWN || e.keyCode
=== OO.ui.Keys.PAGEDOWN || e.keyCode === OO.ui.Keys.END ? 1 : -1,
range = surface.model.getSelection().getRange();
// TODO: onDocumentKeyDown did this already
@@ -44,12 +51,11 @@
// TODO: onDocumentKeyDown did this already
surface.surfaceObserver.pollOnce();
- upOrDown = e.keyCode === OO.ui.Keys.UP || e.keyCode === OO.ui.Keys.DOWN;
if ( surface.focusedBlockSlug ) {
// Block level selection, so directionality is just css
directionality
- if ( upOrDown ) {
- direction = e.keyCode === OO.ui.Keys.DOWN ? 1 : -1;
+ if ( isBlockMove ) {
+ direction = keyBlockDirection;
} else {
directionality = $( surface.focusedBlockSlug ).css(
'direction' );
// eslint-disable-next-line no-bitwise
@@ -74,8 +80,8 @@
}
if ( surface.focusedNode ) {
- if ( upOrDown ) {
- direction = e.keyCode === OO.ui.Keys.DOWN ? 1 : -1;
+ if ( isBlockMove ) {
+ direction = keyBlockDirection;
} else {
directionality = surface.getFocusedNodeDirectionality();
// eslint-disable-next-line no-bitwise
@@ -118,7 +124,7 @@
// Move to start/end of node in the model in DM (and
DOM)
range = new ve.Range( direction === 1 ? range.end :
range.start );
surface.model.setLinearSelection( range );
- if ( !upOrDown ) {
+ if ( !isBlockMove ) {
// un-shifted left/right: we've already moved
so preventDefault
e.preventDefault();
return true;
@@ -133,7 +139,7 @@
// is backwards, then use "collapse to anchor - observe -
expand".
collapseNode = surface.nativeSelection.anchorNode;
collapseOffset = surface.nativeSelection.anchorOffset;
- } else if ( e.shiftKey && !range.isCollapsed() && upOrDown ) {
+ } else if ( e.shiftKey && !range.isCollapsed() && isBlockMove ) {
// If selection is expanded and cursoring is up/down, use
// "collapse to focus - observe - expand" to work round quirks.
collapseNode = surface.nativeSelection.focusNode;
@@ -166,10 +172,10 @@
if ( viewNode.isFocusable() ) {
// We've landed in a focusable node; fixup the range
- if ( upOrDown ) {
+ if ( isBlockMove ) {
// The intended direction is clear, even if the
cursor did not move
// or did something completely preposterous
- afterDirection = e.keyCode === OO.ui.Keys.DOWN
? 1 : -1;
+ afterDirection = keyBlockDirection;
} else {
// Observe which way the cursor moved
afterDirection = ve.compareDocumentOrder(
diff --git a/src/ce/keydownhandlers/ve.ce.TableArrowKeyDownHandler.js
b/src/ce/keydownhandlers/ve.ce.TableArrowKeyDownHandler.js
index f47746a..84cbcd2 100644
--- a/src/ce/keydownhandlers/ve.ce.TableArrowKeyDownHandler.js
+++ b/src/ce/keydownhandlers/ve.ce.TableArrowKeyDownHandler.js
@@ -27,7 +27,7 @@
ve.ce.TableArrowKeyDownHandler.static.keys = [
OO.ui.Keys.UP, OO.ui.Keys.DOWN, OO.ui.Keys.LEFT, OO.ui.Keys.RIGHT,
- OO.ui.Keys.END, OO.ui.Keys.HOME, OO.ui.Keys.PAGEUP, OO.ui.Keys.PAGEDOWN,
+ OO.ui.Keys.HOME, OO.ui.Keys.END, OO.ui.Keys.PAGEUP, OO.ui.Keys.PAGEDOWN,
OO.ui.Keys.TAB
];
--
To view, visit https://gerrit.wikimedia.org/r/334368
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib34f32a7aa64c4a682725e94c5114b48b23a4ec0
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