From a34b60072fdc3bb216ac9e2545089497a0214adf Mon Sep 17 00:00:00 2001 From: "Zane U. Ji" Date: Sat, 14 Dec 2013 12:44:59 +0800 Subject: [PATCH] Fixed a problem when replacing '>' with '>>' Other '>'s except the first one wouldn't be replaced. --- src/findreplacepanel.cpp | 11 +---------- src/findreplacepanel.h | 3 +-- src/xmlcopyeditor.cpp | 16 ++++++++-------- 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/src/findreplacepanel.cpp b/src/findreplacepanel.cpp index ed0b198..4acfd1d 100644 --- a/src/findreplacepanel.cpp +++ b/src/findreplacepanel.cpp @@ -38,7 +38,7 @@ FindReplacePanel::FindReplacePanel ( { parent = parentParameter; findData = findDataParameter; - incrementalFind = notFoundSet = false; + notFoundSet = false; isRegex = isRegexParameter; matchCaseMemory = ( findData->GetFlags() ) & wxFR_MATCHCASE; @@ -145,7 +145,6 @@ void FindReplacePanel::OnFindNext ( wxCommandEvent& event ) findData->SetFindString ( findEdit->GetValue() ); findData->SetReplaceString ( replaceEdit->GetValue() ); - incrementalFind = false; size_t flags = 0; flags |= wxFR_DOWN; if ( matchCaseBox->GetValue() ) @@ -202,8 +201,6 @@ void FindReplacePanel::OnIdle ( wxIdleEvent& event ) if ( newLength != findEditLength || settingsChanged ) { - incrementalFind = true; - size_t flags = 0; flags |= wxFR_DOWN; if ( matchCaseBox->GetValue() ) @@ -234,14 +231,8 @@ void FindReplacePanel::sendFindEvent ( size_t flags ) findData->SetReplaceString ( replaceEdit->GetValue() ); } -bool FindReplacePanel::getIncrementalFind() -{ - return incrementalFind; -} - void FindReplacePanel::refresh() { - incrementalFind = false; findEdit->SetValue ( findData->GetFindString() ); replaceEdit->SetValue ( findData->GetReplaceString() ); diff --git a/src/findreplacepanel.h b/src/findreplacepanel.h index 7cce90d..43d8cea 100644 --- a/src/findreplacepanel.h +++ b/src/findreplacepanel.h @@ -49,7 +49,6 @@ class FindReplacePanel : public wxPanel void OnReplace ( wxCommandEvent& event ); void OnReplaceAll ( wxCommandEvent& event ); void focusOnFind(); - bool getIncrementalFind(); bool getRegex(); void refresh(); void setReplaceVisible ( bool b ); @@ -67,7 +66,7 @@ class FindReplacePanel : public wxPanel wxWindow *parent; size_t findEditLength; bool matchCaseMemory, regexMemory; - bool incrementalFind, isReplaceDialog, notFoundSet, isRegex; + bool isReplaceDialog, notFoundSet, isRegex; void OnIdle ( wxIdleEvent& event ); void sendFindEvent ( size_t flags ); diff --git a/src/xmlcopyeditor.cpp b/src/xmlcopyeditor.cpp index 298192b..30b4c17 100644 --- a/src/xmlcopyeditor.cpp +++ b/src/xmlcopyeditor.cpp @@ -1950,16 +1950,20 @@ void MyFrame::OnDialogReplace ( wxFindDialogEvent& event ) if ( ( doc = getActiveDocument() ) == NULL ) return; - if ( !doc->GetSelectedText().IsEmpty() ) + int start = doc->GetTargetStart(); + int end = doc->GetTargetEnd(); + if ( start != end ) { if ( findReplacePanel->getRegex() ) { - doc->ReplaceTargetRE ( event.GetReplaceString() ); + start += doc->ReplaceTargetRE ( event.GetReplaceString() ); } else { - doc->ReplaceTarget ( event.GetReplaceString() ); + start += doc->ReplaceTarget ( event.GetReplaceString() ); } + // Move to the next position + doc->SetEmptySelection ( start ); } OnDialogFind ( event ); } @@ -4587,15 +4591,11 @@ void MyFrame::findAgain ( wxString s, int flags ) if ( findReplacePanel->getRegex() ) myFlags |= wxSTC_FIND_REGEXP; - bool incrementalFind = - ( findReplacePanel->getIncrementalFind() ) ? true : false; - //doc->SetYCaretPolicy(wxSTC_CARET_SLOP | wxSTC_CARET_STRICT, 10); if ( flags & wxFR_DOWN ) // find next { - doc->SetTargetStart ( ( incrementalFind ) ? - doc->GetSelectionStart() : doc->GetSelectionEnd() ); + doc->SetTargetStart ( doc->GetSelectionStart() ); doc->SetTargetEnd ( doc->GetLength() ); doc->SetSearchFlags ( myFlags ); newLocation = doc->SearchInTarget ( s );