Commit 609c5d79 authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Добавлены механизмы для обработки автозамены в формулах и обработки нажатия...

Добавлены механизмы для обработки автозамены в формулах и обработки нажатия Enter в формулах. Переделана обработка изменения формулы с Inline на не Inline.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@58654 954022d7-b5bf-4e40-9824-e11837661b57
parent 5e14d2b1
...@@ -664,6 +664,7 @@ function CSelectedElementsInfo() ...@@ -664,6 +664,7 @@ function CSelectedElementsInfo()
this.m_bMixedSelection = false; // Попадает ли в выделение одновременно несколько элементов this.m_bMixedSelection = false; // Попадает ли в выделение одновременно несколько элементов
this.m_nDrawing = selected_None; this.m_nDrawing = selected_None;
this.m_pParagraph = null; // Параграф, в котором находится выделение this.m_pParagraph = null; // Параграф, в котором находится выделение
this.m_oMath = null; // Формула, в которой находится выделение
this.Reset = function() this.Reset = function()
{ {
...@@ -678,11 +679,21 @@ function CSelectedElementsInfo() ...@@ -678,11 +679,21 @@ function CSelectedElementsInfo()
this.m_pParagraph = Para; this.m_pParagraph = Para;
}; };
this.Set_Math = function(Math)
{
this.m_oMath = Math;
};
this.Get_Paragraph = function() this.Get_Paragraph = function()
{ {
return this.m_pParagraph; return this.m_pParagraph;
}; };
this.Get_Math = function()
{
return this.m_oMath;
};
this.Set_Table = function() this.Set_Table = function()
{ {
this.m_bTable = true; this.m_bTable = true;
...@@ -9139,6 +9150,15 @@ CDocument.prototype = ...@@ -9139,6 +9150,15 @@ CDocument.prototype =
if (false === this.Document_Is_SelectionLocked(CheckType)) if (false === this.Document_Is_SelectionLocked(CheckType))
{ {
this.Create_NewHistoryPoint(); this.Create_NewHistoryPoint();
var oSelectedInfo = this.Get_SelectedElementsInfo();
var oMath = oSelectedInfo.Get_Math();
if (null !== oMath && oMath.Is_InInnerContent())
{
oMath.Handle_AddNewLine();
}
else
{
if (e.ShiftKey) if (e.ShiftKey)
{ {
this.Paragraph_Add(new ParaNewLine(break_Line)); this.Paragraph_Add(new ParaNewLine(break_Line));
...@@ -9154,6 +9174,7 @@ CDocument.prototype = ...@@ -9154,6 +9174,7 @@ CDocument.prototype =
} }
} }
} }
}
bRetValue = true; bRetValue = true;
} }
...@@ -9190,14 +9211,26 @@ CDocument.prototype = ...@@ -9190,14 +9211,26 @@ CDocument.prototype =
if ( false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content) ) if ( false === this.Document_Is_SelectionLocked(changestype_Paragraph_Content) )
{ {
this.Create_NewHistoryPoint(); this.Create_NewHistoryPoint();
if ( true === e.ShiftKey && true === e.CtrlKey )
// Если мы находимся в формуле, тогда пытаемся выполнить автозамену
var oSelectedInfo = this.Get_SelectedElementsInfo();
var oMath = oSelectedInfo.Get_Math();
if (null !== oMath && true === oMath.Make_AutoCorrect())
{
// Ничего тут не делаем. Все делается в автозамене
}
else
{
if (true === e.ShiftKey && true === e.CtrlKey)
{ {
this.DrawingDocument.TargetStart(); this.DrawingDocument.TargetStart();
this.DrawingDocument.TargetShow(); this.DrawingDocument.TargetShow();
this.Paragraph_Add( new ParaText(String.fromCharCode(0x00A0)) ); this.Paragraph_Add(new ParaText(String.fromCharCode(0x00A0)));
} }
else if ( true === e.CtrlKey ) else if (true === e.CtrlKey)
{ {
this.Paragraph_ClearFormatting(); this.Paragraph_ClearFormatting();
} }
...@@ -9209,6 +9242,7 @@ CDocument.prototype = ...@@ -9209,6 +9242,7 @@ CDocument.prototype =
this.Paragraph_Add(new ParaSpace()); this.Paragraph_Add(new ParaSpace());
} }
} }
}
bRetValue = true; bRetValue = true;
} }
......
...@@ -1621,3 +1621,42 @@ ParaMath.prototype.Get_ContentSelection = function() ...@@ -1621,3 +1621,42 @@ ParaMath.prototype.Get_ContentSelection = function()
return {X : oContent.pos.x + this.X, Y : oContent.pos.y + this.Y, W : oContent.size.width, H : oContent.size.height}; return {X : oContent.pos.x + this.X, Y : oContent.pos.y + this.Y, W : oContent.size.width, H : oContent.size.height};
}; };
/**
* Проверяем находимся ли мы во внутреннем (не самом верхнем) контенте формулы.
*/
ParaMath.prototype.Is_InInnerContent = function()
{
var oContent = this.GetSelectContent().Content;
if (oContent.bRoot)
return false;
return true;
};
/**
* Обработка нажатия Enter внутри формулы
*/
ParaMath.prototype.Handle_AddNewLine = function()
{
};
/**
* Разделение формулы на 2 части в заданной позиции. В текущем объекте остается левая часть формулы.
* @param ContentPos Позиция
* @param Depth
* @returns Возвращается правая часть формулы.
*/
ParaMath.prototype.Split = function (ContentPos, Depth)
{
return null;
};
/**
* Пытаемся выполнить автозамену в формуле.
* @returns {boolean} Выполнилась ли автозамена.
*/
ParaMath.prototype.Make_AutoCorrect = function()
{
return false;
};
...@@ -6130,6 +6130,11 @@ Paragraph.prototype = ...@@ -6130,6 +6130,11 @@ Paragraph.prototype =
Get_SelectedElementsInfo : function(Info) Get_SelectedElementsInfo : function(Info)
{ {
Info.Set_Paragraph( this ); Info.Set_Paragraph( this );
if (true === this.Selection.Use && this.Selection.StartPos === this.Selection.EndPos && para_Math === this.Content[this.Selection.EndPos].Type)
Info.Set_Math(this.Content[this.Selection.EndPos]);
else (false === this.Selection.Use && para_Math === this.Content[this.CurPos.ContentPos].Type)
Info.Set_Math(this.Content[this.CurPos.ContentPos]);
}, },
Get_SelectedContent : function(DocContent) Get_SelectedContent : function(DocContent)
......
...@@ -415,7 +415,7 @@ Paragraph.prototype.private_RecalculateFastRange = function(CurRange, CurL ...@@ -415,7 +415,7 @@ Paragraph.prototype.private_RecalculateFastRange = function(CurRange, CurL
if ( para_Math === Item.Type ) if ( para_Math === Item.Type )
{ {
// TODO: Надо бы перенести эту проверку на изменение контента параграфа // TODO: Надо бы перенести эту проверку на изменение контента параграфа
Item.MathPara = this.Check_MathPara(Pos); Item.SetInline(true === this.Check_MathPara(Pos)? false : true);
} }
PRS.Update_CurPos( Pos, 0 ); PRS.Update_CurPos( Pos, 0 );
...@@ -1542,7 +1542,7 @@ Paragraph.prototype.private_RecalculateRange = function(CurRange, CurL ...@@ -1542,7 +1542,7 @@ Paragraph.prototype.private_RecalculateRange = function(CurRange, CurL
if ( para_Math === Item.Type ) if ( para_Math === Item.Type )
{ {
// TODO: Надо бы перенести эту проверку на изменение контента параграфа // TODO: Надо бы перенести эту проверку на изменение контента параграфа
Item.MathPara = this.Check_MathPara(Pos); Item.SetInline(true === this.Check_MathPara(Pos)? false : true);
} }
if ( ( 0 === Pos && 0 === CurLine && 0 === CurRange ) || Pos !== StartPos ) if ( ( 0 === Pos && 0 === CurLine && 0 === CurRange ) || Pos !== StartPos )
......
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