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

Исправлен баг с определением переноса строки в параграфе (баг 22622)....

Исправлен баг с определением переноса строки в параграфе (баг 22622). Реализована возможность добавлять целиком ран в параграф, через функцию Add.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@56091 954022d7-b5bf-4e40-9824-e11837661b57
parent a2cb243c
......@@ -12626,12 +12626,14 @@ CDocument.prototype =
//-----------------------------------------------------------------------------------
// Функции для работы с textbox
//-----------------------------------------------------------------------------------
TextBox_Put : function(sText)
TextBox_Put : function(sText, rFonts)
{
if ( false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content) )
{
this.Create_NewHistoryPoint();
if ( undefined === rFonts )
{
// Отключаем пересчет, включим перед последним добавлением. Поскольку,
// у нас все добавляется в 1 параграф, так можно делать.
this.TurnOffRecalc = true;
......@@ -12653,6 +12655,25 @@ CDocument.prototype =
// На случай, если Count = 0
this.TurnOffRecalc = false;
}
else
{
var Para = this.Get_CurrentParagraph();
if ( null === Para )
return;
var RunPr = Para.Get_TextPr();
if ( null === RunPr || undefined === RunPr )
RunPr = new CTextPr();
RunPr.RFonts = rFonts;
var Run = new CParaRun( Para );
Run.Set_Pr( RunPr );
Para.Add( Run );
this.Recalculate();
}
}
},
//-----------------------------------------------------------------------------------
// события вьюера
......
......@@ -372,8 +372,40 @@ ParaHyperlink.prototype =
},
Add : function(Item)
{
switch (Item.Type)
{
case para_Run :
{
var CurItem = this.Content[this.State.ContentPos];
switch ( CurItem.Type )
{
case para_Run :
{
var NewRun = CurItem.Split2(CurItem.State.ContentPos);
this.Internal_Content_Add( CurPos + 1, Item );
this.Internal_Content_Add( CurPos + 2, NewRun );
break;
}
default:
{
this.Content[this.State.ContentPos].Add( Item );
break;
}
}
break;
}
default :
{
this.Content[this.State.ContentPos].Add( Item );
break;
}
}
},
Remove : function(Direction, bOnAddText)
......
......@@ -4264,7 +4264,8 @@ Paragraph.prototype =
}
}
Bottom = Bottom2 + this.Lines[CurLine].Metrics.LineGap;
Bottom2 += this.Lines[CurLine].Metrics.LineGap;
Bottom = Bottom2;
// Если данная строка последняя, тогда подкорректируем нижнюю границу
if ( true === PRS.End )
......@@ -7747,68 +7748,6 @@ Paragraph.prototype =
// Добавляем новый элемент к содержимому параграфа (на текущую позицию)
Add : function(Item)
{
if ( true !== Debug_ParaRunMode )
{
var CurPos = this.CurPos.ContentPos;
var CurPos2 = this.CurPos.ContentPos2;
if ( "undefined" != typeof(Item.Parent) )
Item.Parent = this;
switch (Item.Type)
{
case para_Text:
case para_Space:
{
if ( undefined !== this.Content[CurPos2] && para_Math === this.Content[CurPos2].Type )
this.Content[CurPos2].Add( Item );
else
this.Internal_Content_Add( CurPos, Item );
break;
}
case para_TextPr:
{
this.Internal_AddTextPr( Item.Value );
break;
}
case para_HyperlinkStart:
{
this.Internal_AddHyperlink( Item );
break;
}
case para_Math:
{
if ( undefined !== this.Content[CurPos2] && para_Math === this.Content[CurPos2].Type )
this.Content[CurPos2].Add( Item );
else
{
var TextPr = this.Internal_GetTextPr( CurPos );
var NewParaTextPr = new ParaTextPr( TextPr );
this.Internal_Content_Add( CurPos, Item );
this.Internal_Content_Add( CurPos + 1, NewParaTextPr );
}
break;
}
case para_PageNum:
case para_Tab:
case para_Drawing:
default:
{
this.Internal_Content_Add( CurPos, Item );
break;
}
}
if ( para_TextPr != Item.Type )
this.DeleteCollaborativeMarks = true;
this.RecalcInfo.Set_Type_0(pararecalc_0_All);
}
else
{
// Выставляем родительский класс
Item.Parent = this;
......@@ -7942,9 +7881,42 @@ Paragraph.prototype =
break;
}
case para_Run :
{
var ContentPos = this.Get_ParaContentPos(false, false);
var CurPos = ContentPos.Get(0);
var CurItem = this.Content[CurPos];
switch ( CurItem.Type )
{
case para_Run :
{
var NewRun = CurItem.Split(ContentPos, 1);
this.Internal_Content_Add( CurPos + 1, Item );
this.Internal_Content_Add( CurPos + 2, NewRun );
break;
}
case para_Math:
case para_Hyperlink:
{
CurItem.Add( Item );
break;
}
default:
{
this.Internal_Content_Add( CurPos + 1, Item );
break;
}
}
break;
}
}
},
// Данная функция вызывается, когда уже точно известно, что у нас либо выделение начинается с начала параграфа, либо мы стоим курсором в начале параграфа
......
......@@ -831,7 +831,11 @@ ParaRun.prototype =
Split : function (ContentPos, Depth)
{
var CurPos = ContentPos.Get(Depth);
return this.Split2( CurPos );
},
Split2 : function(Pos)
{
// Создаем новый ран
var NewRun = new ParaRun(this.Paragraph);
......
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