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

Откатил предыдущую заливку и переделал ее заново. Теперь в конце функции...

Откатил предыдущую заливку и переделал ее заново. Теперь в конце функции Get_RecalcData можно делать дополнительные действия, например пересчитывать сетку таблицы. За счет этого также получилось ускорить вставку таблиц (баг 30513).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@65273 954022d7-b5bf-4e40-9824-e11837661b57
parent 24cc5ce8
......@@ -6,11 +6,6 @@
* Time: 14:35
*/
var historyoperation_None = 0x00;
var historyoperation_Undo = 0x01;
var historyoperation_Redo = 0x02;
var historyoperation_GetRecalcData = 0x03;
function CHistory(Document)
{
this.Index = -1;
......@@ -40,8 +35,6 @@ function CHistory(Document)
this.FileCheckSum = 0;
this.FileSize = 0;
this.Operation = historyoperation_None;
}
CHistory.prototype =
......@@ -174,8 +167,6 @@ CHistory.prototype =
if ( true != this.Can_Undo() )
return null;
this.private_StartOperation(historyoperation_Undo);
if (editor)
editor.setUserAlive();
......@@ -219,7 +210,6 @@ CHistory.prototype =
if (null != Point)
this.Document.Set_SelectionState( Point.State );
this.private_EndOperation();
return this.RecalculateData;
},
......@@ -231,8 +221,6 @@ CHistory.prototype =
if (editor)
editor.setUserAlive();
this.private_StartOperation(historyoperation_Redo);
this.Document.Selection_Remove();
......@@ -257,7 +245,6 @@ CHistory.prototype =
this.Document.Set_SelectionState( State );
this.private_EndOperation();
return this.RecalculateData;
},
......@@ -430,7 +417,9 @@ CHistory.prototype =
All: false,
Map: {},
ThemeInfo: null
}
},
Tables : []
};
},
......@@ -527,6 +516,27 @@ CHistory.prototype =
}
},
Add_RecalcTableGrid : function(TableId)
{
this.RecalculateData.Tables[TableId] = true;
},
OnEnd_GetRecalcData : function()
{
// Пересчитываем таблицы
for (var TableId in this.RecalculateData.Tables)
{
var Table = g_oTableId.Get_ById(TableId);
if (null !== Table)
{
if (true === Table.Check_ChangedTableGrid())
{
Table.Refresh_RecalcData2(0, 0);
}
}
}
},
Check_UninonLastPoints : function()
{
// Не объединяем точки в истории, когда отключается пересчет.
......@@ -650,6 +660,7 @@ CHistory.prototype =
}
}
this.OnEnd_GetRecalcData();
return this.RecalculateData;
},
......@@ -839,23 +850,6 @@ CHistory.prototype =
};
CHistory.prototype.private_StartOperation = function(Type)
{
this.Operation = Type;
};
CHistory.prototype.private_EndOperation = function(Type)
{
this.Operation = historyoperation_None;
};
CHistory.prototype.Is_UndoOperation = function()
{
return (this.Operation === historyoperation_Undo ? true : false);
};
CHistory.prototype.Is_RedoOperation = function()
{
return (this.Operation === historyoperation_Redo ? true : false);
};
var History = null;
function CRC32()
......
......@@ -6356,10 +6356,8 @@ CTable.prototype =
if ( true === bNeedRecalc )
{
if (true !== History.Is_UndoOperation() && true !== History.Is_RedoOperation())
this.Internal_RecalculateGrid();
this.Refresh_RecalcData2( nRowIndex, 0 );
History.Add_RecalcTableGrid(this.Get_Id());
this.Refresh_RecalcData2(nRowIndex, 0);
}
},
......@@ -19494,7 +19492,7 @@ CTable.prototype =
return NewGrid;
}
return undefined;
return [];
},
private_SetTableLayoutFixedAndUpdateGrid : function(nExceptColNum)
......@@ -19743,6 +19741,22 @@ CTable.prototype.private_GetPrevCell = function(RowIndex, CellIndex)
{
return this.Internal_Get_PrevCell({Cell : CellIndex, Row : RowIndex});
};
CTable.prototype.Check_ChangedTableGrid = function()
{
var TableGrid_old = this.Internal_Copy_Grid(this.TableGridCalc);
this.Internal_RecalculateGrid();
var TableGrid_new = this.TableGridCalc;
for (var CurCol = 0, ColsCount = this.TableGridCalc.length; CurCol < ColsCount; CurCol++)
{
if (Math.abs(TableGrid_old[CurCol] - TableGrid_new[CurCol]) > 0.001)
{
this.RecalcInfo.TableBorders = true;
return true;
}
}
return false;
};
// Класс CTableRow
function CTableRow(Table, Cols, TableGrid)
......@@ -22680,29 +22694,13 @@ CTableCell.prototype =
var Table = this.Row.Table;
var TablePr = Table.Get_CompiledPr(false).TablePr;
if (tbllayout_AutoFit === TablePr.TableLayout && true !== History.Is_UndoOperation() && true !== History.Is_RedoOperation())
if (tbllayout_AutoFit === TablePr.TableLayout)
{
if (this.Row.Table.Parent.Pages.length > 0)
{
// Если изменение внутри ячейки влечет за собой изменение сетки таблицы, тогда
// пересчитывать таблицу надо с самого начала.
var CurCol;
var ColsCount = Table.TableGridCalc.length;
var TableGrid_old = [];
for (CurCol = 0; CurCol < ColsCount; CurCol++)
TableGrid_old[CurCol] = Table.TableGridCalc[CurCol];
Table.Internal_RecalculateGrid();
var TableGrid_new = Table.TableGridCalc;
for (CurCol = 0; CurCol < ColsCount; CurCol++)
{
if (Math.abs(TableGrid_old[CurCol] - TableGrid_new[CurCol]) > 0.001)
{
Table.RecalcInfo.TableBorders = true;
return Table.Refresh_RecalcData2(0, 0);
}
}
History.Add_RecalcTableGrid(Table.Get_Id());
}
else
return Table.Refresh_RecalcData2(0, 0);
......
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