Robmoen has uploaded a new change for review.

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


Change subject: Modify context to overlay $focusable element in focusableNode
......................................................................

Modify context to overlay $focusable element in focusableNode

This is only the first part of having a menu button tool inside or
over focusable nodes rather than having the standard
context meun appear.

Change-Id: I4b25d33f64b4bcb8a3ecfd7e9728f54a2d4886f3
---
M modules/ve/ce/ve.ce.FocusableNode.js
M modules/ve/ce/ve.ce.Surface.js
M modules/ve/ui/dialogs/ve.ui.MediaDialog.js
M modules/ve/ui/styles/ve.ui.Context.css
M modules/ve/ui/ve.ui.Context.js
M modules/ve/ui/widgets/ve.ui.PopupWidget.js
6 files changed, 51 insertions(+), 9 deletions(-)


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

diff --git a/modules/ve/ce/ve.ce.FocusableNode.js 
b/modules/ve/ce/ve.ce.FocusableNode.js
index d3ebe49..c95e99a 100644
--- a/modules/ve/ce/ve.ce.FocusableNode.js
+++ b/modules/ve/ce/ve.ce.FocusableNode.js
@@ -13,9 +13,10 @@
  *
  * @constructor
  */
-ve.ce.FocusableNode = function VeCeFocusableNode() {
+ve.ce.FocusableNode = function VeCeFocusableNode( $focusable ) {
        // Properties
        this.focused = false;
+       this.$focusable = $focusable || this.$;
 };
 
 /* Events */
diff --git a/modules/ve/ce/ve.ce.Surface.js b/modules/ve/ce/ve.ce.Surface.js
index 52ae182..46da97d 100644
--- a/modules/ve/ce/ve.ce.Surface.js
+++ b/modules/ve/ce/ve.ce.Surface.js
@@ -175,8 +175,8 @@
                };
        } else {
                return {
-                       start: sel.getStartDocumentPos(),
-                       end: sel.getEndDocumentPos()
+                       'start': sel.getStartDocumentPos(),
+                       'end': sel.getEndDocumentPos()
                };
        }
 };
diff --git a/modules/ve/ui/dialogs/ve.ui.MediaDialog.js 
b/modules/ve/ui/dialogs/ve.ui.MediaDialog.js
index b3dedd9..8b08286 100644
--- a/modules/ve/ui/dialogs/ve.ui.MediaDialog.js
+++ b/modules/ve/ui/dialogs/ve.ui.MediaDialog.js
@@ -30,7 +30,16 @@
 
 ve.ui.MediaDialog.static.icon = 'picture';
 
-ve.ui.MediaDialog.static.modelClasses = [ ve.dm.MWInlineImageNode ];
+ve.ui.MediaDialog.static.modelClasses = [ ve.dm.ImageNode ];
+
+/* Methods */
+
+/**
+ * Handle frame ready events.
+ *
+ * @method
+ */
+//ve.ui.MediaDialog.prototype.initialize = function () {};
 
 /* Registration */
 
diff --git a/modules/ve/ui/styles/ve.ui.Context.css 
b/modules/ve/ui/styles/ve.ui.Context.css
index e542b32..c664607 100644
--- a/modules/ve/ui/styles/ve.ui.Context.css
+++ b/modules/ve/ui/styles/ve.ui.Context.css
@@ -26,7 +26,6 @@
 
 .ve-ui-context-toolbar .ve-ui-buttonTool,
 .ve-ui-context-toolbar .ve-ui-buttonTool:hover {
-
        border: none;
 }
 
@@ -34,3 +33,18 @@
 .ve-ui-context-toolbar .ve-ui-buttonTool-active {
        background-image: none;
 }
+
+.ve-ui-context-embed  .ve-ui-popupWidget-callout {
+       display: none;
+}
+
+.ve-ui-context-embed .ve-ui-popupWidget-body {
+       border: 0;
+       margin-top: 0;
+       background: none;
+       box-shadow: none;
+}
+
+.ve-ui-context-embed .ve-ui-context-menu {
+       right: 0;
+}
diff --git a/modules/ve/ui/ve.ui.Context.js b/modules/ve/ui/ve.ui.Context.js
index 9175d14..c4c528f 100644
--- a/modules/ve/ui/ve.ui.Context.js
+++ b/modules/ve/ui/ve.ui.Context.js
@@ -250,13 +250,22 @@
  */
 ve.ui.Context.prototype.updateDimensions = function ( transition ) {
        var position, $container,
-               inspector = this.inspectors.getCurrent();
+               inspector = this.inspectors.getCurrent(),
+               focusedNode = this.surface.getView().focusedNode;
 
        // Get cursor position
        position = ve.ce.Surface.getSelectionRect();
-       position = position && position.end;
+
        if ( position ) {
-               $container = inspector ? this.inspectors.$ : this.$menu;
+               if ( this.$.hasClass( 've-ui-context-embed' ) ) {
+                       $container = focusedNode.$focusable;
+                       position = { 'x': $container.offset().left, 'y': 
$container.offset().top } ;
+                       this.popup.align = 'none';
+               } else {
+                       position = position && position.end;
+                       $container = inspector ? this.inspectors.$ : this.$menu;
+                       this.popup.align = 'center';
+               }
                this.$.css( { 'left': position.x, 'top': position.y } );
                this.popup.display(
                        position.x,
@@ -277,7 +286,8 @@
  * @chainable
  */
 ve.ui.Context.prototype.show = function ( transition ) {
-       var inspector = this.inspectors.getCurrent();
+       var inspector = this.inspectors.getCurrent(),
+               focusedNode = this.surface.getView().focusedNode;
 
        if ( !this.showing ) {
                this.showing = true;
@@ -297,6 +307,11 @@
                        }, this ), 200 );
                } else {
                        this.inspectors.$.hide();
+                       if ( focusedNode ) {
+                               this.$.addClass( 've-ui-context-embed' );
+                       } else {
+                               this.$.removeClass( 've-ui-context-embed' );
+                       }
                        this.$menu.show();
                }
 
diff --git a/modules/ve/ui/widgets/ve.ui.PopupWidget.js 
b/modules/ve/ui/widgets/ve.ui.PopupWidget.js
index 2db41a3..45ddaca 100644
--- a/modules/ve/ui/widgets/ve.ui.PopupWidget.js
+++ b/modules/ve/ui/widgets/ve.ui.PopupWidget.js
@@ -128,6 +128,9 @@
                        // Inset callout from right
                        left = -width + padding;
                        break;
+               case 'none':
+                       left = 0;
+                       break;
                default:
                        // Place callout in center
                        left = -width / 2;

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

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

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

Reply via email to