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

Исправлен баг с удалением элемента параграфа, в который совершается...

Исправлен баг с удалением элемента параграфа, в который совершается drag-n-drop (баг 27108). Исправлен баг с неправильным рассчетом расстояния между строк для параграфа с формулами(баг 26809).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@59031 954022d7-b5bf-4e40-9824-e11837661b57
parent 11a2e083
......@@ -885,6 +885,11 @@ ParaComment.prototype =
return true;
},
Is_CheckingNearestPos : function()
{
return false;
},
Get_CompiledTextPr : function()
{
return null;
......
......@@ -136,6 +136,14 @@ ParaHyperlink.prototype.Is_Empty = function()
return true;
};
ParaHyperlink.prototype.Is_CheckingNearestPos = function()
{
if (this.NearPosArray.length > 0)
return true;
return false;
};
ParaHyperlink.prototype.Is_StartFromNewLine = function()
{
if ( this.Content.length < 0 )
......
......@@ -117,6 +117,11 @@ ParaMath.prototype.Is_Empty = function()
return false;
};
ParaMath.prototype.Is_CheckingNearestPos = function()
{
return this.Root.Is_CheckingNearestPos();
};
ParaMath.prototype.Is_StartFromNewLine = function()
{
return false;
......@@ -540,6 +545,7 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
RPI.bInline = this.bInline;
RPI.bChangeInline = this.bChangeInline;
RPI.NeedResize = this.NeedResize;
RPI.PRS = PRS;
var ArgSize = new CMathArgSize();
......@@ -558,10 +564,15 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
this.Root.setPosition(pos);
}
else
{
this.Root.Resize_2(g_oTextMeasurer, null, this, RPI/*recalculate properties info*/, ArgSize);
}
this.NeedResize = false;
var OldLineTextAscent = PRS.LineTextAscent;
var OldLineTextAscent2 = PRS.LineTextAscent2;
var OldLineTextDescent = PRS.LineTextDescent;
this.Width = this.Root.size.width;
this.Height = this.Root.size.height;
......@@ -665,6 +676,12 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
if ( PRS.LineDescent < this.Descent )
PRS.LineDescent = this.Descent;
}
else
{
PRS.LineTextAscent = OldLineTextAscent ;
PRS.LineTextAscent2 = OldLineTextAscent2;
PRS.LineTextDescent = OldLineTextDescent;
}
this.protected_FillRange(CurLine, CurRange, RangeStartPos, RangeEndPos);
......
......@@ -2259,7 +2259,7 @@ Paragraph.prototype =
// TODO: Как только избавимся от para_End переделать здесь
// Последние 2 элемента не удаляем (один для para_End, второй для всего остального)
if ( StartPos < this.Content.length - 2 && true === this.Content[StartPos].Is_Empty() )
if (StartPos < this.Content.length - 2 && true === this.Content[StartPos].Is_Empty() && true !== this.Content[StartPos].Is_CheckingNearestPos())
{
if ( this.Selection.StartPos === this.Selection.EndPos )
this.Selection.Use = false;
......@@ -2288,7 +2288,7 @@ Paragraph.prototype =
// TODO: Как только избавимся от para_End переделать здесь
// Последние 2 элемента не удаляем (один для para_End, второй для всего остального)
if ( EndPos < this.Content.length - 2 && true === this.Content[EndPos].Is_Empty() )
if (EndPos < this.Content.length - 2 && true === this.Content[EndPos].Is_Empty() && true !== this.Content[EndPos].Is_CheckingNearestPos())
{
this.Internal_Content_Remove( EndPos );
......@@ -2302,7 +2302,7 @@ Paragraph.prototype =
this.Content[StartPos].Remove(nCount, bOnAddText);
// Мы не удаляем последний элемент с ParaEnd
if ( StartPos < this.Content.length - 2 && true === this.Content[StartPos].Is_Empty() )
if (StartPos < this.Content.length - 2 && true === this.Content[StartPos].Is_Empty() && true !== this.Content[StartPos].Is_CheckingNearestPos())
{
if ( this.Selection.StartPos === this.Selection.EndPos )
this.Selection.Use = false;
......@@ -4825,7 +4825,7 @@ Paragraph.prototype =
{
var CurElement = this.Content[CurPos];
if ((para_Hyperlink === CurElement.Type || para_Math === CurElement.Type) && true === CurElement.Is_Empty())
if ((para_Hyperlink === CurElement.Type || para_Math === CurElement.Type) && true === CurElement.Is_Empty() && true !== CurElement.Is_CheckingNearestPos())
{
this.Internal_Content_Remove( CurPos );
CurPos++;
......
......@@ -245,6 +245,8 @@ ParaRun.prototype.Is_Empty = function(Props)
}
};
ParaRun.prototype.Is_CheckingNearestPos = ParaHyperlink.prototype.Is_CheckingNearestPos;
// Начинается ли данный ран с новой строки
ParaRun.prototype.Is_StartFromNewLine = function()
{
......@@ -7885,7 +7887,23 @@ ParaRun.prototype.Math_Recalculate = function(oMeasure, RPI, WidthPoints)
this.size.ascent = ascent;
this.size.height = ascent + descent;
// Запрашиваем текущие метрики шрифта, под TextAscent мы будем понимать ascent + linegap(которые записаны в шрифте)
this.TextHeight = g_oTextMeasurer.GetHeight();
this.TextDescent = Math.abs( g_oTextMeasurer.GetDescender() );
this.TextAscent = this.TextHeight - this.TextDescent;
this.TextAscent2 = g_oTextMeasurer.GetAscender();
}
// Пересчитаем метрику строки относительно размера данного текста
if (RPI.PRS.LineTextAscent < this.TextAscent)
RPI.PRS.LineTextAscent = this.TextAscent;
if (RPI.PRS.LineTextAscent2 < this.TextAscent2)
RPI.PRS.LineTextAscent2 = this.TextAscent2;
if (RPI.PRS.LineTextDescent < this.TextDescent)
RPI.PRS.LineTextDescent = this.TextDescent;
}
ParaRun.prototype.Math_Update_Cursor = function(X, Y, CurPage, UpdateTarget)
{
......
......@@ -39,7 +39,7 @@ function CRPI()
this.bNaryInline = false; /*для CDegreeSupSub внутри N-арного оператора, этот флаг необходим, чтобы итераторы максимально близко друг к другу расположить*/
this.bEqqArray = false; /*для амперсанда*/
this.bMathFunc = false;
this.PRS = null;
}
CRPI.prototype.Copy = function()
{
......@@ -52,6 +52,7 @@ CRPI.prototype.Copy = function()
RPI.bNaryInline = this.bNaryInline;
RPI.bEqqArray = this.bEqqArray;
RPI.bMathFunc = this.bMathFunc;
RPI.PRS = this.PRS;
return RPI;
}
......@@ -836,7 +837,7 @@ CMathContent.prototype =
if(this.content[i].Type == para_Math_Composition)
this.content[i].Resize_2(oMeasure, this, ParaMath, RPI, ArgSize);
else
this.content[i].Math_Recalculate(oMeasure, this, ParaMath.Paragraph, RPI, ArgSize, null);
this.content[i].Math_Recalculate(oMeasure, RPI, null);
}
},
getWidthsPoints: function()
......@@ -4463,4 +4464,5 @@ CMathContent.prototype.private_SetNeedResize = function()
{
if (null !== this.ParaMath)
this.ParaMath.SetNeedResize();
};
\ No newline at end of file
};
CMathContent.prototype.Is_CheckingNearestPos = ParaHyperlink.prototype.Is_CheckingNearestPos;
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