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

revert Revision: 56684

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@56819 954022d7-b5bf-4e40-9824-e11837661b57
parent 33d3d3aa
...@@ -2688,7 +2688,6 @@ PasteProcessor.prototype = ...@@ -2688,7 +2688,6 @@ PasteProcessor.prototype =
{ {
//������� ��������� //������� ���������
this.oRecalcDocument.Remove(1, true, true); this.oRecalcDocument.Remove(1, true, true);
this.oLogicDocument.Document_UpdateSelectionState();
} }
var nInsertLength = this.aContent.length; var nInsertLength = this.aContent.length;
...@@ -2708,7 +2707,6 @@ PasteProcessor.prototype = ...@@ -2708,7 +2707,6 @@ PasteProcessor.prototype =
if(false == this.bNested && nInsertLength > 0) if(false == this.bNested && nInsertLength > 0)
{ {
this.oRecalcDocument.Recalculate(); this.oRecalcDocument.Recalculate();
oDocument.Cursor_MoveRight(false, false);
this.oLogicDocument.Document_UpdateInterfaceState(); this.oLogicDocument.Document_UpdateInterfaceState();
} }
...@@ -2718,22 +2716,136 @@ PasteProcessor.prototype = ...@@ -2718,22 +2716,136 @@ PasteProcessor.prototype =
{ {
if(!g_bIsDocumentCopyPaste) if(!g_bIsDocumentCopyPaste)
return; return;
//делаем небольшой сдвиг по y, потому что сама точка TargetPos для двухстрочного параграфа определяется как верхняя var nNewContentLength = aNewContent.length;
var NearPos = oDoc.Get_NearestPos(this.oLogicDocument.TargetPos.PageNum, this.oLogicDocument.TargetPos.X, this.oLogicDocument.TargetPos.Y + 0.05);//0.05 == 2pix //����� ���� �� Document.Add_NewParagraph
var oSelectedContent = new CSelectedContent(); var Item = oDoc.Content[oDoc.CurPos.ContentPos];
for (var i = 0, length = aNewContent.length; i < length; ++i) {
var oSelectedElement = new CSelectedElement(); if( type_Paragraph == Item.GetType() )
oSelectedElement.Element = aNewContent[i]; {
if (i == length - 1 && true != this.bInBlock && type_Paragraph == oSelectedElement.Element.GetType()) { if(true != this.bInBlock && 1 == nNewContentLength && type_Paragraph == aNewContent[0].GetType())
oSelectedElement.SelectedAll = false; {
if (null != NearPos.Paragraph) //������� ������ � ��������
NearPos.Paragraph.Check_NearestPos(NearPos); var oInsertPar = aNewContent[0];
// Убираем метку конца параграфа у данного параграфа
oInsertPar.Remove_ParaEnd();
//Ищем в глубину run который нужно разбить
var oCurContent = Item;
var nCurContentContentPos = oCurContent.CurPos.ContentPos;
var oCurRunToSplit = oCurContent.Content[nCurContentContentPos];
while(null != oCurRunToSplit && para_Run != oCurRunToSplit.Type ){
oCurContent = oCurRunToSplit;
if(null != oCurRunToSplit.CurPos && null != oCurRunToSplit.CurPos.ContentPos)
nCurContentContentPos = oCurRunToSplit.CurPos.ContentPos;
else if(null != oCurRunToSplit.State && null != oCurRunToSplit.State.ContentPos)
nCurContentContentPos = oCurRunToSplit.State.ContentPos;
oCurRunToSplit = oCurContent.Content[nCurContentContentPos];
}
if(null != oCurRunToSplit && null != oCurContent){
//разбиваем run, если находимся в середине
var bSplit = false;
if ( oCurRunToSplit.State.ContentPos > 0 && oCurRunToSplit.State.ContentPos < oCurRunToSplit.Content.length ){
var RRun = oCurRunToSplit.Split_Run( oCurRunToSplit.State.ContentPos );
oInsertPar.Content.push(RRun);
bSplit = true;
}
else if(0 == oCurRunToSplit.State.ContentPos)
nCurContentContentPos--;
for(var i = 0, length = oInsertPar.Content.length; i < length; ++i){
var run = oInsertPar.Content[i];
if(run.Content.length > 0){
if(null != oCurContent.Internal_Content_Add)
oCurContent.Internal_Content_Add(++nCurContentContentPos, run, false);
else if(null != oCurContent.Add_ToContent)
oCurContent.Add_ToContent(++nCurContentContentPos, run, false);
}
}
if (bSplit)
nCurContentContentPos--;
oCurContent.Content[nCurContentContentPos].Cursor_MoveToEndPos();
if (null != oCurContent.Set_ContentPos)
oCurContent.Set_ContentPos(nCurContentContentPos, false, -1);
else
oCurContent.State.ContentPos = nCurContentContentPos;
Item.RecalcInfo.Set_Type_0(pararecalc_0_All);
Item.RecalcInfo.Set_Type_0_Spell(pararecalc_0_Spell_All);
this.oRecalcDocument.ContentLastChangePos = this.oRecalcDocument.CurPos.ContentPos;
}
} }
else else
oSelectedElement.SelectedAll = true; {
oSelectedContent.Add(oSelectedElement); var LastPos = this.oRecalcDocument.CurPos.ContentPos;
var LastPosCurDoc = oDoc.CurPos.ContentPos;
//����� ��������� ��������
var oSourceFirstPar = Item;
var oSourceLastPar = new Paragraph(oDoc.DrawingDocument, oDoc, 0, 50, 50, X_Right_Field, Y_Bottom_Field );
if(true !== oSourceFirstPar.Cursor_IsEnd())
oSourceFirstPar.Split(oSourceLastPar);
var oInsFirstPar = aNewContent[0];
var oInsLastPar = null;
if(nNewContentLength > 1)
oInsLastPar = aNewContent[nNewContentLength - 1];
var nStartIndex = 0;
var nEndIndex = nNewContentLength - 1;
if(type_Paragraph == oInsFirstPar.GetType())
{
//�������� �������� ������� ������������ ��������� � ������ �������� ��������
//CopyPr_Open - ������� � �������, �.�. ���� �������� ��� � ���������
oInsFirstPar.CopyPr_Open( oSourceFirstPar );
//�������� ���������� ������������ ���������
oSourceFirstPar.Concat(oInsFirstPar);
//�������� ��������� ������ ����� ������ �� ��������� ���� ��������
nStartIndex++;
}
else if(type_Table == oInsFirstPar.GetType())
{
//���� ��������� ������� � ������ ��������, �� �� ��������� ���
if(oSourceFirstPar.IsEmpty())
{
oSourceFirstPar = null;
}
}
//���� �� ���������� ������ ����� ���������, �� ��������� ���������� ���������� ��������� � ������ ������ �������� ��������� ���������
if(null != oInsLastPar && type_Paragraph == oInsLastPar.GetType() && true != this.bInBlock)
{
var nNewContentPos = oInsLastPar.Content.length - 2;
//�������� �������� ���������� ��������� ��������� � ��������� ����������� ��������
//CopyPr - �� ������� � �������, �.�. � ������� ��������� ������� ����� ��������� � ��������
if(null != oInsLastPar)
oSourceLastPar.CopyPr(oInsLastPar);
oInsLastPar.Cursor_MoveToEndPos(false, false);
oInsLastPar.Concat(oSourceLastPar);
oSourceLastPar = oInsLastPar;
nEndIndex--;
}
//���������
for(var i = nStartIndex; i <= nEndIndex; ++i )
{
var oElemToAdd = aNewContent[i];
LastPosCurDoc++;
oDoc.Internal_Content_Add(LastPosCurDoc, oElemToAdd);
}
if(null != oSourceLastPar)
{
//��������� ��������� ��������
LastPosCurDoc++;
oDoc.Internal_Content_Add(LastPosCurDoc, oSourceLastPar);
}
if(null == oSourceFirstPar)
{
//������� ������ ��������, ������ ��� ����� ������ ���� � ��������� �� ����� �� ������ ���������
oDoc.Internal_Content_Remove(LastPosCurDoc, 1);
LastPosCurDoc--;
}
this.oRecalcDocument.ContentLastChangePos = LastPos;
Item.RecalcInfo.Set_Type_0(pararecalc_0_All);
Item.RecalcInfo.Set_Type_0_Spell(pararecalc_0_Spell_All);
oDoc.CurPos.ContentPos = LastPosCurDoc;
}
} }
oDoc.Insert_Content(oSelectedContent, NearPos);
}, },
......
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