浏览代码

Fixes #1467. AlternateForward/BackwardKey bypasses dialog modality (#1468)

BDisp 3 年之前
父节点
当前提交
c7d1e15cad
共有 1 个文件被更改,包括 10 次插入8 次删除
  1. 10 8
      Terminal.Gui/Core/Toplevel.cs

+ 10 - 8
Terminal.Gui/Core/Toplevel.cs

@@ -342,11 +342,12 @@ namespace Terminal.Gui {
 			case Key.Tab | Key.CtrlMask:
 			case Key key when key == Application.AlternateForwardKey: // Needed on Unix
 				if (Application.MdiTop == null) {
-					Application.Top.FocusNext ();
-					if (Application.Top.Focused == null) {
-						Application.Top.FocusNext ();
+					var top = Modal ? this : Application.Top;
+					top.FocusNext ();
+					if (top.Focused == null) {
+						top.FocusNext ();
 					}
-					Application.Top.SetNeedsDisplay ();
+					top.SetNeedsDisplay ();
 				} else {
 					MoveNext ();
 				}
@@ -354,11 +355,12 @@ namespace Terminal.Gui {
 			case Key.Tab | Key.ShiftMask | Key.CtrlMask:
 			case Key key when key == Application.AlternateBackwardKey: // Needed on Unix
 				if (Application.MdiTop == null) {
-					Application.Top.FocusPrev ();
-					if (Application.Top.Focused == null) {
-						Application.Top.FocusPrev ();
+					var top = Modal ? this : Application.Top;
+					top.FocusPrev ();
+					if (top.Focused == null) {
+						top.FocusPrev ();
 					}
-					Application.Top.SetNeedsDisplay ();
+					top.SetNeedsDisplay ();
 				} else {
 					MovePrevious ();
 				}