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

Сделано, чтобы ссылку можно было разбить на 2(баг 24423). Исправлен баг со...

Сделано, чтобы ссылку можно было разбить на 2(баг 24423). Исправлен баг со снятием выделения с таблицы (баг 24450). Исправлен баг с работой функции IncDecFontSize в таблицах (баг 24448). Исправлен баг с пересчетом заголовока в таблицах (баг 24446).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@56458 954022d7-b5bf-4e40-9824-e11837661b57
parent c2550a7d
......@@ -810,6 +810,106 @@ ParaHyperlink.prototype =
return;
}
},
Split : function (ContentPos, Depth)
{
var NewHyperlink = new ParaHyperlink();
NewHyperlink.Set_Value( this.Value );
NewHyperlink.Set_ToolTip( this.ToolTip );
var CurPos = ContentPos.Get(Depth);
var TextPr = this.Get_TextPr(ContentPos, Depth);
// Разделяем текущий элемент (возвращается правая, отделившаяся часть, если она null, тогда заменяем
// ее на пустой ран с заданными настройками).
var NewElement = this.Content[CurPos].Split( ContentPos, Depth + 1 );
if ( null === NewElement )
{
NewElement = new ParaRun();
NewElement.Set_Pr( TextPr.Copy() );
}
// Теперь делим на три части:
// 1. До элемента с номером CurPos включительно (оставляем эту часть в исходном параграфе)
// 2. После элемента с номером CurPos (добавляем эту часть в новый параграф)
// 3. Новый элемент, полученный после разделения элемента с номером CurPos, который мы
// добавляем в начало нового параграфа.
var NewContent = this.Content.slice( CurPos + 1 );
this.Remove_FromContent( CurPos + 1, this.Content.length - CurPos - 1, false );
// Добавляем в новую гиперссылку Right элемент и NewContent
var Count = NewContent.length;
for ( var Pos = 0; Pos < Count; Pos++ )
NewHyperlink.Add_ToContent( Pos, NewContent[Pos], false );
NewHyperlink.Add_ToContent( 0, NewElement, false );
return NewHyperlink;
},
Split2 : function(CurPos)
{
// Создаем новый ран
var NewRun = new ParaRun(this.Paragraph);
// Копируем настройки
NewRun.Set_Pr( this.Pr.Copy() );
// TODO: Как только избавимся от para_End переделать тут
// Проверим, если наш ран содержит para_End, тогда мы должны para_End переметить в правый ран
var CheckEndPos = -1;
var CheckEndPos2 = Math.min( CurPos, this.Content.length );
for ( var Pos = 0; Pos < CheckEndPos2; Pos++ )
{
if ( para_End === this.Content[Pos].Type )
{
CheckEndPos = Pos;
break;
}
}
if ( -1 !== CheckEndPos )
CurPos = CheckEndPos;
// Разделяем содержимое по ранам
NewRun.Concat_ToContent( this.Content.slice(CurPos) );
this.Remove_FromContent( CurPos, this.Content.length - CurPos, true );
// Если были точки орфографии, тогда переместим их в новый ран
var SpellingMarksCount = this.SpellingMarks.length;
for ( var Index = 0; Index < SpellingMarksCount; Index++ )
{
var Mark = this.SpellingMarks[Index];
var MarkPos = ( true === Mark.Start ? Mark.Element.StartPos.Get(Mark.Depth) : Mark.Element.EndPos.Get(Mark.Depth) );
if ( MarkPos >= CurPos )
{
var MarkElement = Mark.Element;
if ( true === Mark.Start )
{
MarkElement.ClassesS[Mark.Depth] = NewRun;
MarkElement.StartPos.Data[Mark.Depth] -= CurPos;
}
else
{
MarkElement.ClassesE[Mark.Depth] = NewRun;
MarkElement.EndPos.Data[Mark.Depth] -= CurPos;
}
NewRun.SpellingMarks.push( Mark );
this.SpellingMarks.splice( Index, 1 );
SpellingMarksCount--;
Index--;
}
}
return NewRun;
},
//-----------------------------------------------------------------------------------
// Функции пересчета
//-----------------------------------------------------------------------------------
......@@ -1117,7 +1217,7 @@ ParaHyperlink.prototype =
{
this.Content[CurPos].Shift_Range(Dx, Dy, _CurLine, _CurRange);
}
},
},
//-----------------------------------------------------------------------------------
// Функции отрисовки
//-----------------------------------------------------------------------------------
......
This diff is collapsed.
......@@ -4334,6 +4334,40 @@ ParaRun.prototype =
this.Set_FontSize( FontSize_IncreaseDecreaseValue( IncFontSize, CurTextPr.FontSize ) );
}
// Дополнительно проверим, если у нас para_End лежит в данном ране и попадает в выделение, тогда
// применим заданные настроки к символу конца параграфа
// TODO: Возможно, стоит на этапе пересчета запонимать, лежит ли para_End в данном ране. Чтобы в каждом
// ране потом не бегать каждый раз по всему массиву в поисках para_End.
var bEnd = false;
var Count = this.Content.length;
for ( var Pos = 0; Pos < Count; Pos++ )
{
if ( para_End === this.Content[Pos].Type )
{
bEnd = true;
break;
}
}
if ( true === bEnd )
{
if ( undefined === IncFontSize )
this.Paragraph.TextPr.Apply_TextPr( TextPr );
else
{
var Para = this.Paragraph;
// Выставляем настройки для символа параграфа
var EndTextPr = Para.Get_CompiledPr2(false).TextPr.Copy();
EndTextPr.Merge( Para.TextPr.Value );
// TODO: Как только перенесем историю изменений TextPr в сам класс CTextPr, переделать тут
Para.TextPr.Set_FontSize( FontSize_IncreaseDecreaseValue( IncFontSize, EndTextPr.FontSize ) );
}
}
}
else
{
......
......@@ -8385,7 +8385,20 @@ CTable.prototype =
}
}
else
{
this.CurCell.Content.Remove(Count, bOnlyText, bRemoveOnlySelection, bOnTextAdd);
if ( false === this.CurCell.Content.Is_SelectionUse() )
{
var Cell = this.CurCell;
this.Selection.Use = false;
this.Selection.Start = false;
this.Selection.StartPos.Pos = { Row : Cell.Row.Index, Cell : Cell.Index };
this.Selection.EndPos.Pos = { Row : Cell.Row.Index, Cell : Cell.Index };
}
}
},
Cursor_GetPos : function()
......
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