Commit bc7964f3 authored by Anna.Pavlova's avatar Anna.Pavlova Committed by Alexander.Trofimov

Поправлены баги с перемещением по стрелкам

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@55841 954022d7-b5bf-4e40-9824-e11837661b57
parent 37be95b8
......@@ -705,7 +705,6 @@ ParaMath.prototype =
this.Paragraph.Refresh_RecalcData2(0);
},
Recalculate_MinMaxContentWidth : function(MinMax)
{
// TODO: Если формула не измерена, тогда здесь её надо измерить
......@@ -757,6 +756,50 @@ ParaMath.prototype =
}
},
//-----------------------------------------------------------------------------------
// Функция для работы с дефолтными текстовыми настройками и argSize для формулы
//-----------------------------------------------------------------------------------
ApplyArgSize : function(oWPrp)
{
var tPrp = new CTextPr();
var defaultWPrp =
{
FontFamily: {Name : "Cambria Math", Index : -1 },
FontSize: 11,
Italic: true,
Bold: false,
RFonts: {},
Lang: {}
};
tPrp.Merge(defaultWPrp);
tPrp.Merge(oWPrp);
var FSize = tPrp.FontSize;
if(this.argSize == -1)
{
//aa: 0.0013 bb: 0.66 cc: 0.5
//aa: 0.0009 bb: 0.68 cc: 0.26
FSize = 0.0009*FSize*FSize + 0.68*FSize + 0.26;
//FSize = 0.001*FSize*FSize + 0.723*FSize - 1.318;
//FSize = 0.0006*FSize*FSize + 0.743*FSize - 1.53;
}
else if(this.argSize == -2)
{
// aa: -0.0004 bb: 0.66 cc: 0.87
// aa: -0.0014 bb: 0.71 cc: 0.39
// aa: 0 bb: 0.63 cc: 1.11
//FSize = 0.63*FSize + 1.11;
FSize = -0.0004*FSize*FSize + 0.66*FSize + 0.87;
//tPrp.FontSize *= 0.473;
}
tPrp.FontSize = FSize;
oWPrp.Merge(tPrp);
},
//-----------------------------------------------------------------------------------
// Функции отрисовки
//-----------------------------------------------------------------------------------
Draw_HighLights : function(PDSH)
......@@ -932,6 +975,15 @@ ParaMath.prototype =
var Pos = ContentPos.Get(Depth);
this.State.ContentPos = Pos;
console.log("Set_ParaContentPos");
var str = "";
for(var i = 0; i < ContentPos.Data.length; i++)
{
str += ContentPos.Data[i] + " ";
}
console.log(str);
this.Root.Set_ParaContentPos(ContentPos, Depth);
},
Get_PosByElement : function(Class, ContentPos, Depth, UseRange, Range, Line)
......@@ -950,6 +1002,16 @@ ParaMath.prototype =
{
// TODO: ParaMath.Get_LeftPos
var result = this.Root.Get_LeftPos(SearchPos, ContentPos, Depth, UseContentPos, false);
console.log("Get_LeftPos");
var str = "";
for(var i = 0; i < SearchPos.Pos.Data.length; i++)
{
str += SearchPos.Pos.Data[i] + " ";
}
console.log(str);
return result;
},
......
......@@ -745,10 +745,12 @@ ParaRun.prototype =
}
}
return { X : X, Y : TargetY, Height : Height, Internal : { Line : CurLine, Page : CurPage, Range : CurRange } };
}
else
return { X : X, Y : Y, PageNum : CurPage + Para.Get_StartPage_Absolute(), Internal : { Line : CurLine, Page : CurPage, Range : CurRange } };
}
return { X : X, Y: Y, Internal : { Line : CurLine, Page : CurPage, Range : CurRange } };
......@@ -4081,7 +4083,7 @@ ParaRun.prototype =
TextPr.Merge(MPrp); // bold, italic
}
this.Parent.applyArgSize(TextPr);
this.Parent.Composition.Parent.ApplyArgSize(TextPr);
}
else
TextPr.Merge( this.Pr ); // Мержим прямые настройки данного рана
......@@ -6413,7 +6415,6 @@ CParaRunLine.prototype =
return NewLine;
},
Compare : function(OtherLine, CurRange)
{
// Сначала проверим наличие данного отрезка в обеих строках
......@@ -6765,7 +6766,7 @@ ParaRun.prototype.Math_Update_Cursor = function(X, Y, CurPage, UpdateTarget)
{
this.Paragraph.DrawingDocument.SetTargetSize(sizeCursor);
//Para.DrawingDocument.UpdateTargetFromPaint = true;
this.Paragraph.DrawingDocument.UpdateTarget( X, Y, this.Paragraph.Get_StartPage_Absolute() + CurPage );
this.Paragraph.DrawingDocument.UpdateTarget(X, Y, this.Paragraph.Get_StartPage_Absolute() + CurPage );
//Para.DrawingDocument.UpdateTargetFromPaint = false;
}
......
......@@ -637,9 +637,16 @@ function CAccent()
this.kind = MATH_ACCENT;
this.operator = new COperator(OPER_ACCENT);
this.Pr =
{
code: null,
typeOper: null
};
this.code = null; // храним код буквы и тип здесь
this.typeOper = null; // т.к в класах, которые вызываем, не учитываем случаи, когда элементы (стрелки/скобки) переворачиваются
this.loc = LOCATION_TOP;
CCharacter.call(this);
}
extend(CAccent, CCharacter);
......@@ -1139,9 +1146,19 @@ CAccent.prototype.init = function(properties)
this.operator = operator;
this.operator.relate(this);
////
// TO DO
// убрать
//
this.typeOper = typeOper;
this.code = codeChr;
////
this.Pr.typeOper = typeOper;
this.Pr.code = codeChr;
this.setDimension(1, 1);
this.setContent();
......@@ -1165,7 +1182,7 @@ CAccent.prototype.setPosition = function(pos)
// выставить правильно смещение для остальных значков
// для обычных текстовых значков (ACCENT_SIGN) выставлено
if(this.typeOper == ACCENT_SIGN)
if(this.Pr.typeOper == ACCENT_SIGN)
y1 = this.pos.y - this.shiftOperator + this.size.ascent; //shiftOperator to "CCharacter"
else
y1 = this.pos.y;
......
......@@ -26,6 +26,8 @@ function CMathBase()
this.SelectEnd_X = 0;
this.SelectEnd_Y = 0;
this.bSelectionUse = false;
this.nRow = 0;
this.nCol = 0;
......@@ -62,6 +64,10 @@ function CMathBase()
}
CMathBase.prototype =
{
init_2: function(props)
{
this.Pr = Common_CopyObj(props);
},
setContent: function()
{
this.elements = new Array();
......@@ -1328,6 +1334,12 @@ CMathBase.prototype =
this.CurPos_Y = CurPos_Y;
}
/*this.SelectStart_X = this.CurPos_X;
this.SelectStart_Y = this.CurPos_Y;
this.SelectEnd_X = this.CurPos_X;
this.SelectEnd_Y = this.CurPos_Y;*/
Depth += 2;
......@@ -1401,7 +1413,14 @@ CMathBase.prototype =
},
GetSelectContent: function()
{
return this.elements[this.SelectStart_X][this.SelectStart_Y].GetSelectContent();
var result;
if(this.bSelectionUse)
result = this.elements[this.SelectStart_X][this.SelectStart_Y].GetSelectContent();
else
result = this.elements[this.CurPos_X][this.CurPos_Y].GetSelectContent();
return result;
},
Selection_DrawRange: function(CurLine, CurPage, SelectionDraw) // первые два параметра нужны только для аналогичной функции в ParaRun
{
......@@ -1423,6 +1442,7 @@ CMathBase.prototype =
if(start_X !== -1 && start_Y !== -1)
this.elements[start_X][start_Y].Selection_Remove();
this.bSelectionUse = false;
},
Get_LeftPos: function(SearchPos, ContentPos, Depth, UseContentPos, EndRun)
{
......@@ -1447,7 +1467,7 @@ CMathBase.prototype =
while(CurPos_Y >= 0)
{
var bJDraw = this.elements[CurPos_X][CurPos_Y].IsJustDraw(),
usePlh = bUseContent && this.elements[CurPos_X][CurPos_Y].IsPlaceholder();
usePlh = !bJDraw && bUseContent && this.elements[CurPos_X][CurPos_Y].IsPlaceholder();
if(!bJDraw && ! usePlh)
{
......@@ -1500,7 +1520,7 @@ CMathBase.prototype =
while(CurPos_Y < this.nCol)
{
var bJDraw = this.elements[CurPos_X][CurPos_Y].IsJustDraw(),
usePlh = bUseContent && this.elements[CurPos_X][CurPos_Y].IsPlaceholder();
usePlh = !bJDraw && bUseContent && this.elements[CurPos_X][CurPos_Y].IsPlaceholder();
if(!bJDraw && ! usePlh)
{
......@@ -1530,6 +1550,10 @@ CMathBase.prototype =
return result;
},
IsPlaceholder: function()
{
return false;
}
//////////////////////////
......
......@@ -59,7 +59,6 @@ CBorderBox.prototype.init = function(props)
this.setDimension(1, 1);
this.setContent();
/// вызов этой функции обязательно в конце
this.WriteContentsToHistory();
}
......
......@@ -53,10 +53,6 @@ CFraction.prototype.init = function(props)
/// вызов этой функции обязательно в конце
this.WriteContentsToHistory();
}
CFraction.prototype.init_2 = function(props)
{
}
CFraction.prototype.getType = function()
{
......
......@@ -823,6 +823,9 @@ CMPrp.prototype =
// 1. (!!) повтор IsIncline, IsHighElement
// TODO List
// посмотреть баг, когда выходим за пределы мат объекта и добавляем букву
function CMathContent()
{
this.Id = g_oIdCounter.Get_NewId();
......@@ -862,6 +865,7 @@ function CMathContent()
///////////////////////////////
this.bSelectionUse = false;
this.SelectStartPos = 0;
this.SelectEndPos = 0;
......@@ -5809,6 +5813,7 @@ CMathContent.prototype =
},
/// For Para Math
Recalculate_CurPos : function(_X, Y, CurrentRun, _CurRange, _CurLine, _CurPage, UpdateCurPos, UpdateTarget, ReturnTarget)
{
var result;
......@@ -5846,7 +5851,6 @@ CMathContent.prototype =
//Para.DrawingDocument.UpdateTargetFromPaint = true;
this.Composition.Parent.Paragraph.DrawingDocument.UpdateTarget( _X, Y, this.Composition.Parent.Paragraph.Get_StartPage_Absolute() + _CurPage );
//console.log("X of placeholder " + _X);
result = {X: _X, Y: Y};
}
......@@ -5917,10 +5921,16 @@ CMathContent.prototype =
}
}
this.bSelectionUse = true;
},
GetSelectContent: function()
{
var startPos = this.SelectStartPos,
var startPos, endPos;
if(this.bSelectionUse)
{
startPos = this.SelectStartPos;
endPos = this.SelectEndPos;
if(startPos > endPos)
......@@ -5929,6 +5939,10 @@ CMathContent.prototype =
startPos = endPos;
endPos = temp;
}
}
else
startPos = endPos = this.CurPos;
var bEqual = startPos == endPos,
bNotSelectComp = bEqual ? this.content[startPos].typeObj === MATH_COMP && this.content[startPos].IsSelectEmpty() : false;
......@@ -5936,13 +5950,9 @@ CMathContent.prototype =
var result;
if(bNotSelectComp)
{
result = this.content[startPos].GetSelectContent(); // startPos == endPos
}
else
{
result = {Content: this, Start: startPos, End: endPos};
}
return result;
......@@ -6124,6 +6134,8 @@ CMathContent.prototype =
Set_ParaContentPos: function(ContentPos, Depth)
{
this.CurPos = ContentPos.Get(Depth);
/*this.SelectStartPos = this.CurPos;
this.SelectEndPos = this.CurPos;*/
Depth++;
......@@ -6352,6 +6364,8 @@ CMathContent.prototype =
this.SelectStartPos = this.CurPos;
this.SelectEndPos = this.CurPos;
this.bSelectionUse = false;
},
getElem: function(nNum)
{
......
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