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

Исправлены баги с обновлением и удалением базовых стилей (дочерние стили не...

Исправлены баги с обновлением и удалением базовых стилей (дочерние стили не обновлялись). Сделано, чтобы при изменении стиля текста в совместном редактировании рисовался рект вокруг измененных ранов, аналогично при изменении свойств параграфа, теперь рисуется слева линия.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@62893 954022d7-b5bf-4e40-9824-e11837661b57
parent 6299e7c4
...@@ -640,6 +640,8 @@ function CCollaborativeEditing() ...@@ -640,6 +640,8 @@ function CCollaborativeEditing()
{ {
if (true === oThis.m_bGlobalLock) if (true === oThis.m_bGlobalLock)
{ {
// Здесь проверяем есть ли длинная операция, если она есть, то до ее окончания нельзя делать
// Undo, иначе точка истории уберется, а изменения допишутся в предыдущую.
if (false == editor.asc_CheckLongActionCallback(oThis.OnCallback_AskLock, result)) if (false == editor.asc_CheckLongActionCallback(oThis.OnCallback_AskLock, result))
return; return;
......
...@@ -14542,9 +14542,12 @@ CDocument.prototype.Remove_Style = function(sStyleName) ...@@ -14542,9 +14542,12 @@ CDocument.prototype.Remove_Style = function(sStyleName)
this.Document_UpdateInterfaceState(); this.Document_UpdateInterfaceState();
} }
}; };
CDocument.prototype.Add_ChangedStyle = function(StyleId) CDocument.prototype.Add_ChangedStyle = function(arrStylesId)
{ {
this.ChangedStyles[StyleId] = true; for (var nIndex = 0, nCount = arrStylesId.length; nIndex < nCount; nIndex++)
{
this.ChangedStyles[arrStylesId[nIndex]] = true;
}
}; };
CDocument.prototype.Document_UpdateStylesPanel = function() CDocument.prototype.Document_UpdateStylesPanel = function()
{ {
...@@ -14581,11 +14584,10 @@ CDocument.prototype.Get_AllParagraphsByNumbering = function(NumPr) ...@@ -14581,11 +14584,10 @@ CDocument.prototype.Get_AllParagraphsByNumbering = function(NumPr)
{ {
return this.Get_AllParagraphs({Numbering : true, NumPr : NumPr}); return this.Get_AllParagraphs({Numbering : true, NumPr : NumPr});
}; };
CDocument.prototype.Get_AllParagraphsByStyle = function(StyleId) CDocument.prototype.Get_AllParagraphsByStyle = function(StylesId)
{ {
return this.Get_AllParagraphs({Style : true, StyleId : StyleId}); return this.Get_AllParagraphs({Style : true, StylesId : StylesId});
}; };
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// //
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
......
This diff is collapsed.
This diff is collapsed.
...@@ -3033,7 +3033,21 @@ CStyle.prototype = ...@@ -3033,7 +3033,21 @@ CStyle.prototype =
{ {
// TODO: Надо сделать механизм, чтобы данное действие не вызывалось много раз подряд, а только 1. // TODO: Надо сделать механизм, чтобы данное действие не вызывалось много раз подряд, а только 1.
var LogicDocument = editor.WordControl.m_oLogicDocument; var LogicDocument = editor.WordControl.m_oLogicDocument;
var AllParagraphs = LogicDocument.Get_AllParagraphsByStyle(this.Id); var Styles = LogicDocument.Get_Styles();
var AllParagraphs = [];
if (this.Id != Styles.Default.Paragraph)
{
var AllStylesId = Styles.private_GetAllBasedStylesId(this.Id);
AllParagraphs = LogicDocument.Get_AllParagraphsByStyle(AllStylesId);
LogicDocument.Add_ChangedStyle(AllStylesId);
}
else
{
AllParagraphs = LogicDocument.Get_AllParagraphs({All : true});
LogicDocument.Add_ChangedStyle([this.Id]);
}
var Count = AllParagraphs.length; var Count = AllParagraphs.length;
for ( var Index = 0; Index < Count; Index++ ) for ( var Index = 0; Index < Count; Index++ )
...@@ -4249,7 +4263,7 @@ CStyles.prototype = ...@@ -4249,7 +4263,7 @@ CStyles.prototype =
Get : function(StyleId) Get : function(StyleId)
{ {
if (undefined != this.Style[StyleId]) if (undefined != this.Style[StyleId])
return this.Style[StyleId].Name; return this.Style[StyleId];
return null; return null;
}, },
...@@ -4342,8 +4356,11 @@ CStyles.prototype = ...@@ -4342,8 +4356,11 @@ CStyles.prototype =
{ {
var DefId = this.Default.Paragraph; var DefId = this.Default.Paragraph;
Pr.ParaPr.Merge( this.Style[DefId].ParaPr ); if (undefined != this.Style[DefId])
Pr.TextPr.Merge( this.Style[DefId].TextPr ); {
Pr.ParaPr.Merge(this.Style[DefId].ParaPr);
Pr.TextPr.Merge(this.Style[DefId].TextPr);
}
break; break;
} }
...@@ -4356,11 +4373,14 @@ CStyles.prototype = ...@@ -4356,11 +4373,14 @@ CStyles.prototype =
{ {
var DefId = this.Default.Table; var DefId = this.Default.Table;
Pr.ParaPr.Merge( this.Style[DefId].ParaPr ); if (undefined != this.Style[DefId])
Pr.TextPr.Merge( this.Style[DefId].TextPr ); {
Pr.TablePr.Merge( this.Styles[DefId].TablePr ); Pr.ParaPr.Merge(this.Style[DefId].ParaPr);
Pr.TableRowPr.Merge( this.Styles[DefId].TableRowPr ); Pr.TextPr.Merge(this.Style[DefId].TextPr);
Pr.TableCellPr.Merge( this.Styles[DefId].TableCellPr ); Pr.TablePr.Merge(this.Styles[DefId].TablePr);
Pr.TableRowPr.Merge(this.Styles[DefId].TableRowPr);
Pr.TableCellPr.Merge(this.Styles[DefId].TableCellPr);
}
break; break;
} }
...@@ -4368,7 +4388,10 @@ CStyles.prototype = ...@@ -4368,7 +4388,10 @@ CStyles.prototype =
{ {
var DefId = this.Default.Character; var DefId = this.Default.Character;
Pr.TextPr.Merge( this.Style[DefId].TextPr ); if (undefined != this.Style[DefId])
{
Pr.TextPr.Merge(this.Style[DefId].TextPr);
}
break; break;
} }
...@@ -4421,7 +4444,10 @@ CStyles.prototype = ...@@ -4421,7 +4444,10 @@ CStyles.prototype =
{ {
var DefId = this.Default.Character; var DefId = this.Default.Character;
Pr.TextPr.Merge( this.Style[DefId].TextPr ); if (undefined != this.Style[DefId])
{
Pr.TextPr.Merge(this.Style[DefId].TextPr);
}
break; break;
} }
...@@ -4677,7 +4703,7 @@ CStyles.prototype = ...@@ -4677,7 +4703,7 @@ CStyles.prototype =
if (this.LogicDocument) if (this.LogicDocument)
{ {
var AllParagraphs = this.LogicDocument.Get_AllParagraphsByStyle(StyleId); var AllParagraphs = this.LogicDocument.Get_AllParagraphsByStyle([StyleId]);
var Count = AllParagraphs.length; var Count = AllParagraphs.length;
for (var Index = 0; Index < Count; Index++) for (var Index = 0; Index < Count; Index++)
{ {
...@@ -4736,7 +4762,65 @@ CStyles.prototype = ...@@ -4736,7 +4762,65 @@ CStyles.prototype =
Update_Interface : function(StyleId) Update_Interface : function(StyleId)
{ {
if (null != this.LogicDocument && undefined !== this.LogicDocument) if (null != this.LogicDocument && undefined !== this.LogicDocument)
this.LogicDocument.Add_ChangedStyle(StyleId); {
// Данный стиль может быть базовым для других стилей, поэтому нам нужно пересчитать все параграфы, не только у
// которых выставлен данный стиль, но и у которых выставлен стиль, для которого данный будет базовым (в любом поколении).
this.LogicDocument.Add_ChangedStyle(this.private_GetAllBasedStylesId(StyleId));
}
},
private_GetAllBasedStylesId : function(StyleId)
{
var arrStyles = [];
// Отдельно добавляем StyleId, т.к. данная функция вызывается и после удаления стиля из списка,
// но при этом в данный массив стиль должен попасть.
arrStyles.push(StyleId);
for (var CurStyleId in this.Style)
{
if (CurStyleId == StyleId)
{
arrStyles.push(StyleId);
}
var oStyle = this.Style[CurStyleId];
var BaseId = oStyle.Get_BasedOn();
var PassedStyles = [];
while (null != BaseId && undefined != BaseId)
{
var bBreak = false;
// Делаем проверку от зацикливания, среди уже пройденных стилей ищем текущий стриль.
for (var nIndex = 0, nCount = PassedStyles.length; nIndex < nCount; nIndex++)
{
if (PassedStyles[nIndex] == BaseId)
{
bBreak = true;
break;
}
}
if (true === bBreak)
break;
PassedStyles.push(BaseId);
if (BaseId == StyleId)
{
arrStyles.push(CurStyleId);
break;
}
var BaseStyle = this.Style[BaseId];
if (!BaseStyle)
break;
BaseId = BaseStyle.Get_BasedOn();
}
}
return arrStyles;
}, },
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// Undo/Redo функции // Undo/Redo функции
...@@ -4827,7 +4911,18 @@ CStyles.prototype = ...@@ -4827,7 +4911,18 @@ CStyles.prototype =
{ {
// TODO: Надо сделать механизм, чтобы данное действие не вызывалось много раз подряд, а только 1. // TODO: Надо сделать механизм, чтобы данное действие не вызывалось много раз подряд, а только 1.
var LogicDocument = editor.WordControl.m_oLogicDocument; var LogicDocument = editor.WordControl.m_oLogicDocument;
var AllParagraphs = LogicDocument.Get_AllParagraphsByStyle(StyleId);
var AllParagraphs = [];
if (StyleId != this.Default.Paragraph)
{
var AllStylesId = this.private_GetAllBasedStylesId(StyleId);
AllParagraphs = LogicDocument.Get_AllParagraphsByStyle(AllStylesId);
}
else
{
AllParagraphs = LogicDocument.Get_AllParagraphs({All : true});
}
var Count = AllParagraphs.length; var Count = AllParagraphs.length;
for (var Index = 0; Index < Count; Index++) for (var Index = 0; Index < Count; Index++)
...@@ -7150,6 +7245,7 @@ CTextPr.prototype = ...@@ -7150,6 +7245,7 @@ CTextPr.prototype =
{ {
TextPr.TextFill = this.TextFill.createDuplicate(); TextPr.TextFill = this.TextFill.createDuplicate();
} }
return TextPr; return TextPr;
}, },
...@@ -8155,7 +8251,7 @@ CTextPr.prototype = ...@@ -8155,7 +8251,7 @@ CTextPr.prototype =
{ {
delete this.PrChange; delete this.PrChange;
} }
} };
function CParaTab(Value, Pos) function CParaTab(Value, Pos)
{ {
......
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