Commit 125e091a authored by Ilya.Kirillov's avatar Ilya.Kirillov

Сделано, чтобы удаление работало при наборе текста, когда последний выделенный...

Сделано, чтобы удаление работало при наборе текста, когда последний выделенный элемент таблица (баг 30607).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@66422 954022d7-b5bf-4e40-9824-e11837661b57
parent 24f0f120
......@@ -3767,14 +3767,6 @@ CDocument.prototype =
var bStartEmpty, bEndEmpty;
// Если удаление идет по добавлению текста и выделение заканчивается таблицей,
// тогда мы просто сбрасываем выделение.
if (true === bOnTextAdd && type_Table == EndType)
{
this.CurPos.ContentPos = StartPos;
return this.Cursor_MoveLeft(false, false);
}
if (type_Paragraph == StartType)
{
// Удаляем выделенную часть параграфа
......@@ -3791,7 +3783,6 @@ CDocument.prototype =
{
// Удаляем выделенную часть параграфа
this.Content[EndPos].Remove(1, true);
bEndEmpty = this.Content[EndPos].IsEmpty()
}
else if (type_Table == EndType)
......@@ -3814,16 +3805,37 @@ CDocument.prototype =
}
else
{
this.CurPos.ContentPos = StartPos + 1;
this.Content[StartPos + 1].Cursor_MoveToStartPos();
if (true === bOnTextAdd && type_Table === this.Content[StartPos + 1].Get_Type() && type_Table === this.Content[StartPos].Get_Type())
{
this.Internal_Content_Add(StartPos + 1, new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0));
this.CurPos.ContentPos = StartPos + 1;
this.Content[StartPos + 1].Cursor_MoveToStartPos();
}
else if (true === bOnTextAdd && type_Table === this.Content[StartPos + 1].Get_Type())
{
this.CurPos.ContentPos = StartPos;
this.Content[StartPos].Cursor_MoveToEndPos(false, false);
}
else
{
this.CurPos.ContentPos = StartPos + 1;
this.Content[StartPos + 1].Cursor_MoveToStartPos();
}
}
}
else if (true != bStartEmpty)
{
if (true === bOnTextAdd && type_Table == StartType)
{
// Удаляем весь промежуточный контент, но последний параграф не удаляем
this.Internal_Content_Remove(StartPos + 1, EndPos - StartPos - 1);
// Удаляем весь промежуточный контент и конечный элемент, если это
// таблица, поскольку таблица не может быть последним элементом в документе удаляем без проверок.
if (EndType === type_Table)
this.Internal_Content_Remove(StartPos + 1, EndPos - StartPos);
else
this.Internal_Content_Remove(StartPos + 1, EndPos - StartPos - 1);
if (type_Table === this.Content[StartPos + 1].Get_Type() && true === bOnTextAdd)
this.Internal_Content_Add(StartPos + 1, new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0));
// Встаем в начало параграфа
this.CurPos.ContentPos = StartPos + 1;
......@@ -3854,6 +3866,9 @@ CDocument.prototype =
// Удаляем весь промежуточный контент и начальный параграф
this.Internal_Content_Remove(StartPos, EndPos - StartPos);
if (type_Table === this.Content[StartPos].Get_Type() && true === bOnTextAdd)
this.Internal_Content_Add(StartPos, new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0));
// Встаем в начало параграфа
this.CurPos.ContentPos = StartPos;
this.Content[StartPos].Cursor_MoveToStartPos();
......@@ -3862,8 +3877,16 @@ CDocument.prototype =
{
if (true === bOnTextAdd)
{
// Удаляем весь промежуточный контент, начальный параграф, а конечный не удаляем
this.Internal_Content_Remove(StartPos, EndPos - StartPos);
// Удаляем весь промежуточный контент, начальный элемент и конечный элемент, если это
// таблица, поскольку таблица не может быть последним элементом в документе удаляем без проверок.
if (EndType === type_Table && bOnTextAdd)
this.Internal_Content_Remove(StartPos, EndPos - StartPos + 1);
else
this.Internal_Content_Remove(StartPos, EndPos - StartPos);
if (type_Table === this.Content[StartPos].Get_Type() && true === bOnTextAdd)
this.Internal_Content_Add(StartPos, new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0));
this.CurPos.ContentPos = StartPos;
this.Content[StartPos].Cursor_MoveToStartPos();
}
......
......@@ -2802,14 +2802,6 @@ CDocumentContent.prototype =
var bStartEmpty, bEndEmpty;
// Если удаление идет по добавлению текста и выделение заканчивается таблицей,
// тогда мы просто сбрасываем выделение.
if (true === bOnTextAdd && type_Table == EndType)
{
this.CurPos.ContentPos = StartPos;
return this.Cursor_MoveLeft(false, false);
}
if (type_Paragraph == StartType)
{
// Удаляем выделенную часть параграфа
......@@ -2848,16 +2840,37 @@ CDocumentContent.prototype =
}
else
{
this.CurPos.ContentPos = StartPos + 1;
this.Content[StartPos + 1].Cursor_MoveToStartPos();
if (true === bOnTextAdd && type_Table === this.Content[StartPos + 1].Get_Type() && type_Table === this.Content[StartPos].Get_Type())
{
this.Internal_Content_Add(StartPos + 1, new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0));
this.CurPos.ContentPos = StartPos + 1;
this.Content[StartPos + 1].Cursor_MoveToStartPos();
}
else if (true === bOnTextAdd && type_Table === this.Content[StartPos + 1].Get_Type())
{
this.CurPos.ContentPos = StartPos;
this.Content[StartPos].Cursor_MoveToEndPos(false, false);
}
else
{
this.CurPos.ContentPos = StartPos + 1;
this.Content[StartPos + 1].Cursor_MoveToStartPos();
}
}
}
else if (true != bStartEmpty)
{
if (true === bOnTextAdd && type_Table === StartType)
{
// Удаляем весь промежуточный контент, но последний параграф не удаляем
this.Internal_Content_Remove(StartPos + 1, EndPos - StartPos - 1);
// Удаляем весь промежуточный контент и конечный элемент, если это
// таблица, поскольку таблица не может быть последним элементом в документе удаляем без проверок.
if (EndType === type_Table)
this.Internal_Content_Remove(StartPos + 1, EndPos - StartPos);
else
this.Internal_Content_Remove(StartPos + 1, EndPos - StartPos - 1);
if (type_Table === this.Content[StartPos + 1].Get_Type() && true === bOnTextAdd)
this.Internal_Content_Add(StartPos + 1, new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0));
// Встаем в начало параграфа
this.CurPos.ContentPos = StartPos + 1;
......@@ -2888,6 +2901,9 @@ CDocumentContent.prototype =
// Удаляем весь промежуточный контент и начальный параграф
this.Internal_Content_Remove(StartPos, EndPos - StartPos);
if (type_Table === this.Content[StartPos].Get_Type() && true === bOnTextAdd)
this.Internal_Content_Add(StartPos, new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0));
// Встаем в начало параграфа
this.CurPos.ContentPos = StartPos;
this.Content[StartPos].Cursor_MoveToStartPos();
......@@ -2896,8 +2912,16 @@ CDocumentContent.prototype =
{
if (true === bOnTextAdd)
{
// Удаляем весь промежуточный контент, начальный параграф, а конечный не удаляем
this.Internal_Content_Remove(StartPos, EndPos - StartPos);
// Удаляем весь промежуточный контент, начальный элемент и конечный элемент, если это
// таблица, поскольку таблица не может быть последним элементом в документе удаляем без проверок.
if (EndType === type_Table && bOnTextAdd)
this.Internal_Content_Remove(StartPos, EndPos - StartPos + 1);
else
this.Internal_Content_Remove(StartPos, EndPos - StartPos);
if (type_Table === this.Content[StartPos].Get_Type() && true === bOnTextAdd)
this.Internal_Content_Add(StartPos, new Paragraph(this.DrawingDocument, this, 0, 0, 0, 0, 0));
this.CurPos.ContentPos = StartPos;
this.Content[StartPos].Cursor_MoveToStartPos();
}
......
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