浏览代码

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;
 
-        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)
     {
-        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 ();
         }