mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-09-25 11:16:51 +00:00
Surfaces should have parent document direction
Make sure all surface widgets have documents that are initialized with the direction of the parent document, so the alignment is set up correctly. Bug: T71969 Change-Id: I6e5f003e18a9c5808d9a4b148eddf0d0f7e29e67
This commit is contained in:
parent
8f30eddee2
commit
e0894b807f
|
@ -40,7 +40,8 @@ ve.dm.MWImageModel = function VeDmMWImageModel( config ) {
|
|||
this.sizeType = null;
|
||||
this.border = false;
|
||||
this.borderable = false;
|
||||
this.dir = 'ltr';
|
||||
this.dir = null;
|
||||
this.lang = null;
|
||||
this.defaultDimensions = null;
|
||||
|
||||
this.imageSrc = '';
|
||||
|
@ -154,10 +155,11 @@ ve.dm.MWImageModel.static.createImageNode = function ( attributes, imageType ) {
|
|||
* Load from image data with scalable information.
|
||||
*
|
||||
* @param {Object} attrs Image node attributes
|
||||
* @param {string} [dir=ltr] Document direction
|
||||
* @param {string} [dir] Document direction
|
||||
* @param {string} [lang] Document language
|
||||
* @return {ve.dm.MWImageModel} Image model
|
||||
*/
|
||||
ve.dm.MWImageModel.static.newFromImageAttributes = function ( attrs, dir ) {
|
||||
ve.dm.MWImageModel.static.newFromImageAttributes = function ( attrs, dir, lang ) {
|
||||
var imgModel = new ve.dm.MWImageModel( {
|
||||
resourceName: attrs.resource,
|
||||
currentDimensions: {
|
||||
|
@ -178,7 +180,8 @@ ve.dm.MWImageModel.static.newFromImageAttributes = function ( attrs, dir ) {
|
|||
imgModel.toggleBorder( !!attrs.borderImage );
|
||||
imgModel.setAltText( attrs.alt || '' );
|
||||
|
||||
imgModel.setDir( dir || 'ltr' );
|
||||
imgModel.setDir( dir );
|
||||
imgModel.setLang( lang );
|
||||
|
||||
imgModel.setType( attrs.type );
|
||||
|
||||
|
@ -749,7 +752,13 @@ ve.dm.MWImageModel.prototype.getCaptionDocument = function () {
|
|||
{ type: '/paragraph' },
|
||||
{ type: 'internalList' },
|
||||
{ type: '/internalList' }
|
||||
] );
|
||||
],
|
||||
/* htmlDocument */ null,
|
||||
/* parentDocument */ null,
|
||||
/* internalList */ null,
|
||||
/* innerWhitespace */ null,
|
||||
/* lang */ this.getLang(),
|
||||
/* dir */ this.getDir() );
|
||||
}
|
||||
return this.captionDoc;
|
||||
};
|
||||
|
@ -997,6 +1006,24 @@ ve.dm.MWImageModel.prototype.setDir = function ( dir ) {
|
|||
this.dir = dir;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the language of the image document. Specifically relevant
|
||||
* for the caption document.
|
||||
* @return {string} Document language
|
||||
*/
|
||||
ve.dm.MWImageModel.prototype.getLang = function () {
|
||||
return this.lang;
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the language of the image document. Specifically relevant
|
||||
* for the caption document.
|
||||
* @param {string} lang Document language
|
||||
*/
|
||||
ve.dm.MWImageModel.prototype.setLang = function ( lang ) {
|
||||
this.lang = lang;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the image file source
|
||||
* The image file source that points to the location of the
|
||||
|
|
|
@ -24,6 +24,8 @@ ve.dm.MWReferenceModel = function VeDmMWReferenceModel() {
|
|||
this.group = '';
|
||||
this.doc = null;
|
||||
this.deferDoc = null;
|
||||
this.dir = null;
|
||||
this.lang = null;
|
||||
};
|
||||
|
||||
/* Inheritance */
|
||||
|
@ -48,6 +50,8 @@ ve.dm.MWReferenceModel.static.newFromReferenceNode = function ( node ) {
|
|||
ref.setListGroup( attr.listGroup );
|
||||
ref.setListIndex( attr.listIndex );
|
||||
ref.setGroup( attr.refGroup );
|
||||
ref.setDir( doc.getDir() );
|
||||
ref.setLang( doc.getLang() );
|
||||
ref.deferDoc = function () {
|
||||
// cloneFromRange is very expensive, so lazy evaluate it
|
||||
return doc.cloneFromRange( internalList.getItemNode( attr.listIndex ).getRange() );
|
||||
|
@ -231,12 +235,50 @@ ve.dm.MWReferenceModel.prototype.getDocument = function () {
|
|||
{ type: '/paragraph' },
|
||||
{ type: 'internalList' },
|
||||
{ type: '/internalList' }
|
||||
] );
|
||||
],
|
||||
/* htmlDocument */ null,
|
||||
/* parentDocument */ null,
|
||||
/* internalList */ null,
|
||||
/* innerWhitespace */ null,
|
||||
/* lang */ this.getLang(),
|
||||
/* dir */ this.getDir() );
|
||||
}
|
||||
}
|
||||
return this.doc;
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the directionality of the reference document
|
||||
* @param {string} dir Document directionality
|
||||
*/
|
||||
ve.dm.MWReferenceModel.prototype.setDir = function ( dir ) {
|
||||
this.dir = dir;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the directionality of the reference document
|
||||
* @returns {string} Document directionality
|
||||
*/
|
||||
ve.dm.MWReferenceModel.prototype.getDir = function () {
|
||||
return this.dir;
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the language of the reference document
|
||||
* @param {string} lang Document language
|
||||
*/
|
||||
ve.dm.MWReferenceModel.prototype.setLang = function ( lang ) {
|
||||
this.lang = lang;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the language of the reference document
|
||||
* @returns {string} Document language
|
||||
*/
|
||||
ve.dm.MWReferenceModel.prototype.getLang = function () {
|
||||
return this.lang;
|
||||
};
|
||||
|
||||
/**
|
||||
* Set key of reference in list.
|
||||
*
|
||||
|
|
|
@ -173,6 +173,8 @@ ve.ui.MWCitationDialog.prototype.getActionProcess = function ( action ) {
|
|||
// Collapse returns a new fragment, so update this.fragment
|
||||
this.fragment = this.getFragment().collapseToEnd();
|
||||
this.referenceModel = new ve.dm.MWReferenceModel();
|
||||
this.referenceModel.setDir( doc.getDir() );
|
||||
this.referenceModel.setLang( doc.getLang() );
|
||||
this.referenceModel.insertInternalItem( surfaceModel );
|
||||
this.referenceModel.insertReferenceNode( this.getFragment() );
|
||||
}
|
||||
|
|
|
@ -386,7 +386,8 @@ ve.ui.MWMediaDialog.prototype.onSearchSelect = function ( item ) {
|
|||
align: 'default',
|
||||
defaultSize: true
|
||||
},
|
||||
this.getFragment().getSurface().getDocument().getDir()
|
||||
this.getFragment().getDocument().getDir(),
|
||||
this.getFragment().getDocument().getLang()
|
||||
);
|
||||
this.attachImageModel();
|
||||
} else {
|
||||
|
@ -614,7 +615,8 @@ ve.ui.MWMediaDialog.prototype.getSetupProcess = function ( data ) {
|
|||
// Create image model
|
||||
this.imageModel = ve.dm.MWImageModel.static.newFromImageAttributes(
|
||||
this.selectedNode.getAttributes(),
|
||||
this.selectedNode.getDocument().getDir()
|
||||
this.selectedNode.getDocument().getDir(),
|
||||
this.selectedNode.getDocument().getLang()
|
||||
);
|
||||
this.attachImageModel();
|
||||
|
||||
|
@ -789,7 +791,7 @@ ve.ui.MWMediaDialog.prototype.attachImageModel = function () {
|
|||
*/
|
||||
ve.ui.MWMediaDialog.prototype.resetCaption = function () {
|
||||
var captionDocument,
|
||||
doc = this.getFragment().getSurface().getDocument();
|
||||
doc = this.getFragment().getDocument();
|
||||
|
||||
if ( this.captionSurface ) {
|
||||
// Reset the caption surface if it already exists
|
||||
|
@ -824,7 +826,12 @@ ve.ui.MWMediaDialog.prototype.resetCaption = function () {
|
|||
{ type: '/paragraph' },
|
||||
{ type: 'internalList' },
|
||||
{ type: '/internalList' }
|
||||
] );
|
||||
],
|
||||
// The ve.dm.Document constructor expects
|
||||
// ( data, htmlDocument, parentDocument, internalList, innerWhitespace, lang, dir )
|
||||
// as parameters. We are only interested in setting up language, hence the
|
||||
// multiple 'null' values.
|
||||
null, null, null, null, doc.getLang(), doc.getDir() );
|
||||
}
|
||||
|
||||
this.store = doc.getStore();
|
||||
|
|
|
@ -233,6 +233,8 @@ ve.ui.MWReferenceDialog.prototype.useReference = function ( ref ) {
|
|||
} else {
|
||||
// Create a new reference
|
||||
this.referenceModel = new ve.dm.MWReferenceModel();
|
||||
this.referenceModel.setDir( this.getFragment().getDocument().getDir() );
|
||||
this.referenceModel.setLang( this.getFragment().getDocument().getLang() );
|
||||
}
|
||||
|
||||
// Cleanup
|
||||
|
|
Loading…
Reference in a new issue