diff --git a/docs/Changelog.md b/docs/Changelog.md index 673ee60..23913b0 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -13,6 +13,9 @@ - Fix start-size=session not working. - Fix chapters that are script created after the media file is loaded. - Width of command palette slightly increased. +- The default key bindings for 0 and 9 change the volume like mpv. +- When a menu item is defined multiple times with different key bindings, + all key bindings are shown in the menu. - libmpv zhongfly 2022-06-19 input.conf changes: diff --git a/src/Resources/input.conf.txt b/src/Resources/input.conf.txt index 0d3a86f..1ebb63b 100644 --- a/src/Resources/input.conf.txt +++ b/src/Resources/input.conf.txt @@ -173,7 +173,6 @@ Esc quit #menu: Exit MBTN_Right script-message-to mpvnet show-menu 6 script-message-to mpvnet show-progress KP6 script-message-to mpvnet show-progress -9 ab-loop KP9 ab-loop 7 script-message-to mpvnet cycle-audio Sharp script-message-to mpvnet cycle-audio diff --git a/src/WinForms/MainForm.cs b/src/WinForms/MainForm.cs index 2bfe5e1..5981daa 100644 --- a/src/WinForms/MainForm.cs +++ b/src/WinForms/MainForm.cs @@ -25,6 +25,7 @@ namespace mpvnet public ElementHost CommandPaletteHost { get; set; } public IntPtr mpvWindowHandle { get; set; } public static MainForm Instance { get; set; } + public Dictionary MenuItemDuplicate = new Dictionary(); new WpfControls.ContextMenu ContextMenu { get; set; } AutoResetEvent MenuAutoResetEvent { get; } = new AutoResetEvent(false); @@ -678,31 +679,40 @@ namespace mpvnet foreach (CommandItem item in items) { - var tempItem = item; + CommandItem tempItem = item; if (string.IsNullOrEmpty(tempItem.Path)) continue; - var menuItem = MenuHelp.Add(ContextMenu.Items, tempItem.Path); - - if (menuItem != null) + if (MenuItemDuplicate.ContainsKey(tempItem.Path)) { - menuItem.Click += (sender, args) => { - try { - App.RunTask(() => { - MenuAutoResetEvent.WaitOne(); - System.Windows.Application.Current.Dispatcher.Invoke( - DispatcherPriority.Background, new Action(delegate { })); - if (!string.IsNullOrEmpty(tempItem.Command)) - Core.Command(tempItem.Command); - }); - } - catch (Exception ex) { - Msg.ShowException(ex); - } - }; + var mi = MenuItemDuplicate[tempItem.Path]; + mi.InputGestureText = mi.InputGestureText + ", " + tempItem.Input; + } + else + { + var menuItem = MenuHelp.Add(ContextMenu.Items, tempItem.Path); - menuItem.InputGestureText = tempItem.Input; + if (menuItem != null) + { + MenuItemDuplicate[tempItem.Path] = menuItem; + menuItem.Click += (sender, args) => { + try { + App.RunTask(() => { + MenuAutoResetEvent.WaitOne(); + System.Windows.Application.Current.Dispatcher.Invoke( + DispatcherPriority.Background, new Action(delegate { })); + if (!string.IsNullOrEmpty(tempItem.Command)) + Core.Command(tempItem.Command); + }); + } + catch (Exception ex) { + Msg.ShowException(ex); + } + }; + + menuItem.InputGestureText = tempItem.Input; + } } } }