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