Commit e8f81b28 authored by Ilya Kirillov's avatar Ilya Kirillov

Fix bug #33185 Has been processed a special case when a document ends on a...

Fix bug #33185 Has been processed a special case when a document ends on a long footnote. Previous processing didn't work because of bug 33185.
parent ee153a24
......@@ -2251,10 +2251,11 @@
window['AscDFH'].historyitem_State_Table = 4;
// Типы произошедших изменений
window['AscDFH'].historyitem_recalctype_Inline = 0; // Изменения произошли в обычном тексте (с верхним классом CDocument)
window['AscDFH'].historyitem_recalctype_Flow = 1; // Изменения произошли в "плавающем" объекте
window['AscDFH'].historyitem_recalctype_HdrFtr = 2; // Изменения произошли в колонтитуле
window['AscDFH'].historyitem_recalctype_Drawing = 3; // Изменения произошли в drawing'е
window['AscDFH'].historyitem_recalctype_Inline = 0; // Изменения произошли в обычном тексте (с верхним классом CDocument)
window['AscDFH'].historyitem_recalctype_Flow = 1; // Изменения произошли в "плавающем" объекте
window['AscDFH'].historyitem_recalctype_HdrFtr = 2; // Изменения произошли в колонтитуле
window['AscDFH'].historyitem_recalctype_Drawing = 3; // Изменения произошли в drawing'е
window['AscDFH'].historyitem_recalctype_NotesEnd = 4; // Изменение произошли в сносках, которые идут в конце документа
// Типы классов, в которых происходили изменения (типы нужны для совместного редактирования)
window['AscDFH'].historyitem_type_Unknown = 0;
......
......@@ -2014,25 +2014,29 @@ CDocument.prototype.Recalculate = function(bOneParagraph, bRecalcContentLast, _R
}
}
if (ChangeIndex < 0)
{
this.DrawingDocument.ClearCachePages();
this.DrawingDocument.FirePaint();
return;
}
// Найдем начальную страницу, с которой мы начнем пересчет
var StartPage = 0;
var StartIndex = 0;
if (ChangeIndex >= this.Content.length)
if (ChangeIndex < 0 && true === RecalcData.NotesEnd)
{
// Сюда мы попадаем при рассчете сносок, которые выходят за пределы самого документа
StartIndex = this.Content.length;
StartPage = RecalcData.Inline.PageNum;
StartPage = RecalcData.NotesEndPage;
MainChange = true;
}
else
{
if (ChangeIndex < 0)
{
this.DrawingDocument.ClearCachePages();
this.DrawingDocument.FirePaint();
return;
}
else if (ChangeIndex >= this.Content.length)
{
ChangeIndex = this.Content.length - 1;
}
// Здсь мы должны проверить предыдущие элементы на наличие параматра KeepNext
while (ChangeIndex > 0)
......@@ -2041,7 +2045,11 @@ CDocument.prototype.Recalculate = function(bOneParagraph, bRecalcContentLast, _R
if (type_Paragraph === PrevElement.Get_Type() && true === PrevElement.Get_CompiledPr2(false).ParaPr.KeepNext)
{
ChangeIndex--;
RecalcData.Inline.PageNum = PrevElement.Get_StartPage_Absolute() + (PrevElement.Pages.length - 1); // считаем, что изменилась последняя страница
RecalcData.Inline.PageNum = PrevElement.Get_StartPage_Absolute() + (PrevElement.Pages.length - 1); // считаем,
// что
// изменилась
// последняя
// страница
}
else
{
......@@ -6786,11 +6794,6 @@ CDocument.prototype.OnKeyDown = function(e)
bUpdateSelection = false;
bRetValue = keydownresult_PreventAll;
}
// else if (e.KeyCode === 113)
// {
// this.AddFootnote();
// bRetValue = keydownresult_PreventAll;
// }
else if (e.KeyCode == 121 && true === e.ShiftKey) // Shift + F10 - контекстное меню
{
var X_abs, Y_abs, oPosition, ConvertedPos;
......
......@@ -785,7 +785,18 @@ CFootnotesController.prototype.Refresh_RecalcData2 = function(nRelPageIndex)
if (this.LogicDocument.Pages[nAbsPageIndex])
{
var nIndex = this.LogicDocument.Pages[nAbsPageIndex].Pos;
this.LogicDocument.Refresh_RecalcData2(nIndex, nAbsPageIndex);
if (nIndex >= this.LogicDocument.Content.length)
{
History.RecalcData_Add({
Type : AscDFH.historyitem_recalctype_NotesEnd,
PageNum : nAbsPageIndex
});
}
else
{
this.LogicDocument.Refresh_RecalcData2(nIndex, nAbsPageIndex);
}
}
};
CFootnotesController.prototype.Get_PageContentStartPos = function(nPageAbs, nColumnAbs)
......
......@@ -46,22 +46,25 @@ function CHistory(Document)
this.CollaborativeEditing = null;
this.CanNotAddChanges = false;//флаг для отслеживания ошибок добавления изменений без точки:Create_NewPoint->Add->Save_Changes->Add
this.RecalculateData =
{
Inline : {Pos : -1, PageNum : 0},
Flow : [],
HdrFtr : [],
Drawings : {
All : false,
Map : {},
ThemeInfo : null
},
Tables : [],
NumPr : [],
Update : true
};
this.RecalculateData =
{
Inline : {
Pos : -1,
PageNum : 0
},
Flow : [],
HdrFtr : [],
Drawings : {
All : false,
Map : {},
ThemeInfo : null
},
Tables : [],
NumPr : [],
NotesEnd : false,
NotesEndPage : 0,
Update : true
};
this.TurnOffHistory = 0;
this.MinorChanges = false; // Данный параметр нужен, чтобы определить влияют ли добавленные изменения на пересчет
......@@ -479,23 +482,27 @@ CHistory.prototype =
{
// NumPr здесь не обнуляем
var NumPr = this.RecalculateData.NumPr;
this.RecalculateData =
{
Inline : {Pos : -1, PageNum : 0},
Flow : [],
HdrFtr : [],
Drawings : {
All : false,
Map : {},
ThemeInfo : null
},
Tables : [],
NumPr : NumPr,
Update : true
};
},
this.RecalculateData =
{
Inline : {
Pos : -1,
PageNum : 0
},
Flow : [],
HdrFtr : [],
Drawings : {
All : false,
Map : {},
ThemeInfo : null
},
Tables : [],
NumPr : NumPr,
NotesEnd : false,
NotesEndPage : 0,
Update : true
};
},
RecalcData_Add : function(Data)
{
......@@ -590,6 +597,13 @@ CHistory.prototype =
}
break;
}
case AscDFH.historyitem_recalctype_NotesEnd:
{
this.RecalculateData.NotesEnd = true;
this.RecalculateData.NotesEndPage = Data.PageNum;
break;
}
}
},
......
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