Commit fd0f2169 authored by Ilya Kirillov's avatar Ilya Kirillov

Убран ненужный параметр ContentLastChangePos.

parent b0bf8739
......@@ -1338,8 +1338,6 @@ function CDocument(DrawingDocument, isMainLogicDocument)
this.Content[0].Set_DocumentNext(null);
this.Content[0].Set_DocumentPrev(null);
this.ContentLastChangePos = 0;
this.Settings = new CDocumentSettings();
this.CurPos =
......@@ -2720,7 +2718,7 @@ CDocument.prototype.Recalculate_PageColumn = function()
break;
}
if (docpostype_Content == this.Get_DocPosType() && Index >= this.ContentLastChangePos && Index === this.CurPos.ContentPos)
if (docpostype_Content == this.Get_DocPosType() && Index === this.CurPos.ContentPos)
{
if (type_Paragraph === Element.GetType())
this.CurPage = PageIndex;
......@@ -3341,7 +3339,6 @@ CDocument.prototype.OnContentRecalculate = function(bNeedRec
}
else
{
this.ContentLastChangePos = DocumentIndex;
this.Recalculate(false, false);
}
};
......@@ -11167,12 +11164,8 @@ CDocument.prototype.controller_AddNewParagraph = function(bRecalculate, bForceAd
}
this.Internal_Content_Add(this.CurPos.ContentPos + 1, NewParagraph);
this.CurPos.ContentPos++;
// Отмечаем, что последний измененный элемент - предыдущий параграф
this.ContentLastChangePos = this.CurPos.ContentPos - 1;
if (true === this.Is_TrackRevisions())
{
NewParagraph.Remove_PrChange();
......@@ -11205,8 +11198,6 @@ CDocument.prototype.controller_AddNewParagraph = function(bRecalculate, bForceAd
// Создаем новый параграф
var NewParagraph = new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0);
this.Internal_Content_Add(0, NewParagraph);
this.ContentLastChangePos = 0;
this.CurPos.ContentPos = 0;
if (false != bRecalculate)
......@@ -11451,6 +11442,183 @@ CDocument.prototype.controller_ClearParagraphFormatting = function()
}
}
};
CDocument.prototype.controller_AddToParagraph = function(ParaItem, bRecalculate)
{
if (true === this.Selection.Use)
{
var Type = ParaItem.Get_Type();
switch (Type)
{
case para_Math:
case para_NewLine:
case para_Text:
case para_Space:
case para_Tab:
case para_PageNum:
case para_Field:
case para_FootnoteReference:
case para_FootnoteRef:
case para_Separator:
case para_ContinuationSeparator:
{
// Если у нас что-то заселекчено и мы вводим текст или пробел
// и т.д., тогда сначала удаляем весь селект.
this.Remove(1, true, false, true);
break;
}
case para_TextPr:
{
switch (this.Selection.Flag)
{
case selectionflag_Common:
{
// Текстовые настройки применяем ко всем параграфам, попавшим
// в селект.
var StartPos = this.Selection.StartPos;
var EndPos = this.Selection.EndPos;
if (EndPos < StartPos)
{
var Temp = StartPos;
StartPos = EndPos;
EndPos = Temp;
}
for (var Index = StartPos; Index <= EndPos; Index++)
{
this.Content[Index].Add(ParaItem.Copy());
}
if (false != bRecalculate)
{
// Если в TextPr только HighLight, тогда не надо ничего пересчитывать, только перерисовываем
if (true === ParaItem.Value.Check_NeedRecalc())
{
this.Recalculate();
}
else
{
// Просто перерисовываем нужные страницы
var StartPage = this.Content[StartPos].Get_StartPage_Absolute();
var EndPage = this.Content[EndPos].Get_StartPage_Absolute() + this.Content[EndPos].Pages.length - 1;
this.ReDraw(StartPage, EndPage);
}
}
break;
}
case selectionflag_Numbering:
{
// Текстовые настройки применяем к конкретной нумерации
if (null == this.Selection.Data || this.Selection.Data.length <= 0)
break;
if (undefined != ParaItem.Value.FontFamily)
{
var FName = ParaItem.Value.FontFamily.Name;
var FIndex = ParaItem.Value.FontFamily.Index;
ParaItem.Value.RFonts = new CRFonts();
ParaItem.Value.RFonts.Ascii = {Name : FName, Index : FIndex};
ParaItem.Value.RFonts.EastAsia = {Name : FName, Index : FIndex};
ParaItem.Value.RFonts.HAnsi = {Name : FName, Index : FIndex};
ParaItem.Value.RFonts.CS = {Name : FName, Index : FIndex};
}
var NumPr = this.Content[this.Selection.Data[0]].Numbering_Get();
var AbstrNum = this.Numbering.Get_AbstractNum(NumPr.NumId);
AbstrNum.Apply_TextPr(NumPr.Lvl, ParaItem.Value);
if (false != bRecalculate)
{
this.Recalculate();
}
break;
}
}
this.Document_UpdateSelectionState();
this.Document_UpdateUndoRedoState();
return;
}
}
}
var Item = this.Content[this.CurPos.ContentPos];
var ItemType = Item.GetType();
if (para_NewLine === ParaItem.Type && true === ParaItem.Is_PageOrColumnBreak())
{
if (type_Paragraph === ItemType)
{
if (true === Item.Cursor_IsStart())
{
this.Add_NewParagraph(undefined, true);
var CurPos = this.CurPos.ContentPos - 1;
this.Content[CurPos].Cursor_MoveToStartPos();
this.Content[CurPos].Add(ParaItem);
this.Content[CurPos].Clear_Formatting();
}
else
{
this.Add_NewParagraph(undefined, true);
this.Add_NewParagraph(undefined, true);
var CurPos = this.CurPos.ContentPos - 1;
this.Content[CurPos].Cursor_MoveToStartPos();
this.Content[CurPos].Add(ParaItem);
this.Content[CurPos].Clear_Formatting();
}
if (false != bRecalculate)
{
this.Recalculate();
Item.CurPos.RealX = Item.CurPos.X;
Item.CurPos.RealY = Item.CurPos.Y;
}
}
else
{
// TODO: PageBreak в таблице не ставим
return;
}
}
else
{
Item.Add(ParaItem);
if (false != bRecalculate && type_Paragraph == Item.GetType())
{
if (para_TextPr === ParaItem.Type && false === ParaItem.Value.Check_NeedRecalc())
{
// Просто перерисовываем нужные страницы
var StartPage = Item.Get_StartPage_Absolute();
var EndPage = StartPage + Item.Pages.length - 1;
this.ReDraw(StartPage, EndPage);
}
else
{
// Нам нужно пересчитать все изменения, начиная с текущего элемента
this.Recalculate(true);
}
if (false === this.TurnOffRecalcCurPos)
{
Item.RecalculateCurPos();
Item.CurPos.RealX = Item.CurPos.X;
Item.CurPos.RealY = Item.CurPos.Y;
}
}
this.Document_UpdateSelectionState();
this.Document_UpdateInterfaceState();
}
// Специальная заглушка для функции TextBox_Put
if (true === this.Is_OnRecalculate())
this.Document_UpdateUndoRedoState();
};
CDocument.prototype.controller_Remove = function(Count, bOnlyText, bRemoveOnlySelection, bOnTextAdd)
{
if (this.CurPos.ContentPos < 0)
......@@ -11722,8 +11890,6 @@ CDocument.prototype.controller_Remove = function(Count, bOnlyText, bRemoveOnlySe
this.Content[StartPos].Cursor_MoveToStartPos();
}
// Нам нужно пересчитать все изменения, начиная с текущего элемента
this.ContentLastChangePos = this.CurPos.ContentPos;
this.Recalculate();
this.Document_UpdateInterfaceState();
......@@ -11749,11 +11915,6 @@ CDocument.prototype.controller_Remove = function(Count, bOnlyText, bRemoveOnlySe
}
}
// В текущей позиции this.CurPos.ContentPos может оказаться, либо оставшийся параграф,
// после удаления (если параграфы удалялись не целиком), либо следующий за ним, либо
// перед ним. В любом случае, ничего не испортится если мы у текущего параграфа удалим
// селект.
this.ContentLastChangePos = this.CurPos.ContentPos;
this.Recalculate();
}
else
......@@ -11850,24 +12011,18 @@ CDocument.prototype.controller_Remove = function(Count, bOnlyText, bRemoveOnlySe
}
}
// Нам нужно пересчитать все изменения, начиная с текущего элемента
this.ContentLastChangePos = this.CurPos.ContentPos;
this.Recalculate();
}
else
{
if (true === bNumbering && undefined == this.Content[this.CurPos.ContentPos].Numbering_Get())
{
// Нам нужно пересчитать все изменения, начиная с предыдущего элемента
this.ContentLastChangePos = this.CurPos.ContentPos - 1;
this.Recalculate();
}
else
{
// Нам нужно пересчитать все изменения, начиная с текущего элемента
this.ContentLastChangePos = this.CurPos.ContentPos;
this.Recalculate(true);
this.Recalculate();
}
}
......@@ -15547,190 +15702,6 @@ CDocument.prototype.controller_RestoreDocumentStateAfterLoadChanges = function(S
this.NeedUpdateTarget = true;
}
};
CDocument.prototype.controller_AddToParagraph = function(ParaItem, bRecalculate)
{
if (true === this.Selection.Use)
{
var Type = ParaItem.Get_Type();
switch (Type)
{
case para_Math:
case para_NewLine:
case para_Text:
case para_Space:
case para_Tab:
case para_PageNum:
case para_Field:
case para_FootnoteReference:
case para_FootnoteRef:
case para_Separator:
case para_ContinuationSeparator:
{
// Если у нас что-то заселекчено и мы вводим текст или пробел
// и т.д., тогда сначала удаляем весь селект.
this.Remove(1, true, false, true);
break;
}
case para_TextPr:
{
switch (this.Selection.Flag)
{
case selectionflag_Common:
{
// Текстовые настройки применяем ко всем параграфам, попавшим
// в селект.
var StartPos = this.Selection.StartPos;
var EndPos = this.Selection.EndPos;
if (EndPos < StartPos)
{
var Temp = StartPos;
StartPos = EndPos;
EndPos = Temp;
}
for (var Index = StartPos; Index <= EndPos; Index++)
{
this.Content[Index].Add(ParaItem.Copy());
}
if (false != bRecalculate)
{
// Если в TextPr только HighLight, тогда не надо ничего пересчитывать, только перерисовываем
if (true === ParaItem.Value.Check_NeedRecalc())
{
// Нам нужно пересчитать все изменения, начиная с первого элемента,
// попавшего в селект.
this.ContentLastChangePos = StartPos;
this.Recalculate();
}
else
{
// Просто перерисовываем нужные страницы
var StartPage = this.Content[StartPos].Get_StartPage_Absolute();
var EndPage = this.Content[EndPos].Get_StartPage_Absolute() + this.Content[EndPos].Pages.length - 1;
this.ReDraw(StartPage, EndPage);
}
}
break;
}
case selectionflag_Numbering:
{
// Текстовые настройки применяем к конкретной нумерации
if (null == this.Selection.Data || this.Selection.Data.length <= 0)
break;
if (undefined != ParaItem.Value.FontFamily)
{
var FName = ParaItem.Value.FontFamily.Name;
var FIndex = ParaItem.Value.FontFamily.Index;
ParaItem.Value.RFonts = new CRFonts();
ParaItem.Value.RFonts.Ascii = {Name : FName, Index : FIndex};
ParaItem.Value.RFonts.EastAsia = {Name : FName, Index : FIndex};
ParaItem.Value.RFonts.HAnsi = {Name : FName, Index : FIndex};
ParaItem.Value.RFonts.CS = {Name : FName, Index : FIndex};
}
var NumPr = this.Content[this.Selection.Data[0]].Numbering_Get();
var AbstrNum = this.Numbering.Get_AbstractNum(NumPr.NumId);
AbstrNum.Apply_TextPr(NumPr.Lvl, ParaItem.Value);
if (false != bRecalculate)
{
// Нам нужно пересчитать все изменения, начиная с первого элемента,
// попавшего в селект.
this.ContentLastChangePos = this.Selection.Data[0];
this.Recalculate();
}
break;
}
}
this.Document_UpdateSelectionState();
this.Document_UpdateUndoRedoState();
return;
}
}
}
var Item = this.Content[this.CurPos.ContentPos];
var ItemType = Item.GetType();
if (para_NewLine === ParaItem.Type && true === ParaItem.Is_PageOrColumnBreak())
{
if (type_Paragraph === ItemType)
{
if (true === Item.Cursor_IsStart())
{
this.Add_NewParagraph(undefined, true);
var CurPos = this.CurPos.ContentPos - 1;
this.Content[CurPos].Cursor_MoveToStartPos();
this.Content[CurPos].Add(ParaItem);
this.Content[CurPos].Clear_Formatting();
}
else
{
this.Add_NewParagraph(undefined, true);
this.Add_NewParagraph(undefined, true);
var CurPos = this.CurPos.ContentPos - 1;
this.Content[CurPos].Cursor_MoveToStartPos();
this.Content[CurPos].Add(ParaItem);
this.Content[CurPos].Clear_Formatting();
}
if (false != bRecalculate)
{
this.Recalculate();
Item.CurPos.RealX = Item.CurPos.X;
Item.CurPos.RealY = Item.CurPos.Y;
}
}
else
{
// TODO: PageBreak в таблице не ставим
return;
}
}
else
{
Item.Add(ParaItem);
if (false != bRecalculate && type_Paragraph == Item.GetType())
{
if (para_TextPr === ParaItem.Type && false === ParaItem.Value.Check_NeedRecalc())
{
// Просто перерисовываем нужные страницы
var StartPage = Item.Get_StartPage_Absolute();
var EndPage = StartPage + Item.Pages.length - 1;
this.ReDraw(StartPage, EndPage);
}
else
{
// Нам нужно пересчитать все изменения, начиная с текущего элемента
this.Recalculate(true);
}
if (false === this.TurnOffRecalcCurPos)
{
Item.RecalculateCurPos();
Item.CurPos.RealX = Item.CurPos.X;
Item.CurPos.RealY = Item.CurPos.Y;
}
}
this.Document_UpdateSelectionState();
this.Document_UpdateInterfaceState();
}
// Специальная заглушка для функции TextBox_Put
if (true === this.Is_OnRecalculate())
this.Document_UpdateUndoRedoState();
};
//----------------------------------------------------------------------------------------------------------------------
//
//----------------------------------------------------------------------------------------------------------------------
......
......@@ -312,6 +312,12 @@ CDocumentControllerBase.prototype.AddInlineTable = function(nCols, nRows){};
* Очищаем настройки параграфа.
*/
CDocumentControllerBase.prototype.ClearParagraphFormatting = function(){};
/**
* Добавляем элемент в параграф.
* @param oItem
* @param {boolean} bRecalculate - Пересчитывать ли после выполнения данной функции.
*/
CDocumentControllerBase.prototype.AddToParagraph = function(oItem, bRecalculate){};
/**
* Производим удаление выделенной части документа или исходя из позиции курсора.
* @param {number} nDirection направление удаления
......@@ -702,10 +708,3 @@ CDocumentControllerBase.prototype.SaveDocumentStateBeforeLoadChanges = function(
* @param State
*/
CDocumentControllerBase.prototype.RestoreDocumentStateAfterLoadChanges = function(State){};
/**
* Добавляем элемент в параграф.
* @param oItem
* @param {boolean} bRecalculate - Пересчитывать ли после выполнения данной функции.
*/
CDocumentControllerBase.prototype.AddToParagraph = function(oItem, bRecalculate){};
......@@ -64,6 +64,16 @@ CDrawingsController.prototype.ClearParagraphFormatting = function()
{
this.DrawingObjects.paragraphClearFormatting();
};
CDrawingsController.prototype.AddToParagraph = function(oItem, bRecalculate)
{
if (para_NewLine === oItem.Type && true === oItem.Is_PageOrColumnBreak())
return;
this.DrawingObjects.paragraphAdd(oItem, bRecalculate);
this.LogicDocument.Document_UpdateSelectionState();
this.LogicDocument.Document_UpdateUndoRedoState();
this.LogicDocument.Document_UpdateInterfaceState();
};
CDrawingsController.prototype.Remove = function(Count, bOnlyText, bRemoveOnlySelection, bOnTextAdd)
{
return this.DrawingObjects.remove(Count, bOnlyText, bRemoveOnlySelection, bOnTextAdd);
......@@ -489,15 +499,3 @@ CDrawingsController.prototype.RestoreDocumentStateAfterLoadChanges = function(St
};
CDrawingsController.prototype.AddToParagraph = function(oItem, bRecalculate)
{
if (para_NewLine === oItem.Type && true === oItem.Is_PageOrColumnBreak())
return;
this.DrawingObjects.paragraphAdd(oItem, bRecalculate);
this.LogicDocument.Document_UpdateSelectionState();
this.LogicDocument.Document_UpdateUndoRedoState();
this.LogicDocument.Document_UpdateInterfaceState();
};
......@@ -403,6 +403,18 @@ CFootnotesController.prototype.ClearParagraphFormatting = function()
this.CurFootnote.Paragraph_ClearFormatting();
}
};
CFootnotesController.prototype.AddToParagraph = function(oItem, bRecalculate)
{
// TODO: Доделать селект и курсор
if (true === this.Selection.Use)
{
}
else
{
if (null !== this.CurFootnote)
this.CurFootnote.Paragraph_Add(oItem, bRecalculate);
}
};
CFootnotesController.prototype.Remove = function(Count, bOnlyText, bRemoveOnlySelection, bOnTextAdd)
{
// TODO: Доделать селект и курсор
......@@ -1064,19 +1076,6 @@ CFootnotesController.prototype.RestoreDocumentStateAfterLoadChanges = function(S
// TODO: Реализовать
};
CFootnotesController.prototype.AddToParagraph = function(oItem, bRecalculate)
{
// TODO: Доделать селект и курсор
if (true === this.Selection.Use)
{
}
else
{
if (null !== this.CurFootnote)
this.CurFootnote.Paragraph_Add(oItem, bRecalculate);
}
};
function CFootEndnotePage()
......
......@@ -67,6 +67,15 @@ CHdrFtrController.prototype.ClearParagraphFormatting = function()
{
this.HdrFtr.Paragraph_ClearFormatting();
};
CHdrFtrController.prototype.AddToParagraph = function(oItem, bRecalculate)
{
if (para_NewLine === oItem.Type && true === oItem.Is_PageOrColumnBreak())
return;
this.HdrFtr.Paragraph_Add(oItem, bRecalculate);
this.LogicDocument.Document_UpdateSelectionState();
this.LogicDocument.Document_UpdateUndoRedoState();
};
CHdrFtrController.prototype.Remove = function(Count, bOnlyText, bRemoveOnlySelection, bOnTextAdd)
{
var nResult = this.HdrFtr.Remove(Count, bOnlyText, bRemoveOnlySelection, bOnTextAdd);
......@@ -440,15 +449,4 @@ CHdrFtrController.prototype.RestoreDocumentStateAfterLoadChanges = function(Stat
{
this.LogicDocument.Document_End_HdrFtrEditing();
}
};
CHdrFtrController.prototype.AddToParagraph = function(oItem, bRecalculate)
{
if (para_NewLine === oItem.Type && true === oItem.Is_PageOrColumnBreak())
return;
this.HdrFtr.Paragraph_Add(oItem, bRecalculate);
this.LogicDocument.Document_UpdateSelectionState();
this.LogicDocument.Document_UpdateUndoRedoState();
};
\ No newline at end of file
......@@ -57,6 +57,10 @@ CLogicDocumentController.prototype.ClearParagraphFormatting = function()
{
this.LogicDocument.controller_ClearParagraphFormatting();
};
CLogicDocumentController.prototype.AddToParagraph = function(oItem)
{
this.LogicDocument.controller_AddToParagraph(oItem);
};
CLogicDocumentController.prototype.Remove = function(nDirection, bOnlyText, bRemoveOnlySelection, bOnAddText)
{
return this.LogicDocument.controller_Remove(nDirection, bOnlyText, bRemoveOnlySelection, bOnAddText);
......@@ -361,10 +365,3 @@ CLogicDocumentController.prototype.RestoreDocumentStateAfterLoadChanges = functi
{
this.LogicDocument.controller_RestoreDocumentStateAfterLoadChanges(State);
};
CLogicDocumentController.prototype.AddToParagraph = function(oItem)
{
this.LogicDocument.controller_AddToParagraph(oItem);
};
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