Catrope has uploaded a new change for review.

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


Change subject: Separate concerns between FocusableNode and ProtectedNode
......................................................................

Separate concerns between FocusableNode and ProtectedNode

* Move select-on-mousedown from ProtectedNode to FocusableNode
* In ProtectedNode, wire phantom mousedown to FocusableNode mousedown
* Remove click handler from ImageNode, now obsolete

Change-Id: I42c126bb99c7fa1ee6742db3e6d29aa77af72f0f
---
M modules/ve/ce/nodes/ve.ce.ImageNode.js
M modules/ve/ce/ve.ce.FocusableNode.js
M modules/ve/ce/ve.ce.ProtectedNode.js
3 files changed, 32 insertions(+), 35 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/07/89207/1

diff --git a/modules/ve/ce/nodes/ve.ce.ImageNode.js 
b/modules/ve/ce/nodes/ve.ce.ImageNode.js
index 0284537..3bd429a 100644
--- a/modules/ve/ce/nodes/ve.ce.ImageNode.js
+++ b/modules/ve/ce/nodes/ve.ce.ImageNode.js
@@ -31,7 +31,6 @@
        this.$image = this.$;
 
        // Events
-       this.$.on( 'click', ve.bind( this.onClick, this ) );
        this.model.connect( this, { 'attributeChange': 'onAttributeChange' } );
 
        // Initialization
@@ -80,26 +79,6 @@
                        this.$image.css( key, to );
                }
        }
-};
-
-/**
- * Handle the mouse click.
- *
- * @method
- * @param {jQuery.Event} e Click event
- */
-ve.ce.ImageNode.prototype.onClick = function ( e ) {
-       var surfaceModel = this.getRoot().getSurface().getModel(),
-               selectionRange = surfaceModel.getSelection(),
-               nodeRange = this.model.getOuterRange();
-
-       surfaceModel.getFragment(
-               e.shiftKey ?
-                       ve.Range.newCoveringRange(
-                               [ selectionRange, nodeRange ], 
selectionRange.from > nodeRange.from
-                       ) :
-                       nodeRange
-       ).select();
 };
 
 /* Registration */
diff --git a/modules/ve/ce/ve.ce.FocusableNode.js 
b/modules/ve/ce/ve.ce.FocusableNode.js
index 96d0716..66bf526 100644
--- a/modules/ve/ce/ve.ce.FocusableNode.js
+++ b/modules/ve/ce/ve.ce.FocusableNode.js
@@ -71,8 +71,10 @@
 
        if ( this.live ) {
                surfaceModel.connect( this, { 'history': 'onFocusableHistory' } 
);
+               this.$focusable.on( 'mousedown.ve-ce-focusableNode', ve.bind( 
this.onFocusableMouseDown, this ) );
        } else {
                surfaceModel.disconnect( this, { 'history': 
'onFocusableHistory' } );
+               this.$focusable.off( '.ve-ce-focusableNode' );
        }
 };
 
@@ -112,6 +114,29 @@
 };
 
 /**
+ * On mouse down, select the node.
+ *
+ * @method
+ * @param {jQuery.Event} e Mouse down event
+ */
+ve.ce.FocusableNode.prototype.onFocusableMouseDown = function ( e ) {
+       var surfaceModel = this.getRoot().getSurface().getModel(),
+               selectionRange = surfaceModel.getSelection(),
+               nodeRange = this.model.getOuterRange();
+
+       surfaceModel.getFragment(
+               e.shiftKey ?
+                       ve.Range.newCoveringRange(
+                               [ selectionRange, nodeRange ], 
selectionRange.from > nodeRange.from
+                       ) :
+                       nodeRange
+       ).select();
+
+       e.preventDefault();
+};
+
+
+/**
  * Check if node is focused.
  *
  * @method
diff --git a/modules/ve/ce/ve.ce.ProtectedNode.js 
b/modules/ve/ce/ve.ce.ProtectedNode.js
index 30313b3..0310483 100644
--- a/modules/ve/ce/ve.ce.ProtectedNode.js
+++ b/modules/ve/ce/ve.ce.ProtectedNode.js
@@ -139,25 +139,18 @@
 };
 
 /**
- * Handle phantom mouse down events.
+ * Prevent mousedown. If FocusableNode is mixed in, relay the mousedown event 
to FocusableNode's
+ * onMouseDown handler.
  *
  * @method
  * @param {jQuery.Event} e Mouse down event
  */
 ve.ce.ProtectedNode.prototype.onPhantomMouseDown = function ( e ) {
-       var surfaceModel = this.getRoot().getSurface().getModel(),
-               selectionRange = surfaceModel.getSelection(),
-               nodeRange = this.model.getOuterRange();
-
-       surfaceModel.getFragment(
-               e.shiftKey ?
-                       ve.Range.newCoveringRange(
-                               [ selectionRange, nodeRange ], 
selectionRange.from > nodeRange.from
-                       ) :
-                       nodeRange
-       ).select();
-
-       e.preventDefault();
+       if ( ve.isMixedIn( this, ve.ce.FocusableNode ) ) {
+               return this.onFocusableMouseDown( e );
+       } else {
+               e.preventDefault();
+       }
 };
 
 /**

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I42c126bb99c7fa1ee6742db3e6d29aa77af72f0f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Catrope <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to