Commit 3b069ea7 authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Сделано, чтобы можно было копировать из формулы в формулу (баг 27034)....

Сделано, чтобы можно было копировать из формулы в формулу (баг 27034). Сделано, чтобы при drag-n-drop формулы параграфы лочились (баг 27221).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@59355 954022d7-b5bf-4e40-9824-e11837661b57
parent ab009bea
...@@ -8576,72 +8576,14 @@ CDocument.prototype = ...@@ -8576,72 +8576,14 @@ CDocument.prototype =
var DocContent = this.Get_SelectedContent(); var DocContent = this.Get_SelectedContent();
var Para = NearPos.Paragraph; if (false === this.Can_InsertContent(DocContent, NearPos))
// Автофигуры не вставляем в другие автофигуры
if ( true === Para.Parent.Is_DrawingShape() && true === DocContent.HaveShape )
{
History.Remove_LastPoint();
return;
}
// В формулу вставляем только формулу
var ParaNearPos = NearPos.Paragraph.Get_ParaNearestPos(NearPos);
if (null === ParaNearPos || ParaNearPos.Classes.length < 2)
{
History.Remove_LastPoint();
return;
}
var LastClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 1];
if (para_Math_Run === LastClass.Type)
{
// Проверяем, что вставляемый контент тоже формула
var Element = DocContent.Elements[0].Element;
var MathRun = LastClass;
if (1 !== DocContent.Elements.length || type_Paragraph !== Element.Get_Type() || 2 !== Element.Content.length || para_Math !== Element.Content[0].Type || null === MathRun.Parent)
{
History.Remove_LastPoint(); History.Remove_LastPoint();
return;
}
// Если надо удаляем выделенную часть (пересчет отключаем на время удаления)
if ( true !== bCopy )
{
this.TurnOff_Recalculate();
this.TurnOff_InterfaceEvents();
this.Remove(1, false, false, false);
this.TurnOn_Recalculate(false);
this.TurnOn_InterfaceEvents(false);
}
this.Selection_Remove();
var NewMathRun = MathRun.Split(ParaNearPos.NearPos.ContentPos, ParaNearPos.Classes.length - 1);
var MathContent = ParaNearPos.Classes[ParaNearPos.Classes.length - 2];
var MathContentPos = ParaNearPos.NearPos.ContentPos.Data[ParaNearPos.Classes.length - 2];
MathContent.Add_ToContent(MathContentPos + 1, NewMathRun);
MathContent.Insert_MathContent(Element.Content[0].Root, MathContentPos + 1, true);
this.Recalculate();
this.Document_UpdateSelectionState();
this.Document_UpdateInterfaceState();
this.Document_UpdateRulersState();
return;
}
else if (para_Run !== LastClass.Type)
{
History.Remove_LastPoint();
return;
}
var Para = NearPos.Paragraph;
// Если мы копируем, тогда не надо проверять выделенные параграфы, а если переносим, тогда проверяем // Если мы копируем, тогда не надо проверять выделенные параграфы, а если переносим, тогда проверяем
var CheckChangesType = (true !== bCopy ? changestype_Document_Content : changestype_None); var CheckChangesType = (true !== bCopy ? changestype_Document_Content : changestype_None);
if ( false === this.Document_Is_SelectionLocked( CheckChangesType, { Type : changestype_2_ElementsArray_and_Type, Elements : [Para], CheckType : changestype_Paragraph_Content } ) ) if (false === this.Document_Is_SelectionLocked(CheckChangesType, {Type : changestype_2_ElementsArray_and_Type, Elements : [Para], CheckType : changestype_Paragraph_Content}))
{ {
// Если надо удаляем выделенную часть (пересчет отключаем на время удаления) // Если надо удаляем выделенную часть (пересчет отключаем на время удаления)
if ( true !== bCopy ) if ( true !== bCopy )
...@@ -8656,8 +8598,6 @@ CDocument.prototype = ...@@ -8656,8 +8598,6 @@ CDocument.prototype =
this.Selection_Remove(); this.Selection_Remove();
// Выделение выставляется внутри функции Insert_Content // Выделение выставляется внутри функции Insert_Content
if ( undefined != Para.Parent )
{
Para.Parent.Insert_Content( DocContent, NearPos ); Para.Parent.Insert_Content( DocContent, NearPos );
this.Recalculate(); this.Recalculate();
...@@ -8666,7 +8606,6 @@ CDocument.prototype = ...@@ -8666,7 +8606,6 @@ CDocument.prototype =
this.Document_UpdateInterfaceState(); this.Document_UpdateInterfaceState();
this.Document_UpdateRulersState(); this.Document_UpdateRulersState();
} }
}
else else
History.Remove_LastPoint(); History.Remove_LastPoint();
} }
...@@ -8705,73 +8644,123 @@ CDocument.prototype = ...@@ -8705,73 +8644,123 @@ CDocument.prototype =
return SelectedContent; return SelectedContent;
}, },
Insert_Content : function(SelectedContent, NearPos) Can_InsertContent : function(SelectedContent, NearPos)
{ {
var NearContentPos = NearPos.ContentPos; // Проверяем, что вставка не пустая
if (SelectedContent.Elements.length <= 0)
return false;
var Elements = SelectedContent.Elements; var Para = NearPos.Paragraph;
var ElementsCount = Elements.length; // Автофигуры не вставляем в другие автофигуры
if ( ElementsCount <= 0 ) if (true === Para.Parent.Is_DrawingShape() && true === SelectedContent.HaveShape)
return; return false;
// Проверяем корректность места, куда вставляем
var ParaNearPos = NearPos.Paragraph.Get_ParaNearestPos(NearPos);
if (null === ParaNearPos || ParaNearPos.Classes.length < 2)
return false;
var LastClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 1];
if (para_Math_Run === LastClass.Type)
{
// Проверяем, что вставляемый контент тоже формула
var Element = SelectedContent.Elements[0].Element;
if (1 !== SelectedContent.Elements.length || type_Paragraph !== Element.Get_Type() || 2 !== Element.Content.length || para_Math !== Element.Content[0].Type || null === LastClass.Parent)
return false;
}
else if (para_Run !== LastClass.Type)
return false;
if (null === Para.Parent || undefined === Para.Parent)
return false;
return true;
},
Insert_Content : function(SelectedContent, NearPos)
{
var Para = NearPos.Paragraph; var Para = NearPos.Paragraph;
var ParaNearPos = Para.Get_ParaNearestPos(NearPos);
var LastClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 1];
if (para_Math_Run === LastClass.Type)
{
var MathRun = LastClass;
var NewMathRun = MathRun.Split(ParaNearPos.NearPos.ContentPos, ParaNearPos.Classes.length - 1);
var MathContent = ParaNearPos.Classes[ParaNearPos.Classes.length - 2];
var MathContentPos = ParaNearPos.NearPos.ContentPos.Data[ParaNearPos.Classes.length - 2];
var Element = SelectedContent.Elements[0].Element;
var InsertMathContent = null;
for (var nPos = 0, nParaLen = Element.Content.length; nPos < nParaLen; nPos++)
{
if (para_Math === Element.Content[nPos].Type)
{
InsertMathContent = Element.Content[nPos];
break;
}
}
if (null !== InsertMathContent)
{
MathContent.Add_ToContent(MathContentPos + 1, NewMathRun);
MathContent.Insert_MathContent(InsertMathContent.Root, MathContentPos + 1, true);
}
}
else if (para_Run === LastClass.Type)
{
var NearContentPos = NearPos.ContentPos;
// Сначала найдем номер элемента, начиная с которого мы будем производить вставку // Сначала найдем номер элемента, начиная с которого мы будем производить вставку
var DstIndex = -1; var DstIndex = -1;
var Count = this.Content.length; var Count = this.Content.length;
for ( var Index = 0; Index < Count; Index++ ) for (var Index = 0; Index < Count; Index++)
{ {
if ( this.Content[Index] === Para ) if (this.Content[Index] === Para)
{ {
DstIndex = Index; DstIndex = Index;
break; break;
} }
} }
if ( -1 === DstIndex ) if (-1 === DstIndex)
return; return false;
var Elements = SelectedContent.Elements;
var ElementsCount = Elements.length;
var FirstElement = SelectedContent.Elements[0]; var FirstElement = SelectedContent.Elements[0];
if ( 1 === ElementsCount && true !== FirstElement.SelectedAll && type_Paragraph === FirstElement.Element.GetType() && true !== FirstElement.Element.Is_Empty() ) if (1 === ElementsCount && true !== FirstElement.SelectedAll && type_Paragraph === FirstElement.Element.GetType() && true !== FirstElement.Element.Is_Empty())
{ {
// Нам нужно в заданный параграф вставить выделенный текст // Нам нужно в заданный параграф вставить выделенный текст
var NewPara = FirstElement.Element; var NewPara = FirstElement.Element;
var NewElementsCount = NewPara.Content.length - 1; // Последний ран с para_End не добавляем var NewElementsCount = NewPara.Content.length - 1; // Последний ран с para_End не добавляем
var ParaNearPos = Para.Get_ParaNearestPos( NearPos );
if ( null === ParaNearPos || ParaNearPos.Classes.length < 2 )
return;
var LastClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 1]; var LastClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 1];
if ( para_Run !== LastClass.Type ) var NewElement = LastClass.Split(ParaNearPos.NearPos.ContentPos, ParaNearPos.Classes.length - 1);
return;
var NewElement = LastClass.Split( ParaNearPos.NearPos.ContentPos, ParaNearPos.Classes.length - 1 );
var PrevClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 2]; var PrevClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 2];
var PrevPos = ParaNearPos.NearPos.ContentPos.Data[ParaNearPos.Classes.length - 2]; var PrevPos = ParaNearPos.NearPos.ContentPos.Data[ParaNearPos.Classes.length - 2];
PrevClass.Add_ToContent( PrevPos + 1, NewElement ); PrevClass.Add_ToContent(PrevPos + 1, NewElement);
// TODO: Заглушка для переноса автофигур и картинок. Когда разрулим ситуацию так, чтобы когда у нас // TODO: Заглушка для переноса автофигур и картинок. Когда разрулим ситуацию так, чтобы когда у нас
// в текста была выделена автофигура выделение шло для автофигур, тогда здесь можно будет убрать. // в текста была выделена автофигура выделение шло для автофигур, тогда здесь можно будет убрать.
var bNeedSelect = (true === SelectedContent.MoveDrawing ? false : true); var bNeedSelect = (true === SelectedContent.MoveDrawing ? false : true);
for ( var Index = 0; Index < NewElementsCount; Index++ ) for (var Index = 0; Index < NewElementsCount; Index++)
{ {
var Item = NewPara.Content[Index]; var Item = NewPara.Content[Index];
PrevClass.Add_ToContent( PrevPos + 1 + Index, Item ); PrevClass.Add_ToContent(PrevPos + 1 + Index, Item);
if ( true === bNeedSelect ) if (true === bNeedSelect)
Item.Select_All(); Item.Select_All();
} }
if ( true === bNeedSelect ) if (true === bNeedSelect)
{ {
PrevClass.Selection.Use = true; PrevClass.Selection.Use = true;
PrevClass.Selection.StartPos = PrevPos + 1; PrevClass.Selection.StartPos = PrevPos + 1;
PrevClass.Selection.EndPos = PrevPos + 1 + NewElementsCount - 1; PrevClass.Selection.EndPos = PrevPos + 1 + NewElementsCount - 1;
for ( var Index = 0; Index < ParaNearPos.Classes.length - 2; Index++ ) for (var Index = 0; Index < ParaNearPos.Classes.length - 2; Index++)
{ {
var Class = ParaNearPos.Classes[Index]; var Class = ParaNearPos.Classes[Index];
var ClassPos = ParaNearPos.NearPos.ContentPos.Data[Index]; var ClassPos = ParaNearPos.NearPos.ContentPos.Data[Index];
...@@ -8786,7 +8775,7 @@ CDocument.prototype = ...@@ -8786,7 +8775,7 @@ CDocument.prototype =
this.Selection.EndPos = DstIndex; this.Selection.EndPos = DstIndex;
} }
if ( PrevClass.Correct_Content ) if (PrevClass.Correct_Content)
{ {
PrevClass.Correct_Content(); PrevClass.Correct_Content();
} }
...@@ -8801,14 +8790,14 @@ CDocument.prototype = ...@@ -8801,14 +8790,14 @@ CDocument.prototype =
// Нам надо разделить наш параграф в заданной позиции, если позиция в // Нам надо разделить наш параграф в заданной позиции, если позиция в
// начале или конце параграфа, тогда делить не надо // начале или конце параграфа, тогда делить не надо
Para.Cursor_MoveToNearPos( NearPos ); Para.Cursor_MoveToNearPos(NearPos);
Para.Selection_Remove(); Para.Selection_Remove();
if ( true === Para.Cursor_IsEnd() ) if (true === Para.Cursor_IsEnd())
{ {
bConcatE = false; bConcatE = false;
if ( 1 === ElementsCount && type_Paragraph === FirstElement.Element.GetType() && ( true === FirstElement.Element.Is_Empty() || true == FirstElement.SelectedAll ) ) if (1 === ElementsCount && type_Paragraph === FirstElement.Element.GetType() && ( true === FirstElement.Element.Is_Empty() || true == FirstElement.SelectedAll ))
{ {
bConcatS = false; bConcatS = false;
...@@ -8816,27 +8805,27 @@ CDocument.prototype = ...@@ -8816,27 +8805,27 @@ CDocument.prototype =
DstIndex++; DstIndex++;
} }
} }
else if ( true === Para.Cursor_IsStart() ) else if (true === Para.Cursor_IsStart())
{ {
bConcatS = false; bConcatS = false;
} }
else else
{ {
// Создаем новый параграф // Создаем новый параграф
var NewParagraph = new Paragraph( this.DrawingDocument, this, 0, 0, 0, 0, 0 ); var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
Para.Split( NewParagraph ); Para.Split(NewParagraph);
this.Internal_Content_Add( DstIndex + 1, NewParagraph ); this.Internal_Content_Add(DstIndex + 1, NewParagraph);
ParaE = NewParagraph; ParaE = NewParagraph;
ParaEIndex = DstIndex + 1; ParaEIndex = DstIndex + 1;
} }
var StartIndex = 0; var StartIndex = 0;
if ( true === bConcatS ) if (true === bConcatS)
{ {
// Если мы присоединяем новый параграф, то и копируем все настройки параграфа (так делает Word) // Если мы присоединяем новый параграф, то и копируем все настройки параграфа (так делает Word)
ParaS.Concat( Elements[0].Element ); ParaS.Concat(Elements[0].Element);
ParaS.Set_Pr( Elements[0].Element.Pr ); ParaS.Set_Pr(Elements[0].Element.Pr);
StartIndex++; StartIndex++;
...@@ -8851,7 +8840,7 @@ CDocument.prototype = ...@@ -8851,7 +8840,7 @@ CDocument.prototype =
} }
var EndIndex = ElementsCount - 1; var EndIndex = ElementsCount - 1;
if ( true === bConcatE && StartIndex < EndIndex ) if (true === bConcatE && StartIndex < EndIndex)
{ {
var _ParaE = Elements[ElementsCount - 1].Element; var _ParaE = Elements[ElementsCount - 1].Element;
...@@ -8859,11 +8848,11 @@ CDocument.prototype = ...@@ -8859,11 +8848,11 @@ CDocument.prototype =
_ParaE.Select_All(); _ParaE.Select_All();
_ParaE.Concat( ParaE ); _ParaE.Concat(ParaE);
_ParaE.Set_Pr( ParaE.Pr ); _ParaE.Set_Pr(ParaE.Pr);
this.Internal_Content_Add( ParaEIndex, _ParaE ); this.Internal_Content_Add(ParaEIndex, _ParaE);
this.Internal_Content_Remove( ParaEIndex + 1, 1 ); this.Internal_Content_Remove(ParaEIndex + 1, 1);
_ParaE.Selection.Use = true; _ParaE.Selection.Use = true;
_ParaE.Selection.StartPos = 0; _ParaE.Selection.StartPos = 0;
...@@ -8873,9 +8862,9 @@ CDocument.prototype = ...@@ -8873,9 +8862,9 @@ CDocument.prototype =
} }
for ( var Index = StartIndex; Index <= EndIndex; Index++ ) for (var Index = StartIndex; Index <= EndIndex; Index++)
{ {
this.Internal_Content_Add( DstIndex + Index, Elements[Index].Element ); this.Internal_Content_Add(DstIndex + Index, Elements[Index].Element);
this.Content[DstIndex + Index].Select_All(); this.Content[DstIndex + Index].Select_All();
} }
...@@ -8884,8 +8873,9 @@ CDocument.prototype = ...@@ -8884,8 +8873,9 @@ CDocument.prototype =
this.Selection.EndPos = DstIndex + ElementsCount - 1; this.Selection.EndPos = DstIndex + ElementsCount - 1;
} }
if ( docpostype_DrawingObjects !== this.CurPos.Type ) if (docpostype_DrawingObjects !== this.CurPos.Type)
this.CurPos.Type = docpostype_Content; this.CurPos.Type = docpostype_Content;
}
}, },
Document_SelectNumbering : function(NumPr) Document_SelectNumbering : function(NumPr)
......
...@@ -3918,74 +3918,90 @@ CDocumentContent.prototype = ...@@ -3918,74 +3918,90 @@ CDocumentContent.prototype =
Insert_Content : function(SelectedContent, NearPos) Insert_Content : function(SelectedContent, NearPos)
{ {
var NearContentPos = NearPos.ContentPos; var Para = NearPos.Paragraph;
var ParaNearPos = Para.Get_ParaNearestPos(NearPos);
var LastClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 1];
if (para_Math_Run === LastClass.Type)
{
var MathRun = LastClass;
var NewMathRun = MathRun.Split(ParaNearPos.NearPos.ContentPos, ParaNearPos.Classes.length - 1);
var MathContent = ParaNearPos.Classes[ParaNearPos.Classes.length - 2];
var MathContentPos = ParaNearPos.NearPos.ContentPos.Data[ParaNearPos.Classes.length - 2];
var Element = SelectedContent.Elements[0].Element;
var Elements = SelectedContent.Elements; var InsertMathContent = null;
for (var nPos = 0, nParaLen = Element.Content.length; nPos < nParaLen; nPos++)
{
if (para_Math === Element.Content[nPos].Type)
{
InsertMathContent = Element.Content[nPos];
break;
}
}
var ElementsCount = Elements.length; if (null !== InsertMathContent)
if ( ElementsCount <= 0 ) {
return; MathContent.Add_ToContent(MathContentPos + 1, NewMathRun);
MathContent.Insert_MathContent(InsertMathContent.Root, MathContentPos + 1, true);
}
}
else if (para_Run === LastClass.Type)
{
var Elements = SelectedContent.Elements;
var Para = NearPos.Paragraph; var Para = NearPos.Paragraph;
// Сначала найдем номер элемента, начиная с которого мы будем производить вставку // Сначала найдем номер элемента, начиная с которого мы будем производить вставку
var DstIndex = -1; var DstIndex = -1;
var Count = this.Content.length; var Count = this.Content.length;
for ( var Index = 0; Index < Count; Index++ ) for (var Index = 0; Index < Count; Index++)
{ {
if ( this.Content[Index] === Para ) if (this.Content[Index] === Para)
{ {
DstIndex = Index; DstIndex = Index;
break; break;
} }
} }
if ( -1 === DstIndex ) if (-1 === DstIndex)
return; return;
var bNeedSelect = true; var bNeedSelect = true;
var Elements = SelectedContent.Elements;
var ElementsCount = Elements.length;
var FirstElement = SelectedContent.Elements[0]; var FirstElement = SelectedContent.Elements[0];
if ( 1 === ElementsCount && true !== FirstElement.SelectedAll && type_Paragraph === FirstElement.Element.GetType() ) if (1 === ElementsCount && true !== FirstElement.SelectedAll && type_Paragraph === FirstElement.Element.GetType())
{ {
// Нам нужно в заданный параграф вставить выделенный текст // Нам нужно в заданный параграф вставить выделенный текст
var NewPara = FirstElement.Element; var NewPara = FirstElement.Element;
var NewElementsCount = NewPara.Content.length - 1; // Последний ран с para_End не добавляем var NewElementsCount = NewPara.Content.length - 1; // Последний ран с para_End не добавляем
var ParaNearPos = Para.Get_ParaNearestPos( NearPos ); var NewElement = LastClass.Split(ParaNearPos.NearPos.ContentPos, ParaNearPos.Classes.length - 1);
if ( null === ParaNearPos || ParaNearPos.Classes.length < 2 )
return;
var LastClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 1];
if ( para_Run !== LastClass.Type )
return;
var NewElement = LastClass.Split( ParaNearPos.NearPos.ContentPos, ParaNearPos.Classes.length - 1 );
var PrevClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 2]; var PrevClass = ParaNearPos.Classes[ParaNearPos.Classes.length - 2];
var PrevPos = ParaNearPos.NearPos.ContentPos.Data[ParaNearPos.Classes.length - 2]; var PrevPos = ParaNearPos.NearPos.ContentPos.Data[ParaNearPos.Classes.length - 2];
PrevClass.Add_ToContent( PrevPos + 1, NewElement ); PrevClass.Add_ToContent(PrevPos + 1, NewElement);
// TODO: Заглушка для переноса автофигур и картинок. Когда разрулим ситуацию так, чтобы когда у нас // TODO: Заглушка для переноса автофигур и картинок. Когда разрулим ситуацию так, чтобы когда у нас
// в текста была выделена автофигура выделение шло для автофигур, тогда здесь можно будет убрать. // в текста была выделена автофигура выделение шло для автофигур, тогда здесь можно будет убрать.
var LogicDocument = this.LogicDocument;
bNeedSelect = (true === SelectedContent.MoveDrawing ? false : true); bNeedSelect = (true === SelectedContent.MoveDrawing ? false : true);
for ( var Index = 0; Index < NewElementsCount; Index++ ) for (var Index = 0; Index < NewElementsCount; Index++)
{ {
var Item = NewPara.Content[Index]; var Item = NewPara.Content[Index];
PrevClass.Add_ToContent( PrevPos + 1 + Index, Item ); PrevClass.Add_ToContent(PrevPos + 1 + Index, Item);
if ( true === bNeedSelect ) if (true === bNeedSelect)
Item.Select_All(); Item.Select_All();
} }
if ( true === bNeedSelect ) if (true === bNeedSelect)
{ {
PrevClass.Selection.Use = true; PrevClass.Selection.Use = true;
PrevClass.Selection.StartPos = PrevPos + 1; PrevClass.Selection.StartPos = PrevPos + 1;
PrevClass.Selection.EndPos = PrevPos + 1 + NewElementsCount - 1; PrevClass.Selection.EndPos = PrevPos + 1 + NewElementsCount - 1;
for ( var Index = 0; Index < ParaNearPos.Classes.length - 2; Index++ ) for (var Index = 0; Index < ParaNearPos.Classes.length - 2; Index++)
{ {
var Class = ParaNearPos.Classes[Index]; var Class = ParaNearPos.Classes[Index];
var ClassPos = ParaNearPos.NearPos.ContentPos.Data[Index]; var ClassPos = ParaNearPos.NearPos.ContentPos.Data[Index];
...@@ -4000,7 +4016,7 @@ CDocumentContent.prototype = ...@@ -4000,7 +4016,7 @@ CDocumentContent.prototype =
this.Selection.EndPos = DstIndex; this.Selection.EndPos = DstIndex;
} }
if ( PrevClass.Correct_Content ) if (PrevClass.Correct_Content)
{ {
PrevClass.Correct_Content(); PrevClass.Correct_Content();
} }
...@@ -4015,14 +4031,14 @@ CDocumentContent.prototype = ...@@ -4015,14 +4031,14 @@ CDocumentContent.prototype =
// Нам надо разделить наш параграф в заданной позиции, если позиция в // Нам надо разделить наш параграф в заданной позиции, если позиция в
// начале или конце параграфа, тогда делить не надо // начале или конце параграфа, тогда делить не надо
Para.Cursor_MoveToNearPos( NearPos ); Para.Cursor_MoveToNearPos(NearPos);
Para.Selection_Remove(); Para.Selection_Remove();
if ( true === Para.Cursor_IsEnd() ) if (true === Para.Cursor_IsEnd())
{ {
bConcatE = false; bConcatE = false;
if ( 1 === ElementsCount && type_Paragraph === FirstElement.Element.GetType() && ( true === FirstElement.Element.Is_Empty() || true == FirstElement.SelectedAll ) ) if (1 === ElementsCount && type_Paragraph === FirstElement.Element.GetType() && ( true === FirstElement.Element.Is_Empty() || true == FirstElement.SelectedAll ))
{ {
bConcatS = false; bConcatS = false;
...@@ -4030,27 +4046,27 @@ CDocumentContent.prototype = ...@@ -4030,27 +4046,27 @@ CDocumentContent.prototype =
DstIndex++; DstIndex++;
} }
} }
else if ( true === Para.Cursor_IsStart() ) else if (true === Para.Cursor_IsStart())
{ {
bConcatS = false; bConcatS = false;
} }
else else
{ {
// Создаем новый параграф // Создаем новый параграф
var NewParagraph = new Paragraph( this.DrawingDocument, this, 0, 0, 0, 0, 0, this.bPresentation === true ); var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0, this.bPresentation === true);
Para.Split( NewParagraph ); Para.Split(NewParagraph);
this.Internal_Content_Add( DstIndex + 1, NewParagraph ); this.Internal_Content_Add(DstIndex + 1, NewParagraph);
ParaE = NewParagraph; ParaE = NewParagraph;
ParaEIndex = DstIndex + 1; ParaEIndex = DstIndex + 1;
} }
var StartIndex = 0; var StartIndex = 0;
if ( true === bConcatS ) if (true === bConcatS)
{ {
// Если мы присоединяем новый параграф, то и копируем все настройки параграфа (так делает Word) // Если мы присоединяем новый параграф, то и копируем все настройки параграфа (так делает Word)
ParaS.Concat( Elements[0].Element ); ParaS.Concat(Elements[0].Element);
ParaS.Set_Pr( Elements[0].Element.Pr ); ParaS.Set_Pr(Elements[0].Element.Pr);
StartIndex++; StartIndex++;
...@@ -4065,18 +4081,18 @@ CDocumentContent.prototype = ...@@ -4065,18 +4081,18 @@ CDocumentContent.prototype =
} }
var EndIndex = ElementsCount - 1; var EndIndex = ElementsCount - 1;
if ( true === bConcatE ) if (true === bConcatE)
{ {
var _ParaE = Elements[ElementsCount - 1].Element; var _ParaE = Elements[ElementsCount - 1].Element;
var TempCount = _ParaE.Content.length - 1; var TempCount = _ParaE.Content.length - 1;
_ParaE.Select_All(); _ParaE.Select_All();
_ParaE.Concat( ParaE ); _ParaE.Concat(ParaE);
_ParaE.Set_Pr( ParaE.Pr ); _ParaE.Set_Pr(ParaE.Pr);
this.Internal_Content_Add( ParaEIndex, _ParaE ); this.Internal_Content_Add(ParaEIndex, _ParaE);
this.Internal_Content_Remove( ParaEIndex + 1, 1 ); this.Internal_Content_Remove(ParaEIndex + 1, 1);
_ParaE.Selection.Use = true; _ParaE.Selection.Use = true;
_ParaE.Selection.StartPos = 0; _ParaE.Selection.StartPos = 0;
...@@ -4086,9 +4102,9 @@ CDocumentContent.prototype = ...@@ -4086,9 +4102,9 @@ CDocumentContent.prototype =
} }
for ( var Index = StartIndex; Index <= EndIndex; Index++ ) for (var Index = StartIndex; Index <= EndIndex; Index++)
{ {
this.Internal_Content_Add( DstIndex + Index, Elements[Index].Element ); this.Internal_Content_Add(DstIndex + Index, Elements[Index].Element);
this.Content[DstIndex + Index].Select_All(); this.Content[DstIndex + Index].Select_All();
} }
...@@ -4107,6 +4123,7 @@ CDocumentContent.prototype = ...@@ -4107,6 +4123,7 @@ CDocumentContent.prototype =
this.Selection.Use = true; this.Selection.Use = true;
this.Selection.Start = false; this.Selection.Start = false;
} }
}
}, },
Set_ParagraphAlign : function(Align) Set_ParagraphAlign : function(Align)
......
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