Commit d2ac9c18 authored by Ilya Kirillov's avatar Ilya Kirillov

Fixed bug #33596

parent bb88b1a4
...@@ -6937,7 +6937,7 @@ Paragraph.prototype = ...@@ -6937,7 +6937,7 @@ Paragraph.prototype =
} }
var Para = null; var Para = null;
if ( true === this.Selection_IsFromStart() && true === this.Selection_CheckParaEnd() ) if ( true === this.Selection_IsFromStart(true) && true === this.Selection_CheckParaEnd() )
{ {
Para = this.Copy(this.Parent); Para = this.Copy(this.Parent);
DocContent.Add( new CSelectedElement( Para, true ) ); DocContent.Add( new CSelectedElement( Para, true ) );
...@@ -8340,24 +8340,26 @@ Paragraph.prototype = ...@@ -8340,24 +8340,26 @@ Paragraph.prototype =
}, },
// Проверяем находится ли курсор в начале параграфа // Проверяем находится ли курсор в начале параграфа
Cursor_IsStart : function(_ContentPos) Cursor_IsStart : function(_ContentPos, bCheckAnchors)
{ {
// Просто попробуем переместится вправо от текущего положения, если мы не можем, значит // Просто попробуем переместится вправо от текущего положения, если мы не можем, значит
// мы стоим в конце параграфа. // мы стоим в конце параграфа.
var ContentPos = ( undefined === _ContentPos ? this.Get_ParaContentPos( false, false ) : _ContentPos ); var ContentPos = ( undefined === _ContentPos ? this.Get_ParaContentPos(false, false) : _ContentPos );
var SearchPos = new CParagraphSearchPos(); var SearchPos = new CParagraphSearchPos();
if (true === bCheckAnchors)
SearchPos.SetCheckAnchors();
this.Get_LeftPos( SearchPos, ContentPos ); this.Get_LeftPos(SearchPos, ContentPos);
if ( true === SearchPos.Found ) if (true === SearchPos.Found)
return false; return false;
else else
return true; return true;
}, },
// Проверим, начинается ли выделение с начала параграфа // Проверим, начинается ли выделение с начала параграфа
Selection_IsFromStart : function() Selection_IsFromStart : function(bCheckAnchors)
{ {
if ( true === this.Is_SelectionUse() ) if ( true === this.Is_SelectionUse() )
{ {
...@@ -8367,7 +8369,7 @@ Paragraph.prototype = ...@@ -8367,7 +8369,7 @@ Paragraph.prototype =
if ( StartPos.Compare(EndPos) > 0 ) if ( StartPos.Compare(EndPos) > 0 )
StartPos = EndPos; StartPos = EndPos;
if ( true != this.Cursor_IsStart( StartPos ) ) if ( true != this.Cursor_IsStart( StartPos, bCheckAnchors ) )
return false; return false;
return true; return true;
...@@ -12966,7 +12968,17 @@ function CParagraphSearchPos() ...@@ -12966,7 +12968,17 @@ function CParagraphSearchPos()
this.UpdatePos = false; this.UpdatePos = false;
this.ForSelection = false; this.ForSelection = false;
this.CheckAnchors = false;
} }
CParagraphSearchPos.prototype.SetCheckAnchors = function(bCheck)
{
this.CheckAnchors = bCheck;
};
CParagraphSearchPos.prototype.IsCheckAnchors = function()
{
return this.CheckAnchors;
};
function CParagraphSearchPosXY() function CParagraphSearchPosXY()
{ {
......
...@@ -2884,8 +2884,9 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -2884,8 +2884,9 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
Item.CheckRecalcAutoFit(oSectionPr); Item.CheckRecalcAutoFit(oSectionPr);
if (true === Item.Is_Inline() || true === Para.Parent.Is_DrawingShape()) if (true === Item.Is_Inline() || true === Para.Parent.Is_DrawingShape())
{ {
if (true !== Item.Is_Inline()) // TODO: Нельзя что-то писать в историю во время пересчета, это действие надо делать при открытии
Item.Set_DrawingType(drawing_Inline); // if (true !== Item.Is_Inline())
// Item.Set_DrawingType(drawing_Inline);
if (true === StartWord) if (true === StartWord)
FirstItemOnLine = false; FirstItemOnLine = false;
...@@ -5355,7 +5356,7 @@ ParaRun.prototype.Get_LeftPos = function(SearchPos, ContentPos, Depth, UseConten ...@@ -5355,7 +5356,7 @@ ParaRun.prototype.Get_LeftPos = function(SearchPos, ContentPos, Depth, UseConten
CurPos--; CurPos--;
var Item = this.Content[CurPos]; var Item = this.Content[CurPos];
if (CurPos < 0 || (!(para_Drawing === Item.Type && false === Item.Is_Inline()) && !(para_FootnoteReference === Item.Type && true === Item.IsCustomMarkFollows()))) if (CurPos < 0 || (!(para_Drawing === Item.Type && false === Item.Is_Inline() && false === SearchPos.IsCheckAnchors()) && !(para_FootnoteReference === Item.Type && true === Item.IsCustomMarkFollows())))
break; break;
} }
...@@ -5385,7 +5386,7 @@ ParaRun.prototype.Get_RightPos = function(SearchPos, ContentPos, Depth, UseConte ...@@ -5385,7 +5386,7 @@ ParaRun.prototype.Get_RightPos = function(SearchPos, ContentPos, Depth, UseConte
var PrevItem = this.Content[CurPos - 1]; var PrevItem = this.Content[CurPos - 1];
var PrevItemType = PrevItem.Type; var PrevItemType = PrevItem.Type;
if ((true !== StepEnd && para_End === PrevItemType) || (para_Drawing === PrevItemType && false === PrevItem.Is_Inline()) || (para_FootnoteReference === PrevItemType && true === PrevItem.IsCustomMarkFollows())) if ((true !== StepEnd && para_End === PrevItemType) || (para_Drawing === PrevItemType && false === PrevItem.Is_Inline() && false === SearchPos.IsCheckAnchors()) || (para_FootnoteReference === PrevItemType && true === PrevItem.IsCustomMarkFollows()))
return; return;
break; break;
......
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