diff --git a/WinAlfred.Plugin.System/CMD.cs b/WinAlfred.Plugin.System/CMD.cs index 64dbc6b5a0..19b23d58bb 100644 --- a/WinAlfred.Plugin.System/CMD.cs +++ b/WinAlfred.Plugin.System/CMD.cs @@ -17,6 +17,24 @@ namespace WinAlfred.Plugin.System protected override List QueryInternal(Query query) { List results = new List(); + if (query.RawQuery == ">") + { + IEnumerable history = cmdHistory.OrderByDescending(o => o.Value) + .Select(m => new Result + { + Title = m.Key, + SubTitle = "this command has been executed " + m.Value + " times", + IcoPath = "Images/cmd.png", + Action = () => + { + ExecuteCmd(m.Key); + AddCmdHistory(m.Key); + } + }).Take(5); + + results.AddRange(history); + } + if (query.RawQuery.StartsWith(">") && query.RawQuery.Length > 1) { string cmd = query.RawQuery.Substring(1); diff --git a/WinAlfred/MainWindow.xaml.cs b/WinAlfred/MainWindow.xaml.cs index dfc916e62b..d4815006cc 100644 --- a/WinAlfred/MainWindow.xaml.cs +++ b/WinAlfred/MainWindow.xaml.cs @@ -163,13 +163,13 @@ namespace WinAlfred Hide(); } - private void ShowWinAlfred() + private void ShowWinAlfred(bool selectAll = true) { Show(); Activate(); - tbQuery.SelectAll(); Focus(); tbQuery.Focus(); + if(selectAll) tbQuery.SelectAll(); } public void ParseArgs(string[] args) @@ -235,13 +235,8 @@ namespace WinAlfred { if (keyevent == KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed) { - Dispatcher.BeginInvoke(new Action(() => - { - resultCtrl.Clear(); - ShowWinAlfred(); - ChangeQuery(">"); - WinRStroked = true; - })); + WinRStroked = true; + Dispatcher.BeginInvoke(new Action(OnWinRPressed)); return false; } if (keyevent == KeyEvent.WM_KEYUP && WinRStroked && vkcode == (int)Keys.LWin) @@ -254,6 +249,16 @@ namespace WinAlfred return true; } + private void OnWinRPressed() + { + ShowWinAlfred(false); + if (tbQuery.Text != ">") + { + resultCtrl.Clear(); + ChangeQuery(">"); + } + } + private void TbQuery_OnPreviewKeyDown(object sender, KeyEventArgs e) { switch (e.Key)