Commit 372d188e authored by Ilya Kirillov's avatar Ilya Kirillov

Fixed bug #32996 Fixed an issue with adding a hyperlink inside a field.

parent a758ba09
...@@ -1471,6 +1471,10 @@ ParaComment.prototype.Get_TextPr = function(ContentPos, Depth) ...@@ -1471,6 +1471,10 @@ ParaComment.prototype.Get_TextPr = function(ContentPos, Depth)
{ {
return new CTextPr(); return new CTextPr();
}; };
ParaComment.prototype.CanSplit = function()
{
return false;
};
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
// Разное // Разное
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
......
...@@ -209,6 +209,10 @@ ParaField.prototype.Split = function (ContentPos, Depth) ...@@ -209,6 +209,10 @@ ParaField.prototype.Split = function (ContentPos, Depth)
// Не даем разделять поле // Не даем разделять поле
return null; return null;
}; };
ParaField.prototype.CanSplit = function()
{
return false;
};
ParaField.prototype.Recalculate_Range_Spaces = function(PRSA, _CurLine, _CurRange, _CurPage) ParaField.prototype.Recalculate_Range_Spaces = function(PRSA, _CurLine, _CurRange, _CurPage)
{ {
var CurLine = _CurLine - this.StartLine; var CurLine = _CurLine - this.StartLine;
......
...@@ -6002,6 +6002,8 @@ Paragraph.prototype = ...@@ -6002,6 +6002,8 @@ Paragraph.prototype =
// Если у нас в выделение попадает начало или конец гиперссылки, или конец параграфа, или // Если у нас в выделение попадает начало или конец гиперссылки, или конец параграфа, или
// у нас все выделение находится внутри гиперссылки, тогда мы не можем добавить новую. Во // у нас все выделение находится внутри гиперссылки, тогда мы не можем добавить новую. Во
// всех остальных случаях разрешаем добавить. // всех остальных случаях разрешаем добавить.
// Также, если начало или конец выделения попадает в элемент, который нельзя разделить, тогда мы тоже
// запрещаем добавление гиперссылки.
var StartPos = this.Selection.StartPos; var StartPos = this.Selection.StartPos;
var EndPos = this.Selection.EndPos; var EndPos = this.Selection.EndPos;
...@@ -6011,8 +6013,10 @@ Paragraph.prototype = ...@@ -6011,8 +6013,10 @@ Paragraph.prototype =
EndPos = this.Selection.StartPos; EndPos = this.Selection.StartPos;
} }
// Проверяем не находимся ли мы внутри гиперссылки if (false === this.Content[StartPos].CanSplit() || false === this.Content[EndPos].CanSplit())
return false;
// Проверяем не находимся ли мы внутри гиперссылки
for ( var CurPos = StartPos; CurPos <= EndPos; CurPos++ ) for ( var CurPos = StartPos; CurPos <= EndPos; CurPos++ )
{ {
var Element = this.Content[CurPos]; var Element = this.Content[CurPos];
...@@ -6038,6 +6042,8 @@ Paragraph.prototype = ...@@ -6038,6 +6042,8 @@ Paragraph.prototype =
{ {
// Если у нас в выделение попадает несколько гиперссылок или конец параграфа, тогда // Если у нас в выделение попадает несколько гиперссылок или конец параграфа, тогда
// возвращаем false, во всех остальных случаях true // возвращаем false, во всех остальных случаях true
// Также, если начало или конец выделения попадает в элемент, который нельзя разделить, тогда мы тоже
// запрещаем добавление гиперссылки.
var StartPos = this.Selection.StartPos; var StartPos = this.Selection.StartPos;
var EndPos = this.Selection.EndPos; var EndPos = this.Selection.EndPos;
...@@ -6047,6 +6053,9 @@ Paragraph.prototype = ...@@ -6047,6 +6053,9 @@ Paragraph.prototype =
EndPos = this.Selection.StartPos; EndPos = this.Selection.StartPos;
} }
if (false === this.Content[StartPos].CanSplit() || false === this.Content[EndPos].CanSplit())
return false;
var bHyper = false; var bHyper = false;
for ( var CurPos = StartPos; CurPos <= EndPos; CurPos++ ) for ( var CurPos = StartPos; CurPos <= EndPos; CurPos++ )
......
...@@ -34,6 +34,10 @@ ...@@ -34,6 +34,10 @@
function CParagraphContentBase() function CParagraphContentBase()
{ {
} }
CParagraphContentBase.prototype.CanSplit = function()
{
return false;
};
/** /**
* Это базовый класс для элементов содержимого(контент) параграфа, у которых есть свое содержимое. * Это базовый класс для элементов содержимого(контент) параграфа, у которых есть свое содержимое.
...@@ -195,6 +199,10 @@ CParagraphContentWithContentBase.prototype.private_UpdateTrackRevisions = functi ...@@ -195,6 +199,10 @@ CParagraphContentWithContentBase.prototype.private_UpdateTrackRevisions = functi
RevisionsManager.Check_Paragraph(this.Paragraph); RevisionsManager.Check_Paragraph(this.Paragraph);
} }
}; };
CParagraphContentWithContentBase.prototype.CanSplit = function()
{
return true;
};
/** /**
* Это базовый класс для элементов параграфа, которые сами по себе могут содержать элементы параграфа. * Это базовый класс для элементов параграфа, которые сами по себе могут содержать элементы параграфа.
* @constructor * @constructor
...@@ -1092,7 +1100,7 @@ CParagraphContentWithParagraphLikeContent.prototype.Document_UpdateInterfaceStat ...@@ -1092,7 +1100,7 @@ CParagraphContentWithParagraphLikeContent.prototype.Document_UpdateInterfaceStat
Element.Document_UpdateInterfaceState(); Element.Document_UpdateInterfaceState();
} }
}; };
CParagraphContentWithParagraphLikeContent.prototype.Split = function (ContentPos, Depth) CParagraphContentWithParagraphLikeContent.prototype.Split = function(ContentPos, Depth)
{ {
var Element = new this.constructor(); var Element = new this.constructor();
......
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