Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/225101

Change subject: Always prevent default on commands which trigger native CE 
behaviour
......................................................................

Always prevent default on commands which trigger native CE behaviour

Bug: T106059
Change-Id: I12996ccf755761f461ae6c5fa21fb5afa30f49f2
---
M src/ce/ve.ce.Surface.js
1 file changed, 25 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/01/225101/1

diff --git a/src/ce/ve.ce.Surface.js b/src/ce/ve.ce.Surface.js
index cb76fbd..b58e43c 100644
--- a/src/ce/ve.ce.Surface.js
+++ b/src/ce/ve.ce.Surface.js
@@ -1130,7 +1130,7 @@
  * @fires selectionStart
  */
 ve.ce.Surface.prototype.onDocumentKeyDown = function ( e ) {
-       var trigger, focusedNode,
+       var trigger, focusedNode, executed,
                selection = this.getModel().getSelection(),
                updateFromModel = false;
 
@@ -1210,10 +1210,13 @@
                        break;
                default:
                        trigger = new ve.ui.Trigger( e );
-                       if ( trigger.isComplete() && this.surface.execute( 
trigger ) ) {
-                               e.preventDefault();
-                               e.stopPropagation();
-                               updateFromModel = true;
+                       if ( trigger.isComplete() ) {
+                               executed = this.surface.execute( trigger );
+                               if ( executed || this.isBlockedTrigger( trigger 
) ) {
+                                       e.preventDefault();
+                                       e.stopPropagation();
+                                       updateFromModel = true;
+                               }
                        }
                        break;
        }
@@ -1231,6 +1234,23 @@
 };
 
 /**
+ * Check if a trigger is blocked from event performing its default behaviour
+ *
+ * @method
+ * @param {ve.ui.Trigger} trigger Trigger to check
+ * @return {boolean} Trigger should preventDefault
+ */
+ve.ce.Surface.prototype.isBlockedTrigger = function ( trigger ) {
+       var platformKey = ve.getSystemPlatform() === 'mac' ? 'mac' : 'pc',
+               blocked = {
+                       mac: [ 'cmd+b', 'cmd+i', 'cmd+u', 'cmd+z', 'cmd+y', 
'cmd+shift+z' ],
+                       pc: [ 'ctrl+b', 'ctrl+i', 'ctrl+u', 'ctrl+z', 'ctrl+y', 
'ctrl+shift+z' ]
+               };
+
+       return blocked[platformKey].indexOf( trigger.toString() ) !== -1;
+};
+
+/**
  * Handle document key press events.
  *
  * @method

-- 
To view, visit https://gerrit.wikimedia.org/r/225101
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I12996ccf755761f461ae6c5fa21fb5afa30f49f2
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

Reply via email to