diff options
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs index e371e00cb5..b497d148ff 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs @@ -77,6 +77,7 @@ namespace MonoDevelop.Components.MainToolbar ToolbarView.SearchEntryChanged += HandleSearchEntryChanged; ToolbarView.SearchEntryActivated += HandleSearchEntryActivated; ToolbarView.SearchEntryKeyPressed += HandleSearchEntryKeyPressed; + ToolbarView.PerformCommand += HandleSearchEntryCommand; ToolbarView.SearchEntryResized += (o, e) => PositionPopup (); ToolbarView.SearchEntryLostFocus += (o, e) => { ToolbarView.SearchText = ""; @@ -741,6 +742,21 @@ namespace MonoDevelop.Components.MainToolbar popup.OpenFile (); } + void HandleSearchEntryCommand (object sender, SearchEntryCommandArgs args) + { + if (args.Command == SearchPopupCommand.Cancel) { + DestroyPopup (); + var doc = IdeApp.Workbench.ActiveDocument; + if (doc != null) + doc.Select (); + return; + } + + if (popup != null) { + args.Handled = popup.ProcessCommand (args.Command); + } + } + void HandleSearchEntryKeyPressed (object sender, Xwt.KeyEventArgs e) { if (e.Key == Xwt.Key.Escape) {
@@ -1181,5 +1197,15 @@ namespace MonoDevelop.Components.MainToolbar public event EventHandler Activated; } } + + public class SearchEntryCommandArgs : HandledEventArgs + { + public SearchPopupCommand Command { get; private set; } + + public SearchEntryCommandArgs (SearchPopupCommand command) + { + Command = command; + } + } } |