Commit f41d01f1 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@54127 954022d7-b5bf-4e40-9824-e11837661b57
parent 5e4a20ef
...@@ -2958,8 +2958,17 @@ CDocument.prototype = ...@@ -2958,8 +2958,17 @@ CDocument.prototype =
if ( type_Paragraph == StartType && type_Paragraph == EndType && true === bOnTextAdd ) if ( type_Paragraph == StartType && type_Paragraph == EndType && true === bOnTextAdd )
{ {
// Встаем в конец параграфа и удаляем 1 элемент (чтобы соединить параграфы) // Встаем в конец параграфа и удаляем 1 элемент (чтобы соединить параграфы)
this.Content[StartPos].CurPos.ContentPos = this.Content[StartPos].Internal_GetEndPos();
this.Remove( 1, true ); if ( true !== Debug_ParaRunMode )
{
this.Content[StartPos].CurPos.ContentPos = this.Content[StartPos].Internal_GetEndPos();
this.Remove( 1, true );
}
else
{
this.Content[StartPos].Cursor_MoveToEndPos(false, false);
this.Remove( 1, true );
}
} }
else else
{ {
...@@ -2987,7 +2996,11 @@ CDocument.prototype = ...@@ -2987,7 +2996,11 @@ CDocument.prototype =
{ {
// Встаем в конец параграфа // Встаем в конец параграфа
this.CurPos.ContentPos = StartPos; this.CurPos.ContentPos = StartPos;
this.Content[StartPos].CurPos.ContentPos = this.Content[StartPos].Internal_GetEndPos();
if ( true !== Debug_ParaRunMode )
this.Content[StartPos].CurPos.ContentPos = this.Content[StartPos].Internal_GetEndPos();
else
this.Content[StartPos].Cursor_MoveToEndPos( false, false );
} }
else if ( type_Table == StartType ) else if ( type_Table == StartType )
{ {
...@@ -3036,7 +3049,11 @@ CDocument.prototype = ...@@ -3036,7 +3049,11 @@ CDocument.prototype =
{ {
// Документ не должен заканчиваться таблицей, поэтому здесь проверку не делаем // Документ не должен заканчиваться таблицей, поэтому здесь проверку не делаем
this.CurPos.ContentPos = this.Content.length - 1; this.CurPos.ContentPos = this.Content.length - 1;
this.Content[this.CurPos.ContentPos].CurPos.ContentPos = this.Content[this.CurPos.ContentPos].Internal_GetEndPos();
if ( true !== Debug_ParaRunMode )
this.Content[this.CurPos.ContentPos].CurPos.ContentPos = this.Content[this.CurPos.ContentPos].Internal_GetEndPos();
else
this.Content[this.CurPos.ContentPos].Cursor_MoveToEndPos( false, false );
} }
else else
{ {
...@@ -3073,7 +3090,11 @@ CDocument.prototype = ...@@ -3073,7 +3090,11 @@ CDocument.prototype =
{ {
// Документ не должен заканчиваться таблицей, поэтому здесь проверку не делаем // Документ не должен заканчиваться таблицей, поэтому здесь проверку не делаем
this.CurPos.ContentPos = this.Content.length - 1; this.CurPos.ContentPos = this.Content.length - 1;
this.Content[this.CurPos.ContentPos].CurPos.ContentPos = this.Content[this.CurPos.ContentPos].Internal_GetEndPos();
if ( true !== Debug_ParaRunMode )
this.Content[this.CurPos.ContentPos].CurPos.ContentPos = this.Content[this.CurPos.ContentPos].Internal_GetEndPos();
else
this.Content[this.CurPos.ContentPos].Cursor_MoveToEndPos( false, false );
} }
else else
{ {
......
This diff is collapsed.
...@@ -73,16 +73,25 @@ ParaRun.prototype = ...@@ -73,16 +73,25 @@ ParaRun.prototype =
{ {
return this.Parent; return this.Parent;
}, },
Reset_Parent : function(Parent, Paragraph)
{
this.Parent = Parent;
this.Paragraph = Paragraph;
},
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// Функции для работы с содержимым данного рана // Функции для работы с содержимым данного рана
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// Проверяем пустой ли ран // Проверяем пустой ли ран
Is_Empty : function(SkipAnchor) Is_Empty : function(Props)
{ {
var SkipAnchor = (undefined !== Props ? Props.SkipAnchor : false);
var SkipEnd = (undefined !== Props ? Props.SkipEnd : false);
var Count = this.Content.length; var Count = this.Content.length;
if ( true !== SkipAnchor ) if ( true !== SkipAnchor && true !== SkipEnd )
{ {
if ( Count > 0 ) if ( Count > 0 )
return false; return false;
...@@ -95,7 +104,7 @@ ParaRun.prototype = ...@@ -95,7 +104,7 @@ ParaRun.prototype =
{ {
var Item = this.Content[CurPos]; var Item = this.Content[CurPos];
if ( para_Drawing !== Item.Type || false !== Item.Is_Inline() ) if ( ( true !== SkipAnchor || para_Drawing !== Item.Type || false !== Item.Is_Inline() ) && ( true !== SkipEnd || para_End !== Item.Type ) )
return false; return false;
} }
...@@ -140,7 +149,7 @@ ParaRun.prototype = ...@@ -140,7 +149,7 @@ ParaRun.prototype =
for ( var CurPos = EndPos - 1; CurPos >= StartPos; CurPos-- ) for ( var CurPos = EndPos - 1; CurPos >= StartPos; CurPos-- )
{ {
if ( para_End !== this.Content[CurPos].Type ) if ( para_End !== this.Content[CurPos].Type )
this.Remove_FromContent( CurPos, 1 ); this.Remove_FromContent( CurPos, 1, true );
} }
} }
else else
...@@ -166,7 +175,7 @@ ParaRun.prototype = ...@@ -166,7 +175,7 @@ ParaRun.prototype =
return this.Paragraph.Parent.Select_DrawingObject( this.Content[CurPos - 1].Get_Id() ); return this.Paragraph.Parent.Select_DrawingObject( this.Content[CurPos - 1].Get_Id() );
} }
this.Remove_FromContent( CurPos - 1, 1 ); this.Remove_FromContent( CurPos - 1, 1, true );
this.State.ContentPos = CurPos - 1; this.State.ContentPos = CurPos - 1;
} }
...@@ -181,7 +190,7 @@ ParaRun.prototype = ...@@ -181,7 +190,7 @@ ParaRun.prototype =
return this.Paragraph.Parent.Select_DrawingObject( this.Content[CurPos].Get_Id() ); return this.Paragraph.Parent.Select_DrawingObject( this.Content[CurPos].Get_Id() );
} }
this.Remove_FromContent( CurPos, 1 ); this.Remove_FromContent( CurPos, 1, true );
this.State.ContentPos = CurPos; this.State.ContentPos = CurPos;
} }
...@@ -190,6 +199,28 @@ ParaRun.prototype = ...@@ -190,6 +199,28 @@ ParaRun.prototype =
return true; return true;
}, },
Remove_ParaEnd : function()
{
var Pos = -1;
var ContentLen = this.Content.length;
for ( var CurPos = 0; CurPos < ContentLen; CurPos++ )
{
if ( para_End === this.Content[CurPos].Type )
{
Pos = CurPos;
break;
}
}
if ( -1 === Pos )
return false;
this.Remove_FromContent( Pos, ContentLen - Pos );
return true;
},
// Добавляем элемент в позицию с сохранием в историю // Добавляем элемент в позицию с сохранием в историю
Add_ToContent : function(Pos, Item, UpdatePosition) Add_ToContent : function(Pos, Item, UpdatePosition)
{ {
...@@ -228,6 +259,12 @@ ParaRun.prototype = ...@@ -228,6 +259,12 @@ ParaRun.prototype =
if ( Range.EndPos > Pos ) if ( Range.EndPos > Pos )
Range.EndPos++; Range.EndPos++;
} }
// Особый случай, когда мы добавляем элемент в самый последний ран
if ( Pos === this.Content.length - 1 )
{
this.Lines[CurLine].Ranges[RangesCount - 1].EndPos++;
}
} }
// TODO: Поиск, NearPos, SpellCheck // TODO: Поиск, NearPos, SpellCheck
...@@ -576,7 +613,9 @@ ParaRun.prototype = ...@@ -576,7 +613,9 @@ ParaRun.prototype =
Get_SimpleChanges_ParaPos : function(Changes) Get_SimpleChanges_ParaPos : function(Changes)
{ {
var Change = Changes[0].Data; var Change = Changes[0].Data;
var Pos = ( Changes[0].Data.Type === historyitem_ParaRun_AddItem ? Change.Pos : Change.StartPos ); var Type = Changes[0].Data.Type;
//var Pos = ( Changes[0].Data.Type === historyitem_ParaRun_AddItem ? Change.Pos : Change.StartPos );
var Pos = Change.Pos;
var CurLine = 0; var CurLine = 0;
var CurRange = 0; var CurRange = 0;
...@@ -588,7 +627,7 @@ ParaRun.prototype = ...@@ -588,7 +627,7 @@ ParaRun.prototype =
for ( CurRange = 0; CurRange < RangesCount; CurRange++ ) for ( CurRange = 0; CurRange < RangesCount; CurRange++ )
{ {
var Range = this.Lines[CurLine].Ranges[CurRange]; var Range = this.Lines[CurLine].Ranges[CurRange];
if ( Pos < Range.EndPos && Pos >= Range.StartPos ) if ( ( historyitem_ParaRun_AddItem === Type && Pos < Range.EndPos && Pos >= Range.StartPos ) || ( ( historyitem_ParaRun_RemoveItem === Type && Pos <= Range.EndPos && Pos >= Range.StartPos ) ) )
return new CParaPos( ( CurLine === 0 ? CurRange + this.StartRange : CurRange ), CurLine + this.StartLine, 0, 0 ); return new CParaPos( ( CurLine === 0 ? CurRange + this.StartRange : CurRange ), CurLine + this.StartLine, 0, 0 );
} }
} }
...@@ -1880,6 +1919,11 @@ ParaRun.prototype = ...@@ -1880,6 +1919,11 @@ ParaRun.prototype =
{ {
return this.RecalcInfo; return this.RecalcInfo;
}, },
Reset_RecalcInfo : function()
{
this.RecalcInfo.Reset();
},
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// Функции отрисовки // Функции отрисовки
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
...@@ -3932,6 +3976,13 @@ function CParaRunRecalcInfo() ...@@ -3932,6 +3976,13 @@ function CParaRunRecalcInfo()
CParaRunRecalcInfo.prototype = CParaRunRecalcInfo.prototype =
{ {
Reset : function()
{
this.TextPr = true;
this.Measure = true;
this.Recalc = true;
this.RunLen = 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