Commit e34fd7ad authored by Sergey.Konovalov's avatar Sergey.Konovalov Committed by Alexander.Trofimov

Bug 22457 - Шрифт заменяется на Times New Roman при вставке текста из сторонних приложений

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@53148 954022d7-b5bf-4e40-9824-e11837661b57
parent d5663bac
...@@ -2779,6 +2779,7 @@ function PasteProcessor(api, bUploadImage, bUploadFonts, bNested) ...@@ -2779,6 +2779,7 @@ function PasteProcessor(api, bUploadImage, bUploadFonts, bNested)
//���������� ������(�������� ��� ������� ������� �������, ������ ��� ������� ����������� ������ � ��������� � ������� ����� �������� ���� �����������) //���������� ������(�������� ��� ������� ������� �������, ������ ��� ������� ����������� ������ � ��������� � ������� ����� �������� ���� �����������)
this.dScaleKoef = 1; this.dScaleKoef = 1;
this.bUseScaleKoef = false; this.bUseScaleKoef = false;
this.bIsPlainText = false;
this.MsoStyles = {"mso-style-type": 1, "mso-pagination": 1, "mso-line-height-rule": 1, "mso-style-textfill-fill-color": 1, "mso-tab-count": 1, this.MsoStyles = {"mso-style-type": 1, "mso-pagination": 1, "mso-line-height-rule": 1, "mso-style-textfill-fill-color": 1, "mso-tab-count": 1,
"tab-stops": 1, "list-style-type": 1, "mso-special-character": 1, "mso-padding-alt": 1, "mso-border-insidev": 1, "tab-stops": 1, "list-style-type": 1, "mso-special-character": 1, "mso-padding-alt": 1, "mso-border-insidev": 1,
...@@ -2955,18 +2956,19 @@ PasteProcessor.prototype = ...@@ -2955,18 +2956,19 @@ PasteProcessor.prototype =
var oFindObj = Item.Internal_FindBackward(Item.CurPos.ContentPos, [para_TextPr]); var oFindObj = Item.Internal_FindBackward(Item.CurPos.ContentPos, [para_TextPr]);
var TextPr = null; var TextPr = null;
var nContentPos = Item.CurPos.ContentPos; var nContentPos = Item.CurPos.ContentPos;
if ( true === oFindObj.Found && para_TextPr === oFindObj.Type ) if(!this.bIsPlainText)
{ {
TextPr = Item.Content[oFindObj.LetterPos].Copy(); if ( true === oFindObj.Found && para_TextPr === oFindObj.Type )
//если до этого были ParaTextPr и content для вставки не начинается с ParaTextPr, то вставляем пустые настройки
if(nContentLength > 0 && para_TextPr != oInsertPar.Content[0].Type)
{ {
Item.Internal_Content_Add(nContentPos, new ParaTextPr()); TextPr = Item.Content[oFindObj.LetterPos].Copy();
nContentPos++; //если до этого были ParaTextPr и content для вставки не начинается с ParaTextPr, то вставляем пустые настройки
if(nContentLength > 0 && para_TextPr != oInsertPar.Content[0].Type)
{
Item.Internal_Content_Add(nContentPos, new ParaTextPr());
nContentPos++;
}
} }
} }
else
TextPr = new ParaTextPr();
for(var i = 0; i < nContentLength - 2; ++i)// -2 �� ����������� ����� ��������� for(var i = 0; i < nContentLength - 2; ++i)// -2 �� ����������� ����� ���������
{ {
...@@ -2977,7 +2979,11 @@ PasteProcessor.prototype = ...@@ -2977,7 +2979,11 @@ PasteProcessor.prototype =
nContentPos++; nContentPos++;
} }
} }
Item.Internal_Content_Add(nContentPos, TextPr); if(null != TextPr)
{
Item.Internal_Content_Add(nContentPos, TextPr);
nContentPos++;
}
Item.Set_ContentPos(nContentPos, true, -1); Item.Set_ContentPos(nContentPos, true, -1);
} }
Item.RecalcInfo.Set_Type_0(pararecalc_0_All); Item.RecalcInfo.Set_Type_0(pararecalc_0_All);
...@@ -3449,6 +3455,7 @@ PasteProcessor.prototype = ...@@ -3449,6 +3455,7 @@ PasteProcessor.prototype =
var presentation = editor.WordControl.m_oLogicDocument; var presentation = editor.WordControl.m_oLogicDocument;
this.oRootNode = node; this.oRootNode = node;
this.bIsPlainText = this._CheckIsPlainText(node);
this._Prepeare(node, this._Prepeare(node,
function(){ function(){
oThis.aContent = new Array(); oThis.aContent = new Array();
...@@ -4977,12 +4984,15 @@ PasteProcessor.prototype = ...@@ -4977,12 +4984,15 @@ PasteProcessor.prototype =
} }
if(node != oFirstTextChild) if(node != oFirstTextChild)
{ {
var oLvl = AbstractNum.Lvl[0]; if(!this.bIsPlainText)
var oTextPr = this._read_rPr(oFirstTextChild); {
if(numbering_numfmt_Bullet == num) var oLvl = AbstractNum.Lvl[0];
oTextPr.RFonts = oLvl.TextPr.RFonts.Copy(); var oTextPr = this._read_rPr(oFirstTextChild);
//�������� ��������� �� node if(numbering_numfmt_Bullet == num)
AbstractNum.Apply_TextPr(0, oTextPr); oTextPr.RFonts = oLvl.TextPr.RFonts.Copy();
//�������� ��������� �� node
AbstractNum.Apply_TextPr(0, oTextPr);
}
} }
} }
Para.Numbering_Add( NumId, 0 ); Para.Numbering_Add( NumId, 0 );
...@@ -5036,13 +5046,16 @@ PasteProcessor.prototype = ...@@ -5036,13 +5046,16 @@ PasteProcessor.prototype =
}, },
_commit_rPr : function(node) _commit_rPr : function(node)
{ {
var rPr = this._read_rPr(node); if(!this.bIsPlainText)
//���� ��������� ��������� ���������� ��������� ������� {
if(false == Common_CmpObj2(this.oCur_rPr, rPr)) var rPr = this._read_rPr(node);
{ //���� ��������� ��������� ���������� ��������� �������
this._Paragraph_Add( new ParaTextPr( rPr ) ); if(false == Common_CmpObj2(this.oCur_rPr, rPr))
this.oCur_rPr = rPr; {
} this._Paragraph_Add( new ParaTextPr( rPr ) );
this.oCur_rPr = rPr;
}
}
}, },
_read_rPr : function(node) _read_rPr : function(node)
{ {
...@@ -5814,6 +5827,31 @@ PasteProcessor.prototype = ...@@ -5814,6 +5827,31 @@ PasteProcessor.prototype =
//������� ��������, ������� ��������� � ������� �� ��������� //������� ��������, ������� ��������� � ������� �� ���������
cell.Content.Internal_Content_Remove(0, 1); cell.Content.Internal_Content_Remove(0, 1);
}, },
_CheckIsPlainText : function(node)
{
var bIsPlainText = true;
for(var i = 0, length = node.childNodes.length; i < length; i++)
{
var child = node.childNodes[i];
if(Node.ELEMENT_NODE == child.nodeType)
{
var sClass = child.getAttribute("class");
var sStyle = child.getAttribute("style");
if(sClass || sStyle)
{
bIsPlainText = false;
break;
}
else if(!this._CheckIsPlainText(child))
{
bIsPlainText = false;
break;
}
}
}
return bIsPlainText;
},
_Execute : function(node, pPr, bRoot, bAddParagraph, bInBlock) _Execute : function(node, pPr, bRoot, bAddParagraph, bInBlock)
{ {
//bAddParagraph ���� �������� �� ������� _Decide_AddParagraph, ��������� �������� ��� ���. //bAddParagraph ���� �������� �� ������� _Decide_AddParagraph, ��������� �������� ��� ���.
...@@ -6346,10 +6384,12 @@ PasteProcessor.prototype = ...@@ -6346,10 +6384,12 @@ PasteProcessor.prototype =
//��������� ������� ����� ���� �� ��������� //��������� ������� ����� ���� �� ���������
//this._commit_rPr(node.parentNode); //this._commit_rPr(node.parentNode);
if(!this.bIsPlainText)
var rPr = this._read_rPr(node.parentNode); {
var Item = new ParaTextPr( rPr); var rPr = this._read_rPr(node.parentNode);
shape.paragraphAdd(Item); var Item = new ParaTextPr( rPr);
shape.paragraphAdd(Item);
}
for(var i = 0, length = value.length; i < length; i++) for(var i = 0, length = value.length; i < length; i++)
{ {
var Char = value.charAt(i); var Char = value.charAt(i);
...@@ -6480,9 +6520,12 @@ PasteProcessor.prototype = ...@@ -6480,9 +6520,12 @@ PasteProcessor.prototype =
var nTabCount = parseInt(pPr["mso-tab-count"] || 0); var nTabCount = parseInt(pPr["mso-tab-count"] || 0);
if(nTabCount > 0) if(nTabCount > 0)
{ {
var rPr = this._read_rPr(node); if(!this.bIsPlainText)
var Item = new ParaText( rPr); {
shape.paragraphAdd(Item); var rPr = this._read_rPr(node);
var Item = new ParaText( rPr);
shape.paragraphAdd(Item);
}
for(var i = 0; i < nTabCount; i++) for(var i = 0; i < nTabCount; i++)
shape.paragraphAdd( new ParaTab() ); shape.paragraphAdd( new ParaTab() );
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment