2
0
Эх сурвалжийг харах

Merge branch 'v2_develop' into v2_2491-Arrangement-Overlapped

Tig 11 сар өмнө
parent
commit
49c10e02c8

+ 2 - 0
Terminal.Gui/Views/Shortcut.cs

@@ -806,6 +806,8 @@ public class Shortcut : View, IOrientation, IDesignable
 
         if (HasFocus)
         {
+            base.ColorScheme ??= new (Attribute.Default);
+
             // When we have focus, we invert the colors
             base.ColorScheme = new (base.ColorScheme)
             {

+ 30 - 16
UnitTests/Views/ShortcutTests.cs

@@ -38,9 +38,6 @@ public class ShortcutTests
 
         Assert.IsType<DimAuto> (shortcut.Width);
         Assert.IsType<DimAuto> (shortcut.Height);
-        //shortcut.BeginInit();
-        //shortcut.EndInit ();
-       // shortcut.LayoutSubviews ();
         shortcut.SetRelativeLayout (new (100, 100));
 
         // |0123456789
@@ -256,19 +253,6 @@ public class ShortcutTests
         Assert.True (actionInvoked);
     }
 
-    [Fact]
-    public void ColorScheme_SetsAndGetsCorrectly ()
-    {
-        var colorScheme = new ColorScheme ();
-
-        var shortcut = new Shortcut
-        {
-            ColorScheme = colorScheme
-        };
-
-        Assert.Same (colorScheme, shortcut.ColorScheme);
-    }
-
     [Fact]
     public void Subview_Visibility_Controlled_By_Removal ()
     {
@@ -600,5 +584,35 @@ public class ShortcutTests
     }
 
 
+    [Fact]
+    public void ColorScheme_SetsAndGetsCorrectly ()
+    {
+        var colorScheme = new ColorScheme ();
+
+        var shortcut = new Shortcut
+        {
+            ColorScheme = colorScheme
+        };
+
+        Assert.Same (colorScheme, shortcut.ColorScheme);
+    }
+
+    // https://github.com/gui-cs/Terminal.Gui/issues/3664
+    [Fact]
+    public void ColorScheme_SetColorScheme_Does_Not_Fault_3664 ()
+    {
+        Application.Current = new Toplevel ();
+        Shortcut shortcut = new Shortcut ();
+
+        Application.Current.ColorScheme = null;
+
+        Assert.Null (shortcut.ColorScheme);
+
+        shortcut.HasFocus = true;
+
+        Assert.NotNull (shortcut.ColorScheme);
+
+        Application.Current.Dispose ();
+    }
 
 }