Commit 94675b97 authored by Ilya Kirillov's avatar Ilya Kirillov

Implemented sending own cursor position for other co-authors in footnotes....

Implemented sending own cursor position for other co-authors in footnotes. Fixed several bugs with save/restore selection state after loading changes in footnotes.
parent fd0a922d
...@@ -10306,8 +10306,6 @@ CDocument.prototype.Get_DocumentPositionFromObject = function(PosArray) ...@@ -10306,8 +10306,6 @@ CDocument.prototype.Get_DocumentPositionFromObject = function(PosArray)
}; };
CDocument.prototype.Get_CursorLogicPosition = function() CDocument.prototype.Get_CursorLogicPosition = function()
{ {
// TODO: Обработка сносок
var nDocPosType = this.Get_DocPosType(); var nDocPosType = this.Get_DocPosType();
if (docpostype_HdrFtr === nDocPosType) if (docpostype_HdrFtr === nDocPosType)
{ {
...@@ -10317,6 +10315,12 @@ CDocument.prototype.Get_CursorLogicPosition = function() ...@@ -10317,6 +10315,12 @@ CDocument.prototype.Get_CursorLogicPosition = function()
return this.private_GetLogicDocumentPosition(HdrFtr.Get_DocumentContent()); return this.private_GetLogicDocumentPosition(HdrFtr.Get_DocumentContent());
} }
} }
else if (docpostype_Footnotes === nDocPosType)
{
var oFootnote = this.Footnotes.GetCurFootnote();
if (oFootnote)
return this.private_GetLogicDocumentPosition(oFootnote);
}
else else
{ {
return this.private_GetLogicDocumentPosition(this); return this.private_GetLogicDocumentPosition(this);
...@@ -10382,7 +10386,7 @@ CDocument.prototype.Update_ForeignCursor = function(CursorInfo, UserId, Show, Us ...@@ -10382,7 +10386,7 @@ CDocument.prototype.Update_ForeignCursor = function(CursorInfo, UserId, Show, Us
if (!CursorInfo) if (!CursorInfo)
{ {
this.Remove_ForeignCursor(UserId) this.Remove_ForeignCursor(UserId);
return; return;
} }
...@@ -10395,7 +10399,7 @@ CDocument.prototype.Update_ForeignCursor = function(CursorInfo, UserId, Show, Us ...@@ -10395,7 +10399,7 @@ CDocument.prototype.Update_ForeignCursor = function(CursorInfo, UserId, Show, Us
var Run = this.TableId.Get_ById(RunId); var Run = this.TableId.Get_ById(RunId);
if (!Run) if (!Run)
{ {
this.Remove_ForeignCursor(UserId) this.Remove_ForeignCursor(UserId);
return; return;
} }
...@@ -16704,6 +16708,7 @@ function CDocumentFootnotesRangeEngine() ...@@ -16704,6 +16708,7 @@ function CDocumentFootnotesRangeEngine()
this.m_oLastFootnote = null; // Если не задана ищем до конца this.m_oLastFootnote = null; // Если не задана ищем до конца
this.m_arrFootnotes = []; this.m_arrFootnotes = [];
this.m_bForceStop = false;
} }
CDocumentFootnotesRangeEngine.prototype.Init = function(oFirstFootnote, oLastFootnote) CDocumentFootnotesRangeEngine.prototype.Init = function(oFirstFootnote, oLastFootnote)
{ {
...@@ -16712,13 +16717,15 @@ CDocumentFootnotesRangeEngine.prototype.Init = function(oFirstFootnote, oLastFoo ...@@ -16712,13 +16717,15 @@ CDocumentFootnotesRangeEngine.prototype.Init = function(oFirstFootnote, oLastFoo
}; };
CDocumentFootnotesRangeEngine.prototype.Add = function(oFootnote) CDocumentFootnotesRangeEngine.prototype.Add = function(oFootnote)
{ {
if (!oFootnote) if (!oFootnote || true === this.m_bForceStop)
return; return;
if (this.m_arrFootnotes.length <= 0 && null !== this.m_oFirstFootnote) if (this.m_arrFootnotes.length <= 0 && null !== this.m_oFirstFootnote)
{ {
if (this.m_oFirstFootnote === oFootnote) if (this.m_oFirstFootnote === oFootnote)
this.m_arrFootnotes.push(oFootnote); this.m_arrFootnotes.push(oFootnote);
else if (this.m_oLastFootnote === oFootnote)
this.m_bForceStop = true;
} }
else if (this.m_arrFootnotes.length >= 1 && null !== this.m_oLastFootnote) else if (this.m_arrFootnotes.length >= 1 && null !== this.m_oLastFootnote)
{ {
...@@ -16732,6 +16739,9 @@ CDocumentFootnotesRangeEngine.prototype.Add = function(oFootnote) ...@@ -16732,6 +16739,9 @@ CDocumentFootnotesRangeEngine.prototype.Add = function(oFootnote)
}; };
CDocumentFootnotesRangeEngine.prototype.IsRangeFull = function() CDocumentFootnotesRangeEngine.prototype.IsRangeFull = function()
{ {
if (true === this.m_bForceStop)
return true;
if (null !== this.m_oLastFootnote && this.m_arrFootnotes.length >= 1 && this.m_oLastFootnote === this.m_arrFootnotes[this.m_arrFootnotes.length - 1]) if (null !== this.m_oLastFootnote && this.m_arrFootnotes.length >= 1 && this.m_oLastFootnote === this.m_arrFootnotes[this.m_arrFootnotes.length - 1])
return true; return true;
......
...@@ -317,6 +317,10 @@ CFootnotesController.prototype.Get_PageContentStartPos = function(PageAbs) ...@@ -317,6 +317,10 @@ CFootnotesController.prototype.Get_PageContentStartPos = function(PageAbs)
//TODO: Реализовать //TODO: Реализовать
return {X : 0, Y : 0, XLimit : 0, YLimit : 0}; return {X : 0, Y : 0, XLimit : 0, YLimit : 0};
}; };
CFootnotesController.prototype.GetCurFootnote = function()
{
return this.CurFootnote;
};
/** /**
* Проверяем попадание в сноски на заданной странице. * Проверяем попадание в сноски на заданной странице.
* @param X * @param X
...@@ -2388,15 +2392,30 @@ CFootnotesController.prototype.RestoreDocumentStateAfterLoadChanges = function(S ...@@ -2388,15 +2392,30 @@ CFootnotesController.prototype.RestoreDocumentStateAfterLoadChanges = function(S
var arrNewFootnotesList = this.private_GetFootnotesLogicRange(StartFootnote, EndFootnote); var arrNewFootnotesList = this.private_GetFootnotesLogicRange(StartFootnote, EndFootnote);
if (arrNewFootnotesList.length < 1) if (arrNewFootnotesList.length < 1)
{
if (null !== EndFootnote)
{
EndFootnote.Selection_Remove();
this.private_SetCurrentFootnoteNoSelection(EndFootnote);
}
else if (null !== StartFootnote)
{
StartFootnote.Selection_Remove();
this.private_SetCurrentFootnoteNoSelection(StartFootnote);
}
else
{ {
this.LogicDocument.EndFootnotesEditing(); this.LogicDocument.EndFootnotesEditing();
return; }
} }
else if (arrNewFootnotesList.length === 1) else if (arrNewFootnotesList.length === 1)
{ {
this.Selection.Use = true; this.Selection.Use = true;
this.Selection.Direction = 0; this.Selection.Direction = 0;
this.Selection.Footnotes = {}; this.Selection.Footnotes = {};
this.Selection.Start.Footnote = StartFootnote;
this.Selection.End.Footnote = StartFootnote;
this.CurFootnote = StartFootnote;
this.Selection.Footnotes[StartFootnote.Get_Id()] = StartFootnote; this.Selection.Footnotes[StartFootnote.Get_Id()] = StartFootnote;
...@@ -2437,16 +2456,6 @@ CFootnotesController.prototype.RestoreDocumentStateAfterLoadChanges = function(S ...@@ -2437,16 +2456,6 @@ CFootnotesController.prototype.RestoreDocumentStateAfterLoadChanges = function(S
this.Selection.Footnotes[EndFootnote.Get_Id()] = EndFootnote; this.Selection.Footnotes[EndFootnote.Get_Id()] = EndFootnote;
if (1 !== this.Selection.Direction)
{
var Temp = StartFootnote;
StartFootnote = EndFootnote;
EndFootnote = Temp;
}
this.Selection.Start.Footnote = StartFootnote;
this.Selection.End.Footnote = EndFootnote;
if (arrFootnotesList[0] === StartFootnote) if (arrFootnotesList[0] === StartFootnote)
{ {
StartFootnote.Set_DocPosType(docpostype_Content); StartFootnote.Set_DocPosType(docpostype_Content);
...@@ -2472,6 +2481,16 @@ CFootnotesController.prototype.RestoreDocumentStateAfterLoadChanges = function(S ...@@ -2472,6 +2481,16 @@ CFootnotesController.prototype.RestoreDocumentStateAfterLoadChanges = function(S
EndFootnote.Set_DocPosType(docpostype_Content); EndFootnote.Set_DocPosType(docpostype_Content);
EndFootnote.Select_All(1); EndFootnote.Select_All(1);
} }
if (1 !== this.Selection.Direction)
{
var Temp = StartFootnote;
StartFootnote = EndFootnote;
EndFootnote = Temp;
}
this.Selection.Start.Footnote = StartFootnote;
this.Selection.End.Footnote = EndFootnote;
} }
} }
}; };
......
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