diff options
author | Mike Krüger <mkrueger@xamarin.com> | 2015-09-16 08:50:41 +0300 |
---|---|---|
committer | Mike Krüger <mkrueger@xamarin.com> | 2015-09-16 08:50:41 +0300 |
commit | 09081f4f6efd422dc361b79207c163a1cb055bc6 (patch) | |
tree | 1bb45d5800a639940130bf9f7d8bb291b69bff16 | |
parent | 8ab33e4e6071fa8f8f7d9b53e01480ab3b1357aa (diff) |
Implemented search in selection clipboard recognition behavior.
See discussion in 'Bug 33951 - [roslyn] Confusing search-in-selection
behavior'. The search in selection is now more aware of what the user
might want.
The clipboard content is now taken as hint if the user wants to do a
search in selection or search for lines.
-rw-r--r-- | main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SearchAndReplaceWidget.cs | 7 | ||||
-rw-r--r-- | main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/ClipboardActions.cs | 8 |
2 files changed, 14 insertions, 1 deletions
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SearchAndReplaceWidget.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SearchAndReplaceWidget.cs index 3bcb5c7387..9c9ef47817 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SearchAndReplaceWidget.cs +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SearchAndReplaceWidget.cs @@ -284,7 +284,7 @@ namespace MonoDevelop.SourceEditor searchEntry.FilterButtonPixbuf = Xwt.Drawing.Image.FromResource ("searchoptions.png"); if (textEditor.IsSomethingSelected) { - if (textEditor.MainSelection.MinLine == textEditor.MainSelection.MaxLine) { + if (textEditor.MainSelection.MinLine == textEditor.MainSelection.MaxLine || ClipboardContainsSelection()) { SetSearchPattern (); } else { IsInSelectionSearchMode = true; @@ -304,6 +304,11 @@ namespace MonoDevelop.SourceEditor SearchAndReplaceOptions.ReplacePatternChanged += HandleReplacePatternChanged; } + bool ClipboardContainsSelection () + { + return textEditor.SelectedText == ClipboardActions.GetClipboardContent (); + } + void HandleReplacePatternChanged (object sender, EventArgs e) { ReplacePattern = SearchAndReplaceOptions.ReplacePattern; diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/ClipboardActions.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/ClipboardActions.cs index 22bcbb245a..57f417d9df 100644 --- a/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/ClipboardActions.cs +++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/ClipboardActions.cs @@ -434,5 +434,13 @@ namespace Mono.TextEditor return; PasteFrom (Clipboard.Get (CopyOperation.CLIPBOARD_ATOM), data, false, data.IsSomethingSelected ? data.SelectionRange.Offset : data.Caret.Offset); } + + public static string GetClipboardContent() + { + var clipboard = Clipboard.Get (CopyOperation.CLIPBOARD_ATOM); + if (!clipboard.WaitIsTextAvailable ()) + return null; + return clipboard.WaitForText (); + } } } |