diff --git a/Terminal.Gui/View/View.Drawing.cs b/Terminal.Gui/View/View.Drawing.cs index 154c273f8..259abb081 100644 --- a/Terminal.Gui/View/View.Drawing.cs +++ b/Terminal.Gui/View/View.Drawing.cs @@ -408,7 +408,7 @@ public partial class View // Drawing APIs Attribute attr = inputAttribute; if (HighlightStyle.HasFlag (HighlightStyle.Hover) && _Hover) { - attr = new (inputAttribute.Foreground.GetHighlightColor (), inputAttribute.Background); + //attr = new (inputAttribute.Foreground.GetHighlightColor (), inputAttribute.Background); } if (Diagnostics.HasFlag (ViewDiagnosticFlags.Hover) && _Hover) diff --git a/Terminal.Gui/View/View.Mouse.cs b/Terminal.Gui/View/View.Mouse.cs index 9715bdbbe..df60c4678 100644 --- a/Terminal.Gui/View/View.Mouse.cs +++ b/Terminal.Gui/View/View.Mouse.cs @@ -163,7 +163,15 @@ public partial class View // Mouse APIs if ((HighlightStyle.HasFlag(HighlightStyle.Hover) || Diagnostics.HasFlag (ViewDiagnosticFlags.Hover))) { + HighlightStyle copy = HighlightStyle; + HighlightStyle hover = HighlightStyle.Hover; + CancelEventArgs args = new (ref copy, ref hover); + if (!RaiseHighlight (args)) + { + } SetNeedsDisplay (); + + return args.Cancel; } return false; @@ -245,7 +253,13 @@ public partial class View // Mouse APIs if ((HighlightStyle.HasFlag (HighlightStyle.Hover) || Diagnostics.HasFlag (ViewDiagnosticFlags.Hover))) { - SetNeedsDisplay (); + HighlightStyle copy = HighlightStyle; + HighlightStyle hover = HighlightStyle.None; + CancelEventArgs args = new (ref copy, ref hover); + if (!RaiseHighlight (args)) + { + SetNeedsDisplay (); + } } } diff --git a/Terminal.Gui/Views/Menuv2.cs b/Terminal.Gui/Views/Menuv2.cs index f0024ae28..a6422f64f 100644 --- a/Terminal.Gui/Views/Menuv2.cs +++ b/Terminal.Gui/Views/Menuv2.cs @@ -53,6 +53,7 @@ public class Menuv2 : Bar shortcut.CanFocus = true; shortcut.KeyBindingScope = KeyBindingScope.Application; shortcut.Orientation = Orientation.Vertical; + shortcut.HighlightStyle |= HighlightStyle.Hover; // TODO: not happy about using AlignmentModes for this. Too implied. // TODO: instead, add a property (a style enum?) to Shortcut to control this diff --git a/Terminal.Gui/Views/Shortcut.cs b/Terminal.Gui/Views/Shortcut.cs index e7b9bc5db..2f90f41f7 100644 --- a/Terminal.Gui/Views/Shortcut.cs +++ b/Terminal.Gui/Views/Shortcut.cs @@ -54,7 +54,7 @@ public class Shortcut : View, IOrientation, IDesignable { Id = "_shortcut"; HighlightStyle = HighlightStyle.Pressed; - Highlight += Shortcut_Highlight; + //Highlight += Shortcut_Highlight; CanFocus = true; Width = GetWidthDimAuto (); Height = Dim.Auto (DimAutoStyle.Content, 1); @@ -149,6 +149,21 @@ public class Shortcut : View, IOrientation, IDesignable private Color? _savedForeColor; + /// + protected override bool OnHighlight (CancelEventArgs args) + { + if (args.NewValue.HasFlag (HighlightStyle.Hover)) + { + SetColors (true); + } + else + { + SetColors (false); + } + + return true; + } + /// public bool EnableForDesign () { @@ -803,12 +818,12 @@ public class Shortcut : View, IOrientation, IDesignable /// /// - internal void SetColors () + internal void SetColors (bool highlight = false) { // Border should match superview. Border.ColorScheme = SuperView?.ColorScheme; - if (HasFocus) + if (HasFocus || highlight) { base.ColorScheme ??= new (Attribute.Default); diff --git a/UICatalog/Scenarios/Bars.cs b/UICatalog/Scenarios/Bars.cs index 929774919..f7fbf7681 100644 --- a/UICatalog/Scenarios/Bars.cs +++ b/UICatalog/Scenarios/Bars.cs @@ -349,20 +349,23 @@ public class Bars : Scenario Title = "_File", HelpText = "File Menu", Key = Key.D0.WithAlt, + HighlightStyle = HighlightStyle.Hover }; var editMenuBarItem = new Shortcut { Title = "_Edit", HelpText = "Edit Menu", - Key = Key.D1.WithAlt + Key = Key.D1.WithAlt, + HighlightStyle = HighlightStyle.Hover }; var helpMenuBarItem = new Shortcut { Title = "_Help", HelpText = "Halp Menu", - Key = Key.D2.WithAlt + Key = Key.D2.WithAlt, + HighlightStyle = HighlightStyle.Hover }; bar.Add (fileMenuBarItem, editMenuBarItem, helpMenuBarItem); @@ -376,6 +379,7 @@ public class Bars : Scenario Title = "Z_igzag", Key = Key.I.WithCtrl, Text = "Gonna zig zag", + HighlightStyle = HighlightStyle.Hover }; var shortcut2 = new Shortcut @@ -383,6 +387,7 @@ public class Bars : Scenario Title = "Za_G", Text = "Gonna zag", Key = Key.G.WithAlt, + HighlightStyle = HighlightStyle.Hover }; var line = new Line () @@ -397,6 +402,7 @@ public class Bars : Scenario Title = "_Three", Text = "The 3rd item", Key = Key.D3.WithAlt, + HighlightStyle = HighlightStyle.Hover }; bar.Add (shortcut1, shortcut2, line, shortcut3);