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

Переделано добавление формулы в формулу. Добавлена корректировка контента...

Переделано добавление формулы в формулу. Добавлена корректировка контента формулы после ее добавления/чтения (старый вариант удален). Временно убран вариант класса CRadical, при котором контент степени рисовался внутри корня.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@58811 954022d7-b5bf-4e40-9824-e11837661b57
parent b8809161
...@@ -125,7 +125,6 @@ function CTableId() ...@@ -125,7 +125,6 @@ function CTableId()
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
this.Read_Class_FromBinary = function(Reader) this.Read_Class_FromBinary = function(Reader)
{ {
var props = null;
var ElementType = Reader.GetLong(); var ElementType = Reader.GetLong();
var Element = null; var Element = null;
......
...@@ -3220,6 +3220,7 @@ CDocument.prototype = ...@@ -3220,6 +3220,7 @@ CDocument.prototype =
Item.CurPos.RealY = Item.CurPos.Y; Item.CurPos.RealY = Item.CurPos.Y;
} }
this.Document_UpdateSelectionState();
this.Document_UpdateInterfaceState(); this.Document_UpdateInterfaceState();
} }
......
...@@ -164,80 +164,43 @@ ParaMath.prototype.Add = function(Item) ...@@ -164,80 +164,43 @@ ParaMath.prototype.Add = function(Item)
this.NeedResize = true; this.NeedResize = true;
var Type = Item.Type; var Type = Item.Type;
var oContent = this.GetSelectContent(); var oSelectedContent = this.GetSelectContent();
var oStartContent = oContent.Content.content[oContent.Start];
var oEndContent = oContent.Content.content[oContent.End]; var oContent = oSelectedContent.Content;
var StartPos = oSelectedContent.Start;
var Run = oContent.content[StartPos];
// Мы вставляем только в Run
if (para_Math_Run !== Run.Type)
return;
if ( para_Text === Type) if (para_Text === Type)
{ {
var oText = new CMathText(false); var oText = new CMathText(false);
oText.add(Item.Value); oText.add(Item.Value);
oStartContent.Add(oText, true); Run.Add(oText, true);
} }
else if ( para_Space === Type ) else if (para_Space === Type)
{ {
//var oSpace = new ParaSpace(1);
var oText = new CMathText(false); var oText = new CMathText(false);
oText.addTxt(" "); oText.addTxt(" ");
oStartContent.Add(oText, true); Run.Add(oText, true);
} }
else if ( para_Math === Type ) else if (para_Math === Type)
{ {
if (oStartContent.Type == para_Math_Run && oStartContent.IsPlaceholder()) // Нам нужно разделить данный Run на 2 части
{ var RightRun = Run.Split2(Run.State.ContentPos);
var Items = [];
Items.push(oContent.Content.content[0]); oContent.Internal_Content_Add(StartPos + 1, RightRun, false);
oContent.Content.content.splice( 0, 1 ); oContent.CurPos = StartPos;
History.Add(oContent.Content, {Type: historyitem_Math_RemoveItem, Items:Items, Pos: 0}); oContent.Load_FromMenu(Item.Menu, this.Paragraph);
oContent.CurPos = StartPos + 2; // позиция RightRun
oContent.Content.Load_FromMenu(Item.Menu, this.Paragraph); RightRun.Cursor_MoveToStartPos();
}
else
{
var nPosStart = oStartContent.State.ContentPos,
nLenStart = oStartContent.Content.length,
nPosEnd = oEndContent.State.ContentPos;
if(nPosStart != nLenStart) //вставка идет в mathcontent
{
var oMRun = new ParaRun(this.Paragraph, true);
oMRun.Pr = oStartContent.Pr;
for (var i=nLenStart-1; i>=nPosStart; i--)
{
var Pos = oMRun.Content.length;
var EndPos = Pos + 1;
var oItem = oStartContent.Content[i];
oMRun.Add(oItem, true);
oStartContent.Remove_FromContent(i, 1, false);
}
oStartContent.Selection_Remove();
oMRun.State.ContentPos = 0;
}
oContent.Content.Load_FromMenu(Item.Menu, this.Paragraph);
if(nPosStart != nLenStart)
{
var items = [];
oContent.Content.Add(oMRun,oContent.Content.CurPos+1);
items.push(oMRun);
var Pos = oContent.Content.CurPos,
PosEnd = Pos + 1;
History.Add(oContent.Content, {Type: historyitem_Math_AddItem, Items: items, Pos: Pos, PosEnd: PosEnd});
}
else
oContent.Content.CurPos++;
}
oContent.Content.SetRunEmptyToContent(true);
} }
oContent.Content.Correct_Content(); // Корректируем данный контент
oContent.Correct_Content(true);
}; };
ParaMath.prototype.Remove = function(Direction, bOnAddText) ParaMath.prototype.Remove = function(Direction, bOnAddText)
......
...@@ -564,7 +564,8 @@ ParaRun.prototype.Remove_FromContent = function(Pos, Count, UpdatePosition) ...@@ -564,7 +564,8 @@ ParaRun.prototype.Remove_FromContent = function(Pos, Count, UpdatePosition)
ContentPos.Data[Depth] = Math.max( 0 , Pos ); ContentPos.Data[Depth] = Math.max( 0 , Pos );
} }
this.Paragraph.SpellChecker.Update_OnRemove( this, Pos, Count ); if(null !== this.Paragraph)
this.Paragraph.SpellChecker.Update_OnRemove( this, Pos, Count );
// Обновляем позиции меток совместного редактирования // Обновляем позиции меток совместного редактирования
this.CollaborativeMarks.Update_OnRemove( Pos, Count ); this.CollaborativeMarks.Update_OnRemove( Pos, Count );
......
This diff is collapsed.
...@@ -1267,11 +1267,6 @@ CMathContent.prototype = ...@@ -1267,11 +1267,6 @@ CMathContent.prototype =
return result; return result;
}, },
setPlaceholderAfterRemove: function() // чтобы не выставлялся тагет при вставке, когда заселекчен весь контент и мы добавляем, например, другой мат элемент
{
if(this.content.length == 1 && !this.bRoot )//только CEmpty
this.fillPlaceholders();
},
setCtrPrp: function() setCtrPrp: function()
{ {
...@@ -1509,7 +1504,6 @@ CMathContent.prototype = ...@@ -1509,7 +1504,6 @@ CMathContent.prototype =
else else
startPos = endPos = this.CurPos; startPos = endPos = this.CurPos;
var bEqual = startPos == endPos, var bEqual = startPos == endPos,
bNotSelectComp = bEqual ? this.content[startPos].Type === para_Math_Composition && this.content[startPos].IsSelectEmpty() : false; bNotSelectComp = bEqual ? this.content[startPos].Type === para_Math_Composition && this.content[startPos].IsSelectEmpty() : false;
...@@ -2916,7 +2910,6 @@ CMathContent.prototype = ...@@ -2916,7 +2910,6 @@ CMathContent.prototype =
case 18: props = {ctrPrp: new CTextPr(), type:SQUARE_RADICAL, degHide:true}; case 18: props = {ctrPrp: new CTextPr(), type:SQUARE_RADICAL, degHide:true};
var oRadical = new CRadical(props); var oRadical = new CRadical(props);
this.CreateRadical(oRadical, this, null, null); this.CreateRadical(oRadical, this, null, null);
oRadical.Iterator = null;
break; break;
case 19: props = {ctrPrp: new CTextPr(), type:DEGREE_RADICAL}; case 19: props = {ctrPrp: new CTextPr(), type:DEGREE_RADICAL};
var oRadical = new CRadical(props); var oRadical = new CRadical(props);
...@@ -2945,7 +2938,6 @@ CMathContent.prototype = ...@@ -2945,7 +2938,6 @@ CMathContent.prototype =
var oRadical = new CRadical(props); var oRadical = new CRadical(props);
this.CreateElem(oRadical, oElemNum); this.CreateElem(oRadical, oElemNum);
var oElem = oRadical.getBase(); var oElem = oRadical.getBase();
oRadical.Iterator = null;
props = {ctrPrp: new CTextPr(), type:DEGREE_SUPERSCRIPT}; props = {ctrPrp: new CTextPr(), type:DEGREE_SUPERSCRIPT};
var oDegree = new CDegree(props); var oDegree = new CDegree(props);
...@@ -2963,7 +2955,6 @@ CMathContent.prototype = ...@@ -2963,7 +2955,6 @@ CMathContent.prototype =
case 23: props = {ctrPrp: new CTextPr(), type:SQUARE_RADICAL, degHide:true}; case 23: props = {ctrPrp: new CTextPr(), type:SQUARE_RADICAL, degHide:true};
var oRadical = new CRadical(props); var oRadical = new CRadical(props);
this.CreateElem(oRadical, this); this.CreateElem(oRadical, this);
oRadical.Iterator = null;
var oElem = oRadical.getBase(); var oElem = oRadical.getBase();
props = {ctrPrp: new CTextPr(), type:DEGREE_SUPERSCRIPT}; props = {ctrPrp: new CTextPr(), type:DEGREE_SUPERSCRIPT};
......
...@@ -394,7 +394,6 @@ CMathRadicalPr.prototype.Read_FromBinary = function(Reader) ...@@ -394,7 +394,6 @@ CMathRadicalPr.prototype.Read_FromBinary = function(Reader)
this.degHide = Reader.GetBool(); this.degHide = Reader.GetBool();
}; };
function CRadical(props) function CRadical(props)
{ {
CRadical.superclass.constructor.call(this); CRadical.superclass.constructor.call(this);
...@@ -441,21 +440,29 @@ CRadical.prototype.Resize = function(oMeasure, Parent, ParaMath, RPI, ArgSize) ...@@ -441,21 +440,29 @@ CRadical.prototype.Resize = function(oMeasure, Parent, ParaMath, RPI, ArgSize)
{ {
this.setDimension(1, 1); this.setDimension(1, 1);
if(this.Iterator !== null) // TODO: IlyaKirillov: Пока убрал данный вариант, потому что у обычного пользователя он
{ // не встретится с вероятностью 99%, а обработка данного случая в текущей реализации
var Item = new CMathBase(true); // приводит к багам в совместном редактировании.
Item.setDimension(1, 2);
Item.elements[0][0] = this.Iterator; // if(this.Iterator !== null)
Item.elements[0][1] = this.Base; // {
// var Item = new CMathBase(true);
//Item.addMCToContent(this.Iterator, this.Base); // Item.setDimension(1, 2);
// Item.elements[0][0] = this.Iterator;
this.elements[0][0] = Item; // Item.elements[0][1] = this.Base;
} //
else // //Item.addMCToContent(this.Iterator, this.Base);
{ //
this.elements[0][0] = this.Base; // this.elements[0][0] = Item;
} // }
// else
// {
// this.elements[0][0] = this.Base;
// }
this.elements[0][0] = this.Base;
//---------------------
this.RealBase = this.elements[0][0]; this.RealBase = this.elements[0][0];
} }
......
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