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

Исправлен баг с зацикливанием при пересчете (баг 25090). Исправлен баг с...

Исправлен баг с зацикливанием при пересчете (баг 25090). Исправлен баг с добавлением гиперссылки к тексту с комментарием (баг 25101). Исправлен баг с обновлением текущей позиции (баг 25092). Исправлен баг с залочинием параграфов, учавствующих в drag-n-drop (баг 25076). Исправлен баг с drag-n-drop в автофигурах и колонтитулах (баг 25123).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@57060 954022d7-b5bf-4e40-9824-e11837661b57
parent 613514c1
......@@ -983,6 +983,11 @@ ParaComment.prototype =
{
return new ParaComment(this.Start, this.CommentId);
},
Split : function()
{
return new ParaRun();
},
//-----------------------------------------------------------------------------------
// Функции пересчета
//-----------------------------------------------------------------------------------
......
......@@ -1120,7 +1120,7 @@ CDocument.prototype =
var bStart = this.FullRecalc.Start;
var StartIndex = this.FullRecalc.StartIndex;
var bStartNewSection = this.FullRecalc.NewSection;
var SectElement = this.SectionsInfo.Get_SectPr( StartIndex );
var OldPage = ( undefined !== this.Pages[PageIndex] ? this.Pages[PageIndex] : null );
......@@ -1945,6 +1945,14 @@ CDocument.prototype =
Internal_CheckCurPage : function()
{
if (docpostype_HdrFtr === this.CurPos.Type)
{
var CurHdrFtr = this.HdrFtr.CurHdrFtr;
var CurHdrFtr = this.CurHdrFtr;
if (null !== CurHdrFtr && -1 !== CurHdrFtr.RecalcInfo.CurPage)
this.CurPage = CurHdrFtr.RecalcInfo.CurPage;
}
if ( docpostype_DrawingObjects === this.CurPos.Type )
{
var ParaDrawing = this.DrawingObjects.getMajorParaDrawing();
......@@ -8394,16 +8402,10 @@ CDocument.prototype =
return;
}
// Заполним массив для проверки лока
var ArrayForCheck = [];
var Count = DocContent.Elements.length;
for ( var Index = 0; Index < Count; Index++ )
{
ArrayForCheck.push( DocContent.Elements[0].Element );
}
ArrayForCheck.push( Para );
// Если мы копируем, тогда не надо проверять выделенные параграфы, а если переносим, тогда проверяем
var CheckChangesType = (true !== bCopy ? changestype_Document_Content : changestype_None);
if ( false === this.Document_Is_SelectionLocked( changestype_None, { Type : changestype_2_ElementsArray_and_Type, Elements : ArrayForCheck, CheckType : changestype_Paragraph_Content } ) )
if ( false === this.Document_Is_SelectionLocked( CheckChangesType, { Type : changestype_2_ElementsArray_and_Type, Elements : [Para], CheckType : changestype_Paragraph_Content } ) )
{
// Если надо удаляем выделенную часть (пересчет отключаем на время удаления)
if ( true !== bCopy )
......@@ -8438,9 +8440,9 @@ CDocument.prototype =
// Заполняем выделенный контент
if ( docpostype_HdrFtr === this.CurPos.Type )
return this.HdrFtr.Get_SelectedContent(SelectedContent);
this.HdrFtr.Get_SelectedContent(SelectedContent);
else if ( docpostype_DrawingObjects === this.CurPos.Type )
return this.DrawingObjects.Get_SelectedContent(SelectedContent);
this.DrawingObjects.Get_SelectedContent(SelectedContent);
else
{
if ( true !== this.Selection.Use || this.Selection.Flag !== selectionflag_Common )
......
......@@ -211,7 +211,7 @@ CHeaderFooter.prototype =
{
this.RecalcInfo.CurPage = Page_abs;
if ( docpostype_Content === this.LogicDocument.CurPos.Type )
if ( docpostype_HdrFtr === this.LogicDocument.CurPos.Type )
{
// Обновляем интерфейс, чтобы обновить настройки колонтитула, т.к. мы могли попасть в новую секцию
this.LogicDocument.Document_UpdateSelectionState();
......
......@@ -1196,7 +1196,8 @@ ParaHyperlink.prototype =
Refresh_RecalcData : function(Data)
{
this.Paragraph.Refresh_RecalcData2(0);
if (undefined !== this.Paragraph && null !== this.Paragraph)
this.Paragraph.Refresh_RecalcData2(0);
},
Recalculate_MinMaxContentWidth : function(MinMax)
......
......@@ -1147,9 +1147,13 @@ Paragraph.prototype =
this.ParaEnd.Range = CurRange;
}
// Такое может случиться, если мы насильно переносим автофигуру на следующую страницу
if (recalcresult_NextPage === PRS.RecalcResult)
return;
CurRange++;
}
//-------------------------------------------------------------------------------------------------------------
// 1. Обновляем метрики данной строки
//-------------------------------------------------------------------------------------------------------------
......@@ -6104,9 +6108,39 @@ Paragraph.prototype =
StartContentPos = EndContentPos;
EndContentPos = Temp;
}
// Если у нас попадает комментарий с данную область, тогда удалим его.
// TODO: Переделать здесь, когда комментарии смогут лежать во всех классах (например в Hyperlink)
var StartPos = StartContentPos.Get(0);
var EndPos = EndContentPos.Get(0);
var CommentsToDelete = {};
for (var Pos = StartPos; Pos <= EndPos; Pos++)
{
var Item = this.Content[Pos];
if (para_Comment === Item.Type)
CommentsToDelete[Item.CommentId] = true;
}
for (var CommentId in CommentsToDelete)
{
this.LogicDocument.Remove_Comment( CommentId, true );
}
// Еще раз обновим метки
StartContentPos = this.Get_ParaContentPos(true, true);
EndContentPos = this.Get_ParaContentPos(true, false);
if ( StartContentPos.Compare(EndContentPos) > 0 )
{
var Temp = StartContentPos;
StartContentPos = EndContentPos;
EndContentPos = Temp;
}
StartPos = StartContentPos.Get(0);
EndPos = EndContentPos.Get(0);
// TODO: Как только избавимся от ParaEnd, здесь надо будет переделать.
if ( this.Content.length - 1 === EndPos && true === this.Selection_CheckParaEnd() )
......
......@@ -1698,6 +1698,7 @@ ParaRun.prototype =
{
Para.Recalculate_Drawing_AddPageBreak( 0, 0, true );
PRS.RecalcResult = recalcresult_NextPage;
PRS.NewRange = true;
return;
}
else
......@@ -1706,6 +1707,7 @@ ParaRun.prototype =
{
Para.Recalculate_Drawing_AddPageBreak( CurLine, CurPage, false );
PRS.RecalcResult = recalcresult_NextPage;
PRS.NewRange = true;
return;
}
else
......
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