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

Добавлен символьный стиль для использования его в гиперссылках, как следствие,...

Добавлен символьный стиль для использования его в гиперссылках, как следствие, исправлен баг с удалением гиперссылки (баг 19721).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@49649 954022d7-b5bf-4e40-9824-e11837661b57
parent 5b267a8e
......@@ -5508,15 +5508,6 @@ Paragraph.prototype =
if ( true === Pos.Found )
{
var CurTextPr = this.Content[Pos.LetterPos].Value;
// Копируем настройки из символьного стиля
if ( undefined != CurTextPr.RStyle )
{
var Styles = this.Parent.Get_Styles();
var StyleTextPr = Styles.Get_Pr( CurTextPr.RStyle, styletype_Character).TextPr;
TextPr.Merge( StyleTextPr );
}
TextPr.Merge( CurTextPr );
}
// Если ничего не нашли, то TextPr будет пустым, что тоже нормально
......@@ -6564,11 +6555,19 @@ Paragraph.prototype =
var Item = this.Content[CurPos];
var ItemType = Item.Type;
if ( para_Text === ItemType || para_Space === ItemType || para_End === ItemType || para_Tab === ItemType || (para_Drawing === ItemType && true === Item.Is_Inline() ) || para_PageNum === ItemType || para_NewLine === ItemType || para_HyperlinkEnd === ItemType )
if ( para_Text === ItemType || para_Space === ItemType || para_End === ItemType || para_Tab === ItemType || (para_Drawing === ItemType && true === Item.Is_Inline() ) || para_PageNum === ItemType || para_NewLine === ItemType )
{
this.CurPos.ContentPos = CurPos + 1;
return;
}
else if ( para_HyperlinkEnd === ItemType )
{
while ( CurPos < Count - 1 && para_TextPr === this.Content[CurPos + 1].Type )
CurPos++;
this.CurPos.ContentPos = CurPos + 1;
return;
}
}
// 3. Если мы попали в начало параграфа, тогда пропускаем все TextPr
......@@ -7172,13 +7171,7 @@ Paragraph.prototype =
{
// Создаем текстовую настройку для гиперссылки
var Hyperlink_end = new ParaHyperlinkEnd();
var TextPrObj =
{
Color : { r : 0, g : 0, b : 255 },
Underline : true
};
var TextPr = new CTextPr();
TextPr.Set_FromObject( TextPrObj );
var RStyle = editor.WordControl.m_oLogicDocument.Get_Styles().Get_Default_Hyperlink();
if ( true === this.ApplyToAll )
{
......@@ -7206,7 +7199,10 @@ Paragraph.prototype =
var TextPr_end = this.Internal_GetTextPr( EndPos );
var TextPr_start = this.Internal_GetTextPr( StartPos );
TextPr_start.Merge( TextPr );
TextPr_start.RStyle = RStyle;
TextPr_start.Underline = undefined;
TextPr_start.Color = undefined;
this.Internal_Content_Add( EndPos, new ParaTextPr( TextPr_end ) );
this.Internal_Content_Add( EndPos, Hyperlink_end );
......@@ -7218,7 +7214,12 @@ Paragraph.prototype =
for ( var Pos = StartPos + 2; Pos < EndPos + 1; Pos++ )
{
if ( this.Content[Pos].Type == para_TextPr )
this.Content[Pos].Apply_TextPr( TextPr );
{
var Item = this.Content[Pos];
Item.Set_RStyle( RStyle );
Item.Set_Underline( undefined );
Item.Set_Color( undefined );
}
}
return;
......@@ -7640,8 +7641,10 @@ Paragraph.prototype =
else if ( null != HyperProps.Text && "" != HyperProps.Text ) // добавлять ссылку, без селекта и с пустым текстом нельзя
{
var TextPr_hyper = this.Internal_GetTextPr(this.CurPos.ContentPos);
TextPr_hyper.Color = new CDocumentColor( 0, 0, 255 );
TextPr_hyper.Underline = true;
var Styles = editor.WordControl.m_oLogicDocument.Get_Styles();
TextPr_hyper.RStyle = Styles.Get_Default_Hyperlink();
TextPr_hyper.Color = undefined;
TextPr_hyper.Underline = undefined;
var TextPr_old = this.Internal_GetTextPr(this.CurPos.ContentPos);
......@@ -7709,8 +7712,9 @@ Paragraph.prototype =
var End = Find.LetterPos;
var TextPr = this.Internal_GetTextPr(End);
TextPr.Color = new CDocumentColor( 0, 0, 255 );
TextPr.Underline = true;
TextPr.RStyle = editor.WordControl.m_oLogicDocument.Get_Styles().Get_Default_Hyperlink();
TextPr.Color = undefined;
TextPr.Underline = undefined;
// TODO: тут не должно быть картинок, но все-таки если будет такая ситуация,
// тогда надо будет убрать записи о картинках.
......@@ -7774,18 +7778,23 @@ Paragraph.prototype =
this.Internal_Content_Remove( Find.LetterPos );
var StartPos = Find.LetterPos;
var RStyle = editor.WordControl.m_oLogicDocument.Get_Styles().Get_Default_Hyperlink();
// TODO: когда появятся стили текста, тут надо будет переделать
for ( var Index = StartPos; Index <= EndPos; Index++ )
{
var Item = this.Content[Index];
if ( para_TextPr === Item.Type )
if ( para_TextPr === Item.Type && Item.Value.RStyle === RStyle )
{
Item.Set_Color( undefined );
Item.Set_Underline( undefined );
Item.Set_RStyle( undefined );
}
}
// Пересчитаем TextPr
this.RecalcInfo.Set_Type_0( pararecalc_0_All );
this.Internal_Recalculate_0();
// Запускаем перерисовку
this.ReDraw();
return true;
}
......
......@@ -2392,6 +2392,19 @@ CStyle.prototype =
this.Set_TableBand2Horz( TableBand2Horz );
this.Set_TableBand2Vert( TableBand2Vert );
},
Create_Character_Hyperlink : function()
{
var TextPr =
{
Color : { r : 0x00, g : 0x00, b : 0xFF },
Underline : true
};
this.Set_UiPriority( 99 );
this.Set_UnhideWhenUsed( true );
this.Set_TextPr( TextPr );
},
isEqual: function(cStyles)
{
......@@ -3557,7 +3570,8 @@ function CStyles()
Headings : [],
ParaList : null,
Header : null,
Footer : null
Footer : null,
Hyperlink : null
};
// Заполняем значения по умолчанию
......@@ -3778,6 +3792,11 @@ function CStyles()
Style_Table_BorderedLined_Accent6.Create_Table_BorderedAndLined( new CDocumentColor( 0xE3, 0x6C, 0x0A ), new CDocumentColor( 0xFA, 0xBF, 0x8F ), new CDocumentColor( 0xFD, 0xE9, 0xD9 ) );
this.Add( Style_Table_BorderedLined_Accent6 );
// Создаем стиль гиперссылки
var Style_Hyperlink = new CStyle("Hyperlink", null, null, styletype_Character );
Style_Hyperlink.Create_Character_Hyperlink();
this.Default.Hyperlink = this.Add( Style_Hyperlink );
// Добавляем данный класс в таблицу Id (обязательно в конце конструктора)
g_oTableId.Add( this, this.Id );
}
......@@ -3975,6 +3994,11 @@ CStyles.prototype =
return this.Default.Footer;
},
Get_Default_Hyperlink : function()
{
return this.Default.Hyperlink;
},
Get_StyleIdByName : function (Name)
{
for ( var Id in this.Style )
......
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