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

Сделан drag-n-drop формулы в формулу. Сделан запрет на перенос в формулу не формулы.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@58829 954022d7-b5bf-4e40-9824-e11837661b57
parent 17323484
......@@ -8676,9 +8676,60 @@ CDocument.prototype =
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();
return;
}
// Если надо удаляем выделенную часть (пересчет отключаем на время удаления)
if ( true !== bCopy )
{
this.TurnOffRecalc = true;
this.Remove(1, false, false, false);
this.TurnOffRecalc = false;
}
this.Selection_Remove();
var NewMathRun = MathRun.Split2(ParaNearPos.NearPos.ContentPos.Data[ParaNearPos.NearPos.ContentPos.Depth - 1]);
var MathContent = ParaNearPos.Classes[ParaNearPos.Classes.length - 2];
var MathContentPos = MathContent.CurPos; // TODO: текущая позиция выставилась в функции Check_NearestPos
MathContent.Add_ToContent(MathContentPos + 1, NewMathRun);
MathContent.Insert_MathContent(Element.Content[0].Root, MathContentPos + 1);
this.Recalculate();
this.Document_UpdateSelectionState();
this.Document_UpdateInterfaceState();
this.Document_UpdateRulersState();
return;
}
else if (para_Run !== LastClass.Type)
{
History.Remove_LastPoint();
return;
}
// Если мы копируем, тогда не надо проверять выделенные параграфы, а если переносим, тогда проверяем
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 } ) )
{
// Если надо удаляем выделенную часть (пересчет отключаем на время удаления)
......
......@@ -393,16 +393,14 @@ ParaMath.prototype.Clear_TextPr = function()
ParaMath.prototype.Check_NearestPos = function(ParaNearPos, Depth)
{
/*var MathNearPos = new CParagraphElementNearPos();
MathNearPos.NearPos = ParaNearPos.NearPos;
MathNearPos.Depth = Depth;
this.Selection_Remove();
this.Set_ParaContentPos(ParaNearPos.NearPos.ContentPos, Depth);
// CParagraphNearPos for ParaNearPos
this.NearPosArray.push( MathNearPos );
ParaNearPos.Classes.push( this );
var oSelectedContent = this.GetSelectContent();
var oContent = oSelectedContent.Content;
var CurPos = ParaNearPos.NearPos.ContentPos.Get(Depth);
this.Content[CurPos].Check_NearestPos( ParaNearPos, Depth + 1 );*/
ParaNearPos.Classes.push(oContent);
ParaNearPos.Classes.push(oContent.content[oContent.CurPos]);
};
ParaMath.prototype.Get_DrawingObjectRun = function(Id)
......
......@@ -395,7 +395,7 @@ CBorderBox.prototype.Read_FromBinary2 = function( Reader )
this.Id = Reader.GetString2();
this.baseContent = g_oTableId.Get_ById(Reader.GetString2());
this.CtrlPr.Read_FromBinary(Reader);
this.CtrPrp.Read_FromBinary(Reader);
this.Pr.Read_FromBinary(Reader);
this.fillContent();
......
......@@ -2640,7 +2640,9 @@ CMathContent.prototype =
{
this.content.splice(Data.Pos, Data.EndPos - Data.Pos + 1);
this.ParaMath.SetNeedResize();
if (null !== this.ParaMath)
this.ParaMath.SetNeedResize();
break;
}
case historyitem_Math_RemoveItem:
......@@ -2652,7 +2654,9 @@ CMathContent.prototype =
this.content = Array_start.concat(Data.Items, Array_end);
this.ParaMath.SetNeedResize();
if (null !== this.ParaMath)
this.ParaMath.SetNeedResize();
break;
}
}
......@@ -2672,14 +2676,18 @@ CMathContent.prototype =
this.content = Array_start.concat(Data.Items, Array_end);
this.ParaMath.SetNeedResize();
if (null !== this.ParaMath)
this.ParaMath.SetNeedResize();
break;
}
case historyitem_Math_RemoveItem:
{
this.content.splice(Data.Pos, Data.EndPos - Data.Pos + 1);
this.ParaMath.SetNeedResize();
if (null !== this.ParaMath)
this.ParaMath.SetNeedResize();
break;
}
}
......@@ -2802,6 +2810,25 @@ CMathContent.prototype =
if(this.ParaMath !== null)
this.ParaMath.Refresh_RecalcData(); // Refresh_RecalcData сообщает родительскому классу, что у него произошли изменения, нужно пересчитать
},
Insert_MathContent : function(oMathContent, Pos)
{
if (undefined === Pos)
Pos = this.CurPos;
var nCount = oMathContent.content.length;
for (var nIndex = 0; nIndex < nCount; nIndex++)
{
this.Internal_Content_Add(Pos + nIndex, oMathContent.content[nIndex], false);
}
if (null !== this.ParaMath)
this.ParaMath.SetNeedResize();
this.CurPos = Pos + 1 + nCount;
this.Correct_Content(true);
},
Load_FromMenu: function(Type, Paragraph)
{
var oFName;
......
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