Преглед на файлове

Check for the superview instead of check if it contains on the subviews.

BDisp преди 1 година
родител
ревизия
1573bb025b
променени са 1 файла, в които са добавени 13 реда и са изтрити 3 реда
  1. 13 3
      Terminal.Gui/Views/ScrollView.cs

+ 13 - 3
Terminal.Gui/Views/ScrollView.cs

@@ -140,9 +140,19 @@ public class ScrollView : View
     {
     {
         var parent = e.View is Adornment adornment ? adornment.Parent : e.View;
         var parent = e.View is Adornment adornment ? adornment.Parent : e.View;
 
 
-        if (parent is { } && _contentView.Subviews.Contains (parent))
+        if (parent is { })
         {
         {
-            Application.GrabMouse (this);
+            var supView = parent.SuperView;
+
+            while (supView is { })
+            {
+                if (supView == _contentView)
+                {
+                    Application.GrabMouse (this);
+                }
+
+                supView = supView.SuperView;
+            }
         }
         }
     }
     }
 
 
@@ -733,7 +743,7 @@ public class ScrollView : View
 
 
     private void View_MouseLeave (object sender, MouseEventEventArgs e)
     private void View_MouseLeave (object sender, MouseEventEventArgs e)
     {
     {
-        if (Application.MouseGrabView is { } && Application.MouseGrabView != _vertical && Application.MouseGrabView != _horizontal)
+        if (Application.MouseGrabView is { } && Application.MouseGrabView != this && Application.MouseGrabView != _vertical && Application.MouseGrabView != _horizontal)
         {
         {
             Application.UngrabMouse ();
             Application.UngrabMouse ();
         }
         }