Esanders has uploaded a new change for review.
https://gerrit.wikimedia.org/r/123485
Change subject: Set content directionality on the model
......................................................................
Set content directionality on the model
Currently we set it on the view then poll it from there using .css
which is evil. We can set this information on the model then have
the view apply the appropriate CSS.
Change-Id: Ida39f97ff66061f40f159b1b85862c2f9f9a6cf1
---
M modules/ve/ce/ve.ce.Document.js
M modules/ve/ce/ve.ce.Surface.js
M modules/ve/dm/ve.dm.Document.js
M modules/ve/ui/ve.ui.DesktopContext.js
4 files changed, 35 insertions(+), 9 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor
refs/changes/85/123485/1
diff --git a/modules/ve/ce/ve.ce.Document.js b/modules/ve/ce/ve.ce.Document.js
index 0df7a8d..a548b50 100644
--- a/modules/ve/ce/ve.ce.Document.js
+++ b/modules/ve/ce/ve.ce.Document.js
@@ -21,6 +21,11 @@
model.getDocumentNode(), surface, { '$': surface.$ }
) );
+ this.getDocumentNode().$element.attr( {
+ 'lang': model.getLang(),
+ 'dir': model.getDir()
+ } );
+
// Properties
this.model = model;
};
diff --git a/modules/ve/ce/ve.ce.Surface.js b/modules/ve/ce/ve.ce.Surface.js
index 0d59413..24e11d8 100644
--- a/modules/ve/ce/ve.ce.Surface.js
+++ b/modules/ve/ce/ve.ce.Surface.js
@@ -2238,14 +2238,6 @@
};
/**
- * Surface 'dir' property (Content-Level Direction)
- * @returns {string} 'ltr' or 'rtl'
- */
-ve.ce.Surface.prototype.getDir = function () {
- return this.$element.css( 'direction' );
-};
-
-/**
* Change the model only, not the CE surface
*
* This avoids event storms when the CE surface is already correct
diff --git a/modules/ve/dm/ve.dm.Document.js b/modules/ve/dm/ve.dm.Document.js
index f577a74..bc0b33b 100644
--- a/modules/ve/dm/ve.dm.Document.js
+++ b/modules/ve/dm/ve.dm.Document.js
@@ -35,6 +35,9 @@
doc = parentDocument || this,
root = this.documentNode;
+ this.lang = null;
+ this.dir = 'ltr';
+
this.documentNode.setRoot( root );
this.documentNode.setDocument( doc );
this.internalList = internalList ? internalList.clone( this ) : new
ve.dm.InternalList( this );
@@ -1033,3 +1036,29 @@
ve.dm.Document.prototype.getCompleteHistorySince = function ( pointer ) {
return this.completeHistory.slice( pointer );
};
+
+/**
+ * Set content language and directionality
+ * @param {string} lang Language code
+ * @param {string} dir Directionality (ltr/rtl)
+ */
+ve.dm.Document.prototype.setLangDir = function ( lang, dir ) {
+ this.lang = lang;
+ this.dir = dir;
+};
+
+/**
+ * Get the content language
+ * @returns {string} Language code
+ */
+ve.dm.Document.prototype.getLang = function () {
+ return this.lang;
+};
+
+/**
+ * Get the content directionality
+ * @returns {string} Directionality (ltr/rtl)
+ */
+ve.dm.Document.prototype.getDir = function () {
+ return this.dir;
+};
diff --git a/modules/ve/ui/ve.ui.DesktopContext.js
b/modules/ve/ui/ve.ui.DesktopContext.js
index f589e2e..5b6eafa 100644
--- a/modules/ve/ui/ve.ui.DesktopContext.js
+++ b/modules/ve/ui/ve.ui.DesktopContext.js
@@ -310,7 +310,7 @@
inspector = this.inspectors.getCurrentWindow(),
focusedNode = surface.getFocusedNode(),
surfaceOffset = surface.$element.offset(),
- rtl = this.surface.view.getDir() === 'rtl';
+ rtl = this.surface.getModel().getDocument().getDir() === 'rtl';
$container = inspector ? this.inspectors.$element : this.$menu;
if ( focusedNode ) {
--
To view, visit https://gerrit.wikimedia.org/r/123485
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ida39f97ff66061f40f159b1b85862c2f9f9a6cf1
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