Commit adbb1434 authored by Ilya Kirillov's avatar Ilya Kirillov

Fixed bug #34451

parent 5a68c96e
...@@ -3261,56 +3261,118 @@ Paragraph.prototype = ...@@ -3261,56 +3261,118 @@ Paragraph.prototype =
{ {
var ParaPr = this.Get_CompiledPr2(false).ParaPr; var ParaPr = this.Get_CompiledPr2(false).ParaPr;
var LD_PageFields = this.LogicDocument.Get_PageFields(this.Get_AbsolutePage(0)); var nDefaultTabStop = AscCommonWord.Default_Tab_Stop;
if (nDefaultTabStop < 0.001)
return;
if ( true != bShift ) var LD_PageFields = this.LogicDocument.Get_PageFields(this.Get_AbsolutePage(0));
{
if ( ParaPr.Ind.FirstLine < 0 ) var nLeft = ParaPr.Ind.Left;
{ var nFirst = ParaPr.Ind.FirstLine;
this.Set_Ind( { FirstLine : 0 }, false ); if (true != bShift)
this.CompiledPr.NeedRecalc = true; {
} if (nFirst < -0.001)
else if ( ParaPr.Ind.FirstLine < 12.5 ) {
{ if (nLeft < -0.001)
this.Set_Ind( { FirstLine : 12.5 }, false ); {
this.CompiledPr.NeedRecalc = true; this.Set_Ind({FirstLine : 0}, false);
} }
else if ( LD_PageFields.XLimit - LD_PageFields.X > ParaPr.Ind.Left + 25 ) else if (nLeft + nFirst < -0.001)
{ {
this.Set_Ind( { Left : ParaPr.Ind.Left + 12.5 }, false ); this.Set_Ind({FirstLine : -nLeft}, false);
this.CompiledPr.NeedRecalc = true; }
} else
} {
var nNewPos = ((((nFirst + nLeft) / nDefaultTabStop + 0.5) | 0) + 1) * nDefaultTabStop;
if (nNewPos < nLeft)
this.Set_Ind({FirstLine : nNewPos - nLeft}, false);
else
this.Set_Ind({FirstLine : 0}, false);
}
}
else
{
var nCurTabPos = (((nFirst + nLeft) / nDefaultTabStop + 0.001) | 0) * nDefaultTabStop;
if (LD_PageFields.XLimit - LD_PageFields.X - ParaPr.Ind.Right < nLeft + nFirst + 1.5 * nDefaultTabStop )
return;
if (nLeft + nFirst < nCurTabPos - 0.001)
{
this.Set_Ind({FirstLine : (((nFirst + nLeft) / nDefaultTabStop + 0.001) | 0) * nDefaultTabStop - nLeft}, false);
}
else
{
if (Math.abs((((nFirst + nLeft) / nDefaultTabStop + 0.001) | 0) * nDefaultTabStop - (((nLeft) / nDefaultTabStop + 0.001) | 0) * nDefaultTabStop) < 0.001 && nFirst < nDefaultTabStop)
this.Set_Ind({FirstLine : ((((nFirst + nLeft) / nDefaultTabStop + 0.001) | 0) + 1) * nDefaultTabStop - nLeft}, false);
else
this.Set_Ind({Left : ((((nFirst + nLeft) / nDefaultTabStop + 0.001) | 0) + 1) * nDefaultTabStop - nFirst}, false);
}
}
}
else else
{ {
if ( ParaPr.Ind.FirstLine > 0 ) if (Math.abs(nFirst) < 0.001)
{ {
if ( ParaPr.Ind.FirstLine > 12.5 ) if (Math.abs(nLeft) < 0.001)
this.Set_Ind( { FirstLine : ParaPr.Ind.FirstLine - 12.5 }, false ); return;
else else if (nLeft > 0)
this.Set_Ind( { FirstLine : 0 }, false ); {
var nCurTabPos = ((nLeft / nDefaultTabStop + 0.001) | 0) * nDefaultTabStop;
this.CompiledPr.NeedRecalc = true; if (Math.abs(nCurTabPos - nLeft) < 0.001)
} this.Set_Ind({Left : (((nLeft / nDefaultTabStop + 0.001) | 0) - 1) * nDefaultTabStop}, false);
else else
{ this.Set_Ind({Left : nCurTabPos}, false);
var Left = ParaPr.Ind.Left + ParaPr.Ind.FirstLine; }
if ( Left < 0 ) else
{ {
this.Set_Ind( { Left : -ParaPr.Ind.FirstLine }, false ); this.Set_Ind({Left : 0}, false);
this.CompiledPr.NeedRecalc = true; }
} }
else else if (nFirst > 0)
{ {
if ( Left > 12.5 ) var nCurTabPos = (((nFirst + nLeft) / nDefaultTabStop + 0.001) | 0) * nDefaultTabStop;
this.Set_Ind( { Left : ParaPr.Ind.Left - 12.5 }, false ); if (Math.abs(nLeft + nFirst - nCurTabPos) < 0.001)
else {
this.Set_Ind( { Left : -ParaPr.Ind.FirstLine }, false ); var nPrevTabPos = Math.max(0, ((((nFirst + nLeft) / nDefaultTabStop + 0.001) | 0) - 1) * nDefaultTabStop);
if (nPrevTabPos > nLeft)
this.Set_Ind({FirstLine : nPrevTabPos - nLeft}, false);
else
this.Set_Ind({FirstLine : 0}, false);
this.CompiledPr.NeedRecalc = true; }
} else
} {
this.Set_Ind({FirstLine : nCurTabPos - nLeft}, false);
}
}
else
{
if (Math.abs(nFirst + nLeft) < 0.001)
{
return;
}
else if (nFirst + nLeft < 0)
{
this.Set_Ind({Left : -nFirst}, false);
}
else
{
var nCurTabPos = (((nFirst + nLeft) / nDefaultTabStop + 0.001) | 0) * nDefaultTabStop;
if (Math.abs(nLeft + nFirst - nCurTabPos) < 0.001)
{
var nPrevTabPos = Math.max(0, ((((nFirst + nLeft) / nDefaultTabStop + 0.001) | 0) - 1) * nDefaultTabStop);
this.Set_Ind({Left : nPrevTabPos - nFirst}, false);
}
else
{
this.Set_Ind({Left : nCurTabPos - nFirst}, false);
}
}
}
} }
this.CompiledPr.NeedRecalc = true;
} }
}, },
......
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