Commit dee2af2b authored by Ilya.Kirillov's avatar Ilya.Kirillov

Исправлен баг с выделением и постановкой курсора в рамку. Исправлен баг с...

Исправлен баг с выделением и постановкой курсора в рамку. Исправлен баг с применением настроек для рамки. Добавлены настройки границы рамки и настройки шрифта буквицы в общие настройки параграфа, передаваемые в интерфейс. Так же, добавлен булевский параметр, контролирующий возможность добавления буквицы.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@49147 954022d7-b5bf-4e40-9824-e11837661b57
parent 4b70b35e
......@@ -1032,7 +1032,7 @@ CDocument.prototype =
var FrameDx = ( undefined === FramePr.HSpace ? 0 : FramePr.HSpace );
var FrameDy = ( undefined === FramePr.VSpace ? 0 : FramePr.VSpace );
this.DrawingObjects.addFloatTable( new CFlowParagraph( Element, FrameX, FrameY, FrameW, FrameH, FrameDx, FrameDy ) );
this.DrawingObjects.addFloatTable( new CFlowParagraph( Element, FrameX, FrameY, FrameW, FrameH, FrameDx, FrameDy, Index, FlowCount ) );
Index += FlowCount - 1;
......@@ -5389,9 +5389,11 @@ CDocument.prototype =
}
// Раз дошли до сюда, значит можно у всех выделенных параграфов менять настройку рамки
for ( var Pos = StartPos; Pos < EndPos; Pos++ )
var FrameParas = this.Content[StartPos].Internal_Get_FrameParagraphs();
var FrameCount = FrameParas.length;
for ( var Pos = 0; Pos < FrameCount; Pos++ )
{
this.Content[Pos].Set_FramePr(FramePr, bDelete);
FrameParas[Pos].Set_FramePr(FramePr, bDelete);
}
}
else
......@@ -5401,7 +5403,13 @@ CDocument.prototype =
if ( type_Paragraph != Element.GetType() || undefined === Element.Get_FramePr() )
return;
Element.Set_FramePr(FramePr, bDelete);
var FrameParas = Element.Internal_Get_FrameParagraphs();
var FrameCount = FrameParas.length;
for ( var Pos = 0; Pos < FrameCount; Pos++ )
{
FrameParas[Pos].Set_FramePr(FramePr, bDelete);
}
}
}
......@@ -5753,6 +5761,10 @@ CDocument.prototype =
Result_ParaPr = Pr;
Result_ParaPr.CanAddTable = ( true === Pr.Locked ? false : true );
// Если мы находимся в рамке, тогда дополняем ее свойства настройками границы и настройкой текста (если это буквица)
if ( undefined != Result_ParaPr.FramePr )
this.Content[StartPos].Supplement_FramePr( Result_ParaPr.FramePr );
}
else
{
......@@ -5765,6 +5777,10 @@ CDocument.prototype =
Result_ParaPr = ParaPr.Copy();
Result_ParaPr.Locked = Locked;
Result_ParaPr.CanAddTable = ( ( true === Locked ) ? ( ( true === Item.Cursor_IsEnd() ) ? true : false ) : true );
// Если мы находимся в рамке, тогда дополняем ее свойства настройками границы и настройкой текста (если это буквица)
if ( undefined != Result_ParaPr.FramePr )
Item.Supplement_FramePr( Result_ParaPr.FramePr );
}
else if ( type_Table == Item.GetType() )
{
......@@ -6096,6 +6112,27 @@ CDocument.prototype =
if ( null != ParaPr )
{
// Проверим, можно ли добавить буквицу
ParaPr.CanAddDropCap = false;
if ( docpostype_Content === this.CurPos.Type )
{
var Para = null;
if ( false === this.Selection.Use && type_Paragraph === this.Content[this.CurPos.ContentPos].GetType() )
Para = this.Content[this.CurPos.ContentPos];
else if ( true === this.Selection.Use && this.Selection.StartPos <= this.Selection.EndPos && type_Paragraph === this.Content[this.Selection.StartPos].GetType() )
Para = this.Content[this.Selection.StartPos];
else if ( true === this.Selection.Use && this.Selection.StartPos > this.Selection.EndPos && type_Paragraph === this.Content[this.Selection.EndPos].GetType() )
Para = this.Content[this.Selection.EndPos];
if ( null != Para && undefined === Para.Get_FramePr() )
{
var Prev = Para.Get_DocumentPrev();
if ( (null === Prev || undefined === Prev.Get_FramePr() || undefined === Prev.Get_FramePr().DropCap) && true === Para.Can_AddDropCap() )
ParaPr.CanAddDropCap = true;
}
}
if ( undefined != ParaPr.Tabs )
editor.Update_ParaTab( Default_Tab_Stop, ParaPr.Tabs );
......@@ -6168,7 +6205,27 @@ CDocument.prototype =
// Сначала проверим Flow-таблицы
var FlowTable = this.DrawingObjects.getTableByXY( X, Y, PageNum, this );
if ( null != FlowTable )
return FlowTable.Table.Index;
{
if ( flowobject_Table === FlowTable.Get_Type() )
return FlowTable.Table.Index;
else
{
var Frame = FlowTable;
var StartPos = Frame.StartIndex;
var FlowCount = Frame.FlowCount;
for ( var Pos = StartPos; Pos < StartPos + FlowCount; Pos++ )
{
var Item = this.Content[Pos];
if ( Y < Item.Pages[0].Bounds.Bottom )
return Pos;
}
return StartPos + FlowCount - 1;
}
}
var StartPos = this.Pages[PageNum].Pos;
var EndPos = this.Content.length - 1;
......@@ -6181,7 +6238,7 @@ CDocument.prototype =
for ( var Index = StartPos; Index <= EndPos; Index++ )
{
var Item = this.Content[Index];
if ( type_Table != Item.GetType() || false != Item.Is_Inline() )
if ( false != Item.Is_Inline() )
InlineElements.push( Index );
}
......@@ -9306,7 +9363,7 @@ CDocument.prototype =
FramePr = TempFramePr;
}
else if ( false === FramePr.Compare(TempFramePr) )
else if ( undefined === TempFramePr || false === FramePr.Compare(TempFramePr) )
{
FramePr = undefined;
break;
......
......@@ -5898,6 +5898,8 @@ CDocumentContent.prototype =
if ( null != ParaPr )
{
ParaPr.CanAddDropCap = false;
if ( undefined != ParaPr.Tabs )
editor.Update_ParaTab( Default_Tab_Stop, ParaPr.Tabs );
......
......@@ -2284,7 +2284,7 @@ CFlowTable2.prototype =
};
function CFlowParagraph(Paragraph, X, Y, W, H, Dx, Dy)
function CFlowParagraph(Paragraph, X, Y, W, H, Dx, Dy, StartIndex, FlowCount)
{
this.Table = Paragraph;
this.Paragraph = Paragraph;
......@@ -2293,6 +2293,9 @@ function CFlowParagraph(Paragraph, X, Y, W, H, Dx, Dy)
this.PageNum = Paragraph.PageNum;
this.PageController = 0;
this.StartIndex = StartIndex;
this.FlowCount = FlowCount;
this.Distance =
{
T : Dy,
......
......@@ -10566,6 +10566,63 @@ Paragraph.prototype =
}
},
Supplement_FramePr : function(FramePr)
{
if ( undefined != FramePr.DropCap && dropcap_None != FramePr.DropCap )
{
var _FramePr = this.Get_FramePr();
var FirstFramePara = this;
var Prev = FirstFramePara.Get_DocumentPrev();
while ( null != Prev )
{
if ( type_Paragraph === Prev.GetType() )
{
var PrevFramePr = Prev.Get_FramePr();
if ( undefined != PrevFramePr && true === _FramePr.Compare( PrevFramePr ) )
{
FirstFramePara = Prev;
Prev = Prev.Get_DocumentPrev();
}
else
break;
}
else
break;
}
var TextPr = FirstFramePara.Internal_CalculateTextPr(0);
FramePr.FontFamily =
{
Name : TextPr.RFonts.Ascii.Name,
Index : TextPr.RFonts.Ascii.Index
};
}
var FrameParas = this.Internal_Get_FrameParagraphs();
var Count = FrameParas.length;
var ParaPr = FrameParas[0].Get_CompiledPr2(false).ParaPr.Copy();
for ( var Index = 1; Index < Count; Index++ )
{
var TempPr= FrameParas[Index].Get_CompiledPr2(false).ParaPr;
ParaPr = ParaPr.Compare(TempPr);
}
FramePr.Brd = ParaPr.Brd;
},
Can_AddDropCap : function()
{
var Count = this.Content.length;
for ( var Pos = 0; Pos < Count; Pos++ )
{
if ( para_Text === this.Content[Pos].Type )
return true;
}
return false;
},
// Разделяем данный параграф
Split : function(NewParagraph, Pos)
{
......
......@@ -1651,6 +1651,8 @@ function CParagraphFrame(obj)
{
if ( obj )
{
this.FromDropCapMenu = false;
this.DropCap = ( dropcap_None === obj.DropCap ? c_oAscDropCap.None : ( dropcap_Drop === obj.DropCap ? c_oAscDropCap.Drop : ( dropcap_Margin === obj.DropCap ? c_oAscDropCap.Margin : undefined ) ) );
this.H = obj.H;
this.HAnchor = obj.HAnchor;
......@@ -1665,9 +1667,13 @@ function CParagraphFrame(obj)
this.XAlign = obj.XAlign;
this.Y = obj.Y;
this.YAlign = obj.YAlign;
this.Brd = (undefined != obj.Brd && null != obj.Brd) ? new CParagraphBorders (obj.Brd) : null;
this.FontFamily = (undefined != obj.FontFamily && null != obj.FontFamily) ? new CTextFontFamily (obj.FontFamily) : null;
}
else
{
this.FromDropCapMenu = false;
this.DropCap = undefined;
this.H = undefined;
this.HAnchor = undefined;
......@@ -1682,6 +1688,8 @@ function CParagraphFrame(obj)
this.XAlign = undefined;
this.Y = undefined;
this.YAlign = undefined;
this.Brd = null;
this.FontFamily = null;
}
}
......@@ -1713,6 +1721,11 @@ CParagraphFrame.prototype.get_Y = function () { return this.Y; }
CParagraphFrame.prototype.put_Y = function (v) { this.Y = v; }
CParagraphFrame.prototype.get_YAlign = function () { return this.YAlign; }
CParagraphFrame.prototype.put_YAlign = function (v) { this.YAlign = v; }
CParagraphFrame.prototype.get_Borders = function () { return this.Brd; }
CParagraphFrame.prototype.put_Borders = function (v) { this.Brd = v; }
CParagraphFrame.prototype.get_FontFamily = function () { return this.FontFamily; }
CParagraphFrame.prototype.put_FontFamily = function (v) { this.FontFamily = v; }
CParagraphFrame.prototype.put_FromDropCapMenu = function (v) { this.FromDropCapMenu = v; }
asc_docs_api.prototype.put_FramePr = function(Obj)
{
......@@ -1723,6 +1736,11 @@ asc_docs_api.prototype.put_FramePr = function(Obj)
}
}
asc_docs_api.prototype.asc_addDropCap = function(bInText)
{
this.WordControl.m_oLogicDocument.Add_DropCap( bInText );
}
function CParagraphProp (obj)
{
if (obj)
......@@ -1741,6 +1759,7 @@ function CParagraphProp (obj)
this.Locked = (undefined != obj.Locked && null != obj.Locked ) ? obj.Locked : false;
this.CanAddTable = (undefined != obj.CanAddTable ) ? obj.CanAddTable : true;
this.FramePr = (undefined != obj.FramePr ) ? new CParagraphFrame( obj.FramePr ) : undefined;
this.CanAddDropCap = (undefined != obj.CanAddDropCap ) ? obj.CanAddDropCap : false;
this.Subscript = (undefined != obj.Subscript) ? obj.Subscript : undefined;
this.Superscript = (undefined != obj.Superscript) ? obj.Superscript : undefined;
......@@ -1782,6 +1801,7 @@ function CParagraphProp (obj)
this.Locked = false;
this.CanAddTable = true;
this.Tabs = undefined;
this.CanAddDropCap = false;
this.Subscript = undefined;
this.Superscript = undefined;
......@@ -1836,6 +1856,7 @@ CParagraphProp.prototype.get_DefaultTab = function () { return this.DefaultTab;
CParagraphProp.prototype.put_DefaultTab = function (v) { this.DefaultTab = v; }
CParagraphProp.prototype.get_FramePr = function () { return this.FramePr; }
CParagraphProp.prototype.put_FramePr = function (v) { this.FramePr = v; }
CParagraphProp.prototype.get_CanAddDropCap = function() { return this.CanAddDropCap; }
// Paragraph properties
function CParagraphPropEx (obj)
......
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