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,10 +2958,19 @@ CDocument.prototype =
if ( type_Paragraph == StartType && type_Paragraph == EndType && true === bOnTextAdd )
{
// Встаем в конец параграфа и удаляем 1 элемент (чтобы соединить параграфы)
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
{
this.CurPos.ContentPos = StartPos + 1;
this.Content[StartPos + 1].Cursor_MoveToStartPos();
......@@ -2987,7 +2996,11 @@ CDocument.prototype =
{
// Встаем в конец параграфа
this.CurPos.ContentPos = StartPos;
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 )
{
......@@ -3036,7 +3049,11 @@ CDocument.prototype =
{
// Документ не должен заканчиваться таблицей, поэтому здесь проверку не делаем
this.CurPos.ContentPos = this.Content.length - 1;
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
{
......@@ -3073,7 +3090,11 @@ CDocument.prototype =
{
// Документ не должен заканчиваться таблицей, поэтому здесь проверку не делаем
this.CurPos.ContentPos = this.Content.length - 1;
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
{
......
This diff is collapsed.
......@@ -73,16 +73,25 @@ ParaRun.prototype =
{
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;
if ( true !== SkipAnchor )
if ( true !== SkipAnchor && true !== SkipEnd )
{
if ( Count > 0 )
return false;
......@@ -95,7 +104,7 @@ ParaRun.prototype =
{
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;
}
......@@ -140,7 +149,7 @@ ParaRun.prototype =
for ( var CurPos = EndPos - 1; CurPos >= StartPos; CurPos-- )
{
if ( para_End !== this.Content[CurPos].Type )
this.Remove_FromContent( CurPos, 1 );
this.Remove_FromContent( CurPos, 1, true );
}
}
else
......@@ -166,7 +175,7 @@ ParaRun.prototype =
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;
}
......@@ -181,7 +190,7 @@ ParaRun.prototype =
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;
}
......@@ -190,6 +199,28 @@ ParaRun.prototype =
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)
{
......@@ -228,6 +259,12 @@ ParaRun.prototype =
if ( Range.EndPos > Pos )
Range.EndPos++;
}
// Особый случай, когда мы добавляем элемент в самый последний ран
if ( Pos === this.Content.length - 1 )
{
this.Lines[CurLine].Ranges[RangesCount - 1].EndPos++;
}
}
// TODO: Поиск, NearPos, SpellCheck
......@@ -576,7 +613,9 @@ ParaRun.prototype =
Get_SimpleChanges_ParaPos : function(Changes)
{
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 CurRange = 0;
......@@ -588,7 +627,7 @@ ParaRun.prototype =
for ( CurRange = 0; CurRange < RangesCount; 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 );
}
}
......@@ -1880,6 +1919,11 @@ ParaRun.prototype =
{
return this.RecalcInfo;
},
Reset_RecalcInfo : function()
{
this.RecalcInfo.Reset();
},
//-----------------------------------------------------------------------------------
// Функции отрисовки
//-----------------------------------------------------------------------------------
......@@ -3932,6 +3976,13 @@ function CParaRunRecalcInfo()
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