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

Исправлен баг с чтением документа, у которого нумерация заданная через стили...

Исправлен баг с чтением документа, у которого нумерация заданная через стили не согласованна со стилями (баг 30876).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@66313 954022d7-b5bf-4e40-9824-e11837661b57
parent d536bd23
...@@ -992,6 +992,10 @@ CDocument.prototype = ...@@ -992,6 +992,10 @@ CDocument.prototype =
// Проверяем последний параграф на наличие секции // Проверяем последний параграф на наличие секции
this.Check_SectionLastParagraph(); this.Check_SectionLastParagraph();
// Специальная проверка плохо заданных нумераций через стиль. Когда ссылка на нумерацию в стиле есть,
// а обратной ссылки в нумерации на стиль - нет.
this.Styles.Check_StyleNumberingOnLoad(this.Numbering);
// Перемещаем курсор в начало документа // Перемещаем курсор в начало документа
this.Cursor_MoveToStartPos(false); this.Cursor_MoveToStartPos(false);
......
...@@ -333,7 +333,7 @@ CAbstractNum.prototype = ...@@ -333,7 +333,7 @@ CAbstractNum.prototype =
return; return;
var Lvl_old = this.Lvl[iLvl]; var Lvl_old = this.Lvl[iLvl];
this.Lvl[iLvl] = Lvl_new;
History.Add( this, { Type : historyitem_AbstractNum_LvlChange, Index : iLvl, Old : Lvl_old, New : Lvl_new } ); History.Add( this, { Type : historyitem_AbstractNum_LvlChange, Index : iLvl, Old : Lvl_old, New : Lvl_new } );
}, },
......
...@@ -4746,6 +4746,33 @@ CStyles.prototype = ...@@ -4746,6 +4746,33 @@ CStyles.prototype =
return arrStyles; return arrStyles;
}, },
Check_StyleNumberingOnLoad : function(Numbering)
{
// TODO: Похоже Word сначала пробегается по дефолтовым стилям, типа Heading, потом по остальным.
for (var StyleId in this.Style)
{
var Style = this.Style[StyleId];
var NumPr = Style.ParaPr.NumPr;
if (!NumPr || !NumPr.NumId)
continue;
var AbstractNum = Numbering.Get_AbstractNum(NumPr.NumId);
if (!Num)
continue;
var iLvl = (NumPr.Lvl ? NumPr.Lvl : 0);
var NumLvl = AbstractNum.Get_Lvl(iLvl);
if (!NumLvl || NumLvl.PStyle)
continue;
var NewLvl = AbstractNum.Internal_CopyLvl(NumLvl);
NewLvl.PStyle = StyleId;
AbstractNum.Set_Lvl(iLvl, NewLvl);
}
},
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// Undo/Redo функции // Undo/Redo функции
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
......
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