Commit 74b3047e authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Исправлен баг, что при поиске вставлялись "неправильные" пробелы (баг 30673)....

Исправлен баг, что при поиске вставлялись "неправильные" пробелы (баг 30673). Исправлены некоторые баги при замене в режиме рецензирования.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@66088 954022d7-b5bf-4e40-9824-e11837661b57
parent cb623d19
...@@ -48,6 +48,12 @@ CDocumentSearch.prototype = ...@@ -48,6 +48,12 @@ CDocumentSearch.prototype =
this.MatchCase = Props.MatchCase; this.MatchCase = Props.MatchCase;
}, },
Reset : function()
{
this.Text = "";
this.MatchCase = false;
},
Compare : function(Text, Props) Compare : function(Text, Props)
{ {
if ( this.Text === Text && this.MatchCase === Props.MatchCase ) if ( this.Text === Text && this.MatchCase === Props.MatchCase )
...@@ -62,7 +68,7 @@ CDocumentSearch.prototype = ...@@ -62,7 +68,7 @@ CDocumentSearch.prototype =
this.MatchCase = false; this.MatchCase = false;
// Очищаем предыдущие элементы поиска // Очищаем предыдущие элементы поиска
for ( var Id in this.Elements ) for (var Id in this.Elements)
{ {
var Paragraph = this.Elements[Id]; var Paragraph = this.Elements[Id];
Paragraph.Clear_SearchResults(); Paragraph.Clear_SearchResults();
...@@ -140,7 +146,7 @@ CDocumentSearch.prototype = ...@@ -140,7 +146,7 @@ CDocumentSearch.prototype =
var Len = NewStr.length; var Len = NewStr.length;
for ( var Pos = 0; Pos < Len; Pos++ ) for ( var Pos = 0; Pos < Len; Pos++ )
{ {
StartRun.Add_ToContent( RunPos + Pos, new ParaText(NewStr[Pos]) ); StartRun.Add_ToContent(RunPos + Pos, ' ' === NewStr[Pos] ? new ParaSpace() : new ParaText(NewStr[Pos]));
} }
// Выделяем старый объект поиска и удаляем его // Выделяем старый объект поиска и удаляем его
...@@ -171,9 +177,10 @@ CDocumentSearch.prototype = ...@@ -171,9 +177,10 @@ CDocumentSearch.prototype =
Replace_All : function(NewStr, bUpdateStates) Replace_All : function(NewStr, bUpdateStates)
{ {
for (var Id in this.Elements) for (var Id = this.Id; Id >= 0; --Id)
{ {
this.Replace(NewStr, Id, true); if (this.Elements[Id])
this.Replace(NewStr, Id, true);
} }
this.Clear(); this.Clear();
...@@ -262,11 +269,20 @@ CDocument.prototype.Search_Replace = function(NewStr, bAll, Id) ...@@ -262,11 +269,20 @@ CDocument.prototype.Search_Replace = function(NewStr, bAll, Id)
{ {
History.Create_NewPoint(bAll ? historydescription_Document_ReplaceAll : historydescription_Document_ReplaceSingle); History.Create_NewPoint(bAll ? historydescription_Document_ReplaceAll : historydescription_Document_ReplaceSingle);
if ( true === bAll ) if (true === bAll)
{
this.SearchEngine.Replace_All(NewStr, true); this.SearchEngine.Replace_All(NewStr, true);
}
else else
{
this.SearchEngine.Replace(NewStr, Id, false); this.SearchEngine.Replace(NewStr, Id, false);
// TODO: В будушем надо будет переделать, чтобы искалось заново только в том параграфе, в котором произошла замена
// Тут появляется проблема с вложенным поиском, если то что мы заменяем содержится в том, на что мы заменяем.
if (true === this.Is_TrackRevisions())
this.SearchEngine.Reset();
}
this.SearchEngine.ClearOnRecalc = false; this.SearchEngine.ClearOnRecalc = false;
this.Recalculate(); this.Recalculate();
this.SearchEngine.ClearOnRecalc = true; this.SearchEngine.ClearOnRecalc = 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