Browse Source

Border changes color, not line style on drag

Tig 1 year ago
parent
commit
bd0f89f8b1

+ 2 - 2
Terminal.Gui/Drawing/Color.cs

@@ -248,9 +248,9 @@ public readonly partial record struct Color : ISpanParsable<Color>, IUtf8SpanPar
         var hsl = ColorHelper.ColorConverter.RgbToHsl(new RGB (R, G, B));
         var hsl = ColorHelper.ColorConverter.RgbToHsl(new RGB (R, G, B));
 
 
         var amount = .7;
         var amount = .7;
-        if (hsl.L < 50)
+        if (hsl.L <= 5)
         {
         {
-            amount += 1;
+            return DarkGray;
         }
         }
         hsl.L = (byte)(hsl.L * amount);
         hsl.L = (byte)(hsl.L * amount);
 
 

+ 20 - 6
Terminal.Gui/View/Adornment/Border.cs

@@ -198,17 +198,27 @@ public class Border : Adornment
 
 
     #region Mouse Support
     #region Mouse Support
 
 
-    private LineStyle? _savedHighlightLineStyle;
+    private Color? _savedForeColor;
 
 
     private void Border_Highlight (object sender, HighlightEventArgs e)
     private void Border_Highlight (object sender, HighlightEventArgs e)
     {
     {
+        if (!Parent.Arrangement.HasFlag (ViewArrangement.Movable))
+        {
+            return;
+        }
+
         if (e.HighlightStyle.HasFlag (HighlightStyle.Pressed))
         if (e.HighlightStyle.HasFlag (HighlightStyle.Pressed))
         {
         {
-            if (!_savedHighlightLineStyle.HasValue)
+            if (!_savedForeColor.HasValue)
             {
             {
-                _savedHighlightLineStyle = Parent?.BorderStyle ?? LineStyle;
+                _savedForeColor = ColorScheme.Normal.Foreground;
             }
             }
-            LineStyle = LineStyle.Heavy;
+
+            ColorScheme cs = new ColorScheme (ColorScheme)
+            {
+                Normal = new Attribute (ColorScheme.Normal.Foreground.GetHighlightColor (), ColorScheme.Normal.Background)
+            };
+            ColorScheme = cs;
         }
         }
 #if HOVER
 #if HOVER
         else if (e.HighlightStyle.HasFlag (HighlightStyle.Hover))
         else if (e.HighlightStyle.HasFlag (HighlightStyle.Hover))
@@ -221,9 +231,13 @@ public class Border : Adornment
         }
         }
 #endif
 #endif
 
 
-        if (e.HighlightStyle == HighlightStyle.None && _savedHighlightLineStyle.HasValue)
+        if (e.HighlightStyle == HighlightStyle.None && _savedForeColor.HasValue)
         {
         {
-            LineStyle = _savedHighlightLineStyle.Value;
+            ColorScheme cs = new ColorScheme (ColorScheme)
+            {
+                Normal = new Attribute (_savedForeColor.Value, ColorScheme.Normal.Background)
+            };
+            ColorScheme = cs;
         }
         }
         Parent?.SetNeedsDisplay ();
         Parent?.SetNeedsDisplay ();
         e.Cancel = true;
         e.Cancel = true;

+ 2 - 1
Terminal.Gui/View/ViewMouse.cs

@@ -475,6 +475,7 @@ public partial class View
                 {
                 {
                     var cs = new ColorScheme (ColorScheme)
                     var cs = new ColorScheme (ColorScheme)
                     {
                     {
+                        // Highlight the foreground focus color
                         Focus = new (ColorScheme.Focus.Foreground.GetHighlightColor (), ColorScheme.Focus.Background.GetHighlightColor ()),
                         Focus = new (ColorScheme.Focus.Foreground.GetHighlightColor (), ColorScheme.Focus.Background.GetHighlightColor ()),
                     };
                     };
                     ColorScheme = cs;
                     ColorScheme = cs;
@@ -483,7 +484,7 @@ public partial class View
                 {
                 {
                     var cs = new ColorScheme (ColorScheme)
                     var cs = new ColorScheme (ColorScheme)
                     {
                     {
-                        // For Buttons etc... that can't focus (like up/down).
+                        // Invert Focus color foreground/background. We can do this because we know the view is not going to be focused.
                         Normal = new (ColorScheme.Focus.Background, ColorScheme.Normal.Foreground)
                         Normal = new (ColorScheme.Focus.Background, ColorScheme.Normal.Foreground)
                     };
                     };
                     ColorScheme = cs;
                     ColorScheme = cs;