Commit 6881dceb authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Улучшена обработка нажатия клавиши Tab: в таблицах при нажатии на таб в...

Улучшена обработка нажатия клавиши Tab: в таблицах при нажатии на таб в последней ячейке будут добавляться новые строки, в параграфе, если он выделен с самого начала или курсор стоит в начале таб будет смешать уровень списка,если параграф со списком, либо двигать отступы, если параграф не со списком (баг 13960).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@48090 954022d7-b5bf-4e40-9824-e11837661b57
parent 0a50ae68
......@@ -369,6 +369,7 @@ function CSelectedElementsInfo()
this.m_bTable = false; // Находится курсор или выделение целиком в какой-нибудь таблице
this.m_bMixedSelection = false; // Попадает ли в выделение одновременно несколько элементов
this.m_nDrawing = selected_None;
this.m_pParagraph = null; // Параграф, в котором находится выделение
this.Reset = function()
{
......@@ -378,6 +379,16 @@ function CSelectedElementsInfo()
this.m_nDrawing = -1;
};
this.Set_Paragraph = function(Para)
{
this.m_pParagraph = Para;
};
this.Get_Paragraph = function()
{
return this.m_pParagraph;
};
this.Set_Table = function()
{
this.m_bTable = true;
......@@ -6673,11 +6684,27 @@ CDocument.prototype =
{
if ( true === SelectedInfo.Is_MixedSelection() )
{
editor.IncreaseIndent();
if ( true === e.ShiftKey )
editor.DecreaseIndent();
else
editor.IncreaseIndent();
}
else
{
if ( false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content) )
var Paragraph = SelectedInfo.Get_Paragraph();
if ( null != Paragraph && ( true === Paragraph.Cursor_IsStart() || true === Paragraph.Selection_IsFromStart() ) && ( undefined != Paragraph.Numbering_Get() || true != Paragraph.IsEmpty() ) )
{
if ( false === this.Document_Is_SelectionLocked(changestype_None, { Type : changestype_2_Element_and_Type, Element : Paragraph, CheckType : changestype_Paragraph_Properties } ) )
{
this.Create_NewHistoryPoint();
Paragraph.Add_Tab(e.ShiftKey);
this.Recalculate();
this.Document_UpdateInterfaceState();
this.Document_UpdateSelectionState();
}
}
else if ( false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content) )
{
this.Create_NewHistoryPoint();
this.Paragraph_Add( new ParaTab() );
......
......@@ -5304,6 +5304,74 @@ Paragraph.prototype =
this.RecalcInfo.Set_Type_0(pararecalc_0_All);
},
// Данная функция вызывается, когда уже точно известно, что у нас либо выделение начинается с начала параграфа, либо мы стоим курсором в начале параграфа
Add_Tab : function(bShift)
{
var NumPr = this.Numbering_Get();
if ( undefined != NumPr )
{
this.Numbering_IndDec_Level( !bShift );
}
else if ( true === this.Is_SelectionUse() )
{
this.IncDec_Indent( !bShift );
}
else
{
var ParaPr = this.Get_CompiledPr2(false).ParaPr;
if ( true != bShift )
{
if ( ParaPr.Ind.FirstLine < 0 )
{
this.Set_Ind( { FirstLine : 0 }, false );
this.CompiledPr.NeedRecalc = true;
}
else if ( ParaPr.Ind.FirstLine < 12.5 )
{
this.Set_Ind( { FirstLine : 12.5 }, false );
this.CompiledPr.NeedRecalc = true;
}
else if ( X_Right_Field - X_Left_Margin > ParaPr.Ind.Left + 25 )
{
this.Set_Ind( { Left : ParaPr.Ind.Left + 12.5 }, false );
this.CompiledPr.NeedRecalc = true;
}
}
else
{
if ( ParaPr.Ind.FirstLine > 0 )
{
if ( ParaPr.Ind.FirstLine > 12.5 )
this.Set_Ind( { FirstLine : ParaPr.Ind.FirstLine - 12.5 }, false );
else
this.Set_Ind( { FirstLine : 0 }, false );
this.CompiledPr.NeedRecalc = true;
}
else
{
var Left = ParaPr.Ind.Left + ParaPr.Ind.FirstLine;
if ( Left < 0 )
{
this.Set_Ind( { Left : -ParaPr.Ind.FirstLine }, false );
this.CompiledPr.NeedRecalc = true;
}
else
{
if ( Left > 12.5 )
this.Set_Ind( { Left : ParaPr.Ind.Left - 12.5 }, false );
else
this.Set_Ind( { Left : -ParaPr.Ind.FirstLine }, false );
this.CompiledPr.NeedRecalc = true;
}
}
}
}
},
Internal_IncDecFontSize : function(bIncrease, Value)
{
// Закон изменения размеров :
......@@ -8000,6 +8068,7 @@ Paragraph.prototype =
Get_SelectedElementsInfo : function(Info)
{
Info.Set_Paragraph( this );
},
// Проверяем пустой ли параграф
......@@ -8844,6 +8913,22 @@ Paragraph.prototype =
return true;
},
// Проверим, начинается ли выделение с начала параграфа
Selection_IsFromStart : function()
{
if ( true === this.Is_SelectionUse() )
{
var StartPos = ( this.Selection.StartPos > this.Selection.EndPos ? this.Selection.EndPos : this.Selection.StartPos );
if ( true != this.Cursor_IsStart( StartPos ) )
return false;
return true;
}
return false;
},
// Очищение форматирования параграфа
Clear_Formatting : function()
{
......
......@@ -8544,6 +8544,17 @@ CTable.prototype =
if ( null != TempCell )
CurCell = TempCell;
else
{
this.Row_Add(false);
var TempCell = this.Internal_Get_NextCell( Pos );
while ( null != TempCell && vmerge_Restart != TempCell.Get_VMerge() )
TempCell = this.Internal_Get_NextCell( Pos );
if ( null != TempCell )
CurCell = TempCell;
}
}
else
{
......
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