@@ -26,6 +26,15 @@ const mbServerScriptEditor::Defaults &mbServerScriptEditor::Defaults::instance()
2626 return d;
2727}
2828
29+ QTextDocument::FindFlags mbServerScriptEditor::toQTextDocumentFindFlags (int findFlags)
30+ {
31+ QTextDocument::FindFlags tFindFlags;
32+ if (findFlags & mb::FindBackward ) tFindFlags |= QTextDocument::FindBackward ;
33+ if (findFlags & mb::FindCaseSensitively) tFindFlags |= QTextDocument::FindCaseSensitively;
34+ if (findFlags & mb::FindWholeWords ) tFindFlags |= QTextDocument::FindWholeWords ;
35+ return tFindFlags;
36+ }
37+
2938mbServerScriptEditor::mbServerScriptEditor (const mbServerScriptEditor::Settings settings, QWidget *parent) : QPlainTextEdit(parent)
3039{
3140 lineNumberArea = nullptr ;
@@ -140,10 +149,7 @@ int mbServerScriptEditor::lineNumberAreaWidth()
140149
141150bool mbServerScriptEditor::findText (const QString &text, int findFlags)
142151{
143- QTextDocument::FindFlags tFindFlags;
144- if (findFlags & mb::FindBackward ) tFindFlags |= QTextDocument::FindBackward ;
145- if (findFlags & mb::FindCaseSensitively) tFindFlags |= QTextDocument::FindCaseSensitively;
146- if (findFlags & mb::FindWholeWords ) tFindFlags |= QTextDocument::FindWholeWords ;
152+ QTextDocument::FindFlags tFindFlags = toQTextDocumentFindFlags (findFlags);
147153 return this ->find (text, tFindFlags);
148154}
149155
@@ -173,24 +179,42 @@ bool mbServerScriptEditor::replaceText(const QString &replacement)
173179
174180bool mbServerScriptEditor::replaceTextAll (const QString &replacement)
175181{
176- QTextDocument *doc = document ();
177- QTextCursor cursor (doc);
182+ QTextCursor cursor = textCursor ();
183+ if (!cursor.hasSelection ())
184+ return false ;
178185
179- // Get the selected text to replace
180- QString selectedText = textCursor ().selectedText ();
186+ QString selectedText = cursor.selectedText ();
181187 if (selectedText.isEmpty ())
182188 return false ;
183189
184- // Disable undo compression to group all changes
185- cursor.beginEditBlock ();
186- while (!cursor.isNull () && !cursor.atEnd ())
190+ moveCursor (QTextCursor::Start);
191+ bool replaced = false ;
192+
193+ /*
194+ QTextDocument *doc = document();
195+ QTextCursor searchCursor(doc);
196+
197+ searchCursor.beginEditBlock();
198+ while (true)
187199 {
188- cursor = doc->find (selectedText, cursor);
189- if (!cursor.isNull ())
190- cursor.insertText (replacement);
200+ searchCursor = doc->find(selectedText, searchCursor);
201+ if (searchCursor.isNull())
202+ break;
203+ searchCursor.insertText(replacement);
204+ replaced = true;
191205 }
192- cursor.endEditBlock ();
193- return true ;
206+ searchCursor.endEditBlock();
207+ */
208+
209+ this ->textCursor ().beginEditBlock ();
210+ while (this ->find (selectedText))
211+ {
212+ this ->textCursor ().insertText (replacement);
213+ replaced = true ;
214+ }
215+ this ->textCursor ().endEditBlock ();
216+
217+ return replaced;
194218}
195219
196220void mbServerScriptEditor::updateLineNumberAreaWidth (int /* newBlockCount */ )
0 commit comments