Commit 74dc7b0b authored by Ilya.Kirillov's avatar Ilya.Kirillov

Исправлен баг с получением выделенного текста(для цитирования в комментариях)....

Исправлен баг с получением выделенного текста(для цитирования в комментариях). Исправлен баг с получением позиции выделенного текста (для добавления комментариев). Исправлен баг с позиционированием курсора в параграфе. Исправлен баг с пересчетом пустого параграфа с разрывом секции.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@55641 954022d7-b5bf-4e40-9824-e11837661b57
parent ddc6a591
......@@ -982,6 +982,11 @@ ParaComment.prototype =
Get_AllFontNames : function(AllFonts)
{
},
Get_SelectedText : function(bAll, bClearText)
{
return "";
},
//-----------------------------------------------------------------------------------
// Функции пересчета
//-----------------------------------------------------------------------------------
......
......@@ -12580,10 +12580,13 @@ CDocument.prototype =
else if ( docpostype_DrawingObjects === this.CurPos.Type )
{
var ParaDrawing = this.DrawingObjects.getMajorParaDrawing();
Result.X0 = ParaDrawing.GraphicObj.x;
Result.Y = ParaDrawing.GraphicObj.y;
Result.X1 = ParaDrawing.GraphicObj.x + ParaDrawing.GraphicObj.extX;
Result.Page = ParaDrawing.PageNum;
Result =
{
X0 : ParaDrawing.GraphicObj.x,
Y : ParaDrawing.GraphicObj.y,
X1 : ParaDrawing.GraphicObj.x + ParaDrawing.GraphicObj.extX,
Page : ParaDrawing.PageNum
};
}
else
{
......@@ -12591,6 +12594,10 @@ CDocument.prototype =
Result = this.Content[Pos].Get_SelectionAnchorPos();
}
var PageLimit = this.Get_PageLimits(Result.Page);
Result.X0 = PageLimit.X;
Result.X1 = PageLimit.XLimit;
var Coords0 = this.DrawingDocument.ConvertCoordsToCursorWR( Result.X0, Result.Y, Result.Page );
var Coords1 = this.DrawingDocument.ConvertCoordsToCursorWR( Result.X1, Result.Y, Result.Page );
......
......@@ -135,6 +135,24 @@ ParaHyperlink.prototype =
return this.Content[0].Is_StartFromNewLine();
},
Get_SelectedText : function(bAll, bClearText)
{
var Str = "";
var Count = this.Content.length;
for ( var Pos = 0; Pos < Count; Pos++ )
{
var _Str = this.Content[Pos].Get_SelectedText( bAll, bClearText );
if ( null === _Str )
return null;
Str += _Str;
}
return Str;
},
Get_TextPr : function(_ContentPos, Depth)
{
if ( undefined === _ContentPos )
......
......@@ -336,6 +336,19 @@ ParaMath.prototype =
// TODO: ParaMath.Get_AllFontNames
AllFonts["Cambria Math"] = true;
},
Get_SelectedText : function(bAll, bClearText)
{
if ( true === bAll || true === this.Selection_IsUse() )
{
if ( true === bClearText )
return null;
return "";
}
return "";
},
//-----------------------------------------------------------------------------------
// Функции пересчета
//-----------------------------------------------------------------------------------
......
......@@ -5297,6 +5297,11 @@ Paragraph.prototype =
return -1;
}
if ( 0 === Line && 0 === Range && undefined !== this.Get_SectionPr() )
{
return -1;
}
// Мы должны пересчитать как минимум 3 отрезка: текущий, предыдущий и следующий, потому что при удалении элемента
// или добавлении пробела первое слово в данном отрезке может убраться в предыдущем отрезке, и кроме того при
// удалении возможен вариант, когда мы неправильно определили отрезок (т.е. более ранний взяли). Но возможен
......@@ -9334,7 +9339,7 @@ Paragraph.prototype =
var _CurPos = CurPos + 1;
// Пропускаем пустые раны
while ( true === this.Content[_CurPos].Is_Empty( { SkipAnchor : true } ) && _CurPos < Count )
while ( _CurPos < Count && true === this.Content[_CurPos].Is_Empty( { SkipAnchor : true } ) )
_CurPos++;
if ( _CurPos < Count && true === this.Content[_CurPos].Is_StartFromNewLine() )
......@@ -14464,13 +14469,10 @@ Paragraph.prototype =
Get_SelectionAnchorPos : function()
{
var X0 = 0, X1 = 0, Y = 0, Page = 0;
var X0 = this.X, X1 = this.XLimit, Y = this.Y, Page = this.Get_StartPage_Absolute();
if ( true === this.ApplyToAll )
{
X0 = this.X;
X1 = this.XLimit;
Y = this.Y;
Page = this.Get_StartPage_Absolute();
// Ничего не делаем
}
else if ( true === this.Selection.Use )
{
......@@ -14484,35 +14486,46 @@ Paragraph.prototype =
EndPos = this.Selection.StartPos;
}
var CurLine = 0;
var LinesCount = this.Lines.length;
for (; CurLine < LinesCount; CurLine++ )
var StartLine = -1;
var EndLine = -1;
for (var CurLine = 0; CurLine < LinesCount; CurLine++ )
{
if ( StartPos >= this.Lines[CurLine].StartPos && StartPos <= this.Lines[CurLine].EndPos )
break;
if ( -1 === StartLine && StartPos >= this.Lines[CurLine].StartPos && StartPos <= this.Lines[CurLine].EndPos )
StartLine = CurLine;
if ( EndPos >= this.Lines[CurLine].StartPos && EndPos <= this.Lines[CurLine].EndPos )
EndLine = CurLine;
}
CurLine = Math.min( LinesCount - 1, CurLine );
StartLine = Math.min( Math.max( 0, StartLine ), LinesCount - 1 );
EndLine = Math.min( Math.max( 0, EndLine ), LinesCount - 1 );
var CurPage = 0;
var PagesCount = this.Pages.length;
var DrawSelection = new CParagraphDrawSelectionRange();
for ( var CurLine = StartLine; CurLine <= EndLine; CurLine++ )
{
var Line = this.Lines[CurLine];
var RangesCount = Line.Ranges.length;
// Определим номер страницы
var CurPage = 0;
for (; CurPage < PagesCount; CurPage++ )
{
if ( CurPage >= this.Pages[CurPage].StartLine && CurPage <= this.Pages[CurPage].EndLine )
if ( CurLine >= this.Pages[CurPage].StartLine && CurLine <= this.Pages[CurPage].EndLine )
break;
}
CurPage = Math.min( PagesCount - 1, CurPage );
var DrawSelection = new CParagraphDrawSelectionRange();
var Line = this.Lines[CurLine];
var RangesCount = Line.Ranges.length;
// Определяем позицию и высоту строки
DrawSelection.StartY = this.Pages[CurPage].Y + this.Lines[CurLine].Top;
DrawSelection.H = this.Lines[CurLine].Bottom - this.Lines[CurLine].Top;
var Result = null;
for ( var CurRange = 0; CurRange < RangesCount; CurRange++ )
{
var Range = Line.Ranges[CurRange];
......@@ -14543,6 +14556,12 @@ Paragraph.prototype =
var StartY = DrawSelection.StartY;
var H = DrawSelection.H;
var StartX = DrawSelection.StartX;
var W = DrawSelection.W;
var StartY = DrawSelection.StartY;
var H = DrawSelection.H;
if ( W > 0.001 )
{
X0 = StartX;
......@@ -14551,98 +14570,52 @@ Paragraph.prototype =
Page = CurPage + this.Get_StartPage_Absolute();
return { X0 : X0, X1 : X1, Y : Y, Page : Page };
if ( null === Result )
Result = { X0 : X0, X1 : X1, Y : Y, Page : Page };
else
{
Result.X0 = Math.min( Result.X0, X0 );
Result.X1 = Math.max( Result.X1, X1 );
}
}
}
if ( null !== Result )
{
console.log("Good");
return Result;
}
}
}
else
{
// Текущая точка
X0 = this.CurPos.X;
X1 = this.CurPos.X;
Y = this.CurPos.Y;
Page = this.Get_StartPage_Absolute() + this.CurPos.PagesPos;
}
return { X0 : X0, X1 : X1, Y : Y, Page : Page };
console.log("Bad");
return { X0 : X0, X1 : X1, Y : Y, Page : this.Get_StartPage_Absolute() };
},
// Возвращаем выделенный текст
Get_SelectedText : function(bClearText)
{
if ( true === this.ApplyToAll )
{
var Str = "";
var Count = this.Content.length;
for ( var Pos = 0; Pos < Count; Pos++ )
{
var Item = this.Content[Pos];
var _Str = this.Content[Pos].Get_SelectedText( true === this.ApplyToAll, bClearText );
switch ( Item.Type )
{
case para_Drawing:
case para_End:
case para_Numbering:
case para_PresentationNumbering:
case para_PageNum:
case para_Math:
{
if ( true === bClearText )
return null;
break;
}
case para_Text : Str += Item.Value; break;
case para_Space:
case para_Tab : Str += " "; break;
}
}
return Str;
}
if ( true === this.Selection.Use )
{
var StartPos = this.Selection.StartPos;
var EndPos = this.Selection.EndPos;
if ( EndPos < StartPos )
{
StartPos = this.Selection.EndPos;
EndPos = this.Selection.StartPos;
}
var Str = "";
for ( var Pos = StartPos; Pos < EndPos; Pos++ )
{
var Item = this.Content[Pos];
switch ( Item.Type )
{
case para_Drawing:
case para_End:
case para_Numbering:
case para_PresentationNumbering:
case para_PageNum:
{
if ( true === bClearText )
if ( null === _Str )
return null;
break;
}
case para_Text : Str += Item.Value; break;
case para_Space:
case para_Tab : Str += " "; break;
}
Str += _Str;
}
return Str;
}
return "";
},
Get_SelectedElementsInfo : function(Info)
......
......@@ -1105,6 +1105,58 @@ ParaRun.prototype =
Item.documentGetAllFontNames( AllFonts );
}
},
Get_SelectedText : function(bAll, bClearText)
{
var StartPos = 0;
var EndPos = 0;
if ( true === bAll )
{
StartPos = 0;
EndPos = this.Content.length;
}
else if ( true === this.Selection.Use )
{
StartPos = this.State.Selection.StartPos;
EndPos = this.State.Selection.EndPos;
if ( StartPos > EndPos )
{
var Temp = EndPos;
EndPos = StartPos;
StartPos = Temp;
}
}
var Str = "";
for ( var Pos = StartPos; Pos < EndPos; Pos++ )
{
var Item = this.Content[Pos];
switch ( Item.Type )
{
case para_Drawing:
case para_End:
case para_Numbering:
case para_PresentationNumbering:
case para_PageNum:
{
if ( true === bClearText )
return null;
break;
}
case para_Text : Str += Item.Value; break;
case para_Space:
case para_Tab : Str += " "; break;
}
}
return Str;
},
//-----------------------------------------------------------------------------------
// Функции пересчета
//-----------------------------------------------------------------------------------
......
......@@ -93,10 +93,10 @@
<!-- sdk -->
<script type="text/javascript" src="../../../sdk/Common/docscoapisettings.js"></script>
<script type="text/javascript" src="../../../sdk/Common/AllFonts.js"></script>
<!--<script type="text/javascript" src="../../../sdk/Word/sdk-all.js"></script>-->
<!-- application -->
<script type="text/javascript" src="../../../../OfficeWeb/Common/AllFonts.js"></script>
<script type="text/javascript" src="../../../../OfficeWeb/Common/browser.js"></script>
<script type="text/javascript" src="../../../../OfficeWeb/Common/editorscommon.js"></script>
<script type="text/javascript" src="../../../../OfficeWeb/Common/downloaderfiles.js"></script>
......
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