mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-30 01:38:01 +01:00
Merge branch 'master' of tig:migueldeicaza/gui.cs
This commit is contained in:
@@ -695,8 +695,9 @@ namespace Terminal.Gui {
|
||||
keyUpHandler (new KeyEvent (map, keyModifiers));
|
||||
}
|
||||
}
|
||||
if (!inputEvent.KeyEvent.bKeyDown)
|
||||
if (!inputEvent.KeyEvent.bKeyDown) {
|
||||
keyModifiers = null;
|
||||
}
|
||||
break;
|
||||
|
||||
case WindowsConsole.EventType.Mouse:
|
||||
@@ -879,7 +880,7 @@ namespace Terminal.Gui {
|
||||
};
|
||||
}
|
||||
|
||||
private async Task ProcessButtonDoubleClickedAsync ()
|
||||
async Task ProcessButtonDoubleClickedAsync ()
|
||||
{
|
||||
await Task.Delay (200);
|
||||
IsButtonDoubleClicked = false;
|
||||
@@ -896,11 +897,11 @@ namespace Terminal.Gui {
|
||||
};
|
||||
|
||||
var view = Application.wantContinuousButtonPressedView;
|
||||
if (view == null)
|
||||
if (view == null) {
|
||||
break;
|
||||
}
|
||||
if (IsButtonPressed && (mouseFlag & MouseFlags.ReportMousePosition) == 0) {
|
||||
mouseHandler (me);
|
||||
//mainLoop.Driver.Wakeup ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -351,8 +351,9 @@ namespace Terminal.Gui {
|
||||
OfY = me.Y - newxy.Y,
|
||||
View = view
|
||||
};
|
||||
if (OutsideFrame (new Point (nme.X, nme.Y), mouseGrabView.Frame))
|
||||
if (OutsideFrame (new Point (nme.X, nme.Y), mouseGrabView.Frame)) {
|
||||
lastMouseOwnerView?.OnMouseLeave (me);
|
||||
}
|
||||
if (mouseGrabView != null) {
|
||||
mouseGrabView.OnMouseEvent (nme);
|
||||
return;
|
||||
|
||||
@@ -1066,7 +1066,7 @@ namespace Terminal.Gui {
|
||||
if (subviews == null || subviews.Count == 0)
|
||||
return false;
|
||||
foreach (var view in subviews)
|
||||
if (view.ProcessHotKey (keyEvent))
|
||||
if (view.SuperView.IsCurrentTop && view.ProcessHotKey (keyEvent))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@@ -1081,7 +1081,7 @@ namespace Terminal.Gui {
|
||||
if (subviews == null || subviews.Count == 0)
|
||||
return false;
|
||||
foreach (var view in subviews)
|
||||
if (view.ProcessColdKey (keyEvent))
|
||||
if (view.SuperView.IsCurrentTop && view.ProcessColdKey (keyEvent))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@@ -1101,7 +1101,7 @@ namespace Terminal.Gui {
|
||||
if (subviews == null || subviews.Count == 0)
|
||||
return false;
|
||||
foreach (var view in subviews)
|
||||
if (view.OnKeyDown (keyEvent))
|
||||
if (view.SuperView.IsCurrentTop && view.OnKeyDown (keyEvent))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@@ -1122,7 +1122,7 @@ namespace Terminal.Gui {
|
||||
if (subviews == null || subviews.Count == 0)
|
||||
return false;
|
||||
foreach (var view in subviews)
|
||||
if (view.OnKeyUp (keyEvent))
|
||||
if (view.SuperView.IsCurrentTop && view.OnKeyUp (keyEvent))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
||||
@@ -788,6 +788,7 @@ namespace Terminal.Gui {
|
||||
{
|
||||
CloseMenu (false, false);
|
||||
}
|
||||
|
||||
internal void CloseMenu (bool reopen = false, bool isSubMenu = false)
|
||||
{
|
||||
isMenuClosing = true;
|
||||
@@ -809,12 +810,11 @@ namespace Terminal.Gui {
|
||||
if (!reopen)
|
||||
selected = -1;
|
||||
LastFocused.SuperView?.SetFocus (LastFocused);
|
||||
IsMenuOpen = false;
|
||||
} else {
|
||||
SuperView.SetFocus (this);
|
||||
IsMenuOpen = false;
|
||||
PositionCursor ();
|
||||
}
|
||||
IsMenuOpen = false;
|
||||
break;
|
||||
|
||||
case true:
|
||||
@@ -823,10 +823,10 @@ namespace Terminal.Gui {
|
||||
RemoveAllOpensSubMenus ();
|
||||
openCurrentMenu.previousSubFocused?.SuperView?.SetFocus (openCurrentMenu.previousSubFocused);
|
||||
openSubMenu = null;
|
||||
IsMenuOpen = true;
|
||||
break;
|
||||
}
|
||||
isMenuClosing = false;
|
||||
IsMenuOpen = false;
|
||||
}
|
||||
|
||||
void RemoveSubMenu (int index)
|
||||
@@ -1087,31 +1087,26 @@ namespace Terminal.Gui {
|
||||
}
|
||||
handled = false;
|
||||
|
||||
if (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1Clicked || me.Flags == MouseFlags.Button1DoubleClicked ||
|
||||
if (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked || me.Flags == MouseFlags.Button1Clicked ||
|
||||
(me.Flags == MouseFlags.ReportMousePosition && selected > -1) ||
|
||||
(me.Flags.HasFlag (MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition) && selected > -1)) {
|
||||
int pos = 1;
|
||||
int cx = me.X;
|
||||
for (int i = 0; i < Menus.Length; i++) {
|
||||
if (cx > pos && me.X < pos + 1 + Menus [i].TitleLength) {
|
||||
if (selected == i && (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked) &&
|
||||
IsMenuOpen) {
|
||||
Application.UngrabMouse ();
|
||||
if (me.Flags == MouseFlags.Button1Clicked) {
|
||||
if (Menus [i].IsTopLevel) {
|
||||
var menu = new Menu (this, i, 0, Menus [i]);
|
||||
menu.Run (Menus [i].Action);
|
||||
} else {
|
||||
CloseMenu ();
|
||||
}
|
||||
} else if ((me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked) &&
|
||||
!IsMenuOpen) {
|
||||
if (Menus [i].IsTopLevel) {
|
||||
var menu = new Menu (this, i, 0, Menus [i]);
|
||||
menu.Run (Menus [i].Action);
|
||||
} else if (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked) {
|
||||
if (IsMenuOpen) {
|
||||
CloseAllMenus ();
|
||||
} else {
|
||||
Activate (i);
|
||||
}
|
||||
} else if (selected != i && selected > -1 && me.Flags == MouseFlags.ReportMousePosition) {
|
||||
} else if (selected != i && selected > -1 && (me.Flags == MouseFlags.ReportMousePosition ||
|
||||
me.Flags == MouseFlags.Button1Pressed && me.Flags == MouseFlags.ReportMousePosition)) {
|
||||
if (IsMenuOpen) {
|
||||
CloseMenu ();
|
||||
Activate (i);
|
||||
@@ -1140,7 +1135,7 @@ namespace Terminal.Gui {
|
||||
me.View.MouseEvent (me);
|
||||
}
|
||||
} else if (!(me.View is MenuBar || me.View is Menu) && (me.Flags.HasFlag (MouseFlags.Button1Clicked) ||
|
||||
me.Flags == MouseFlags.Button1DoubleClicked || me.Flags == MouseFlags.Button1Pressed)) {
|
||||
me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked)) {
|
||||
Application.UngrabMouse ();
|
||||
CloseAllMenus ();
|
||||
handled = false;
|
||||
@@ -1149,24 +1144,25 @@ namespace Terminal.Gui {
|
||||
handled = false;
|
||||
return false;
|
||||
}
|
||||
} else if (!IsMenuOpen && (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked ||
|
||||
me.Flags.HasFlag (MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition))) {
|
||||
} else if (!IsMenuOpen && (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked || me.Flags.HasFlag (MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition))) {
|
||||
Application.GrabMouse (current);
|
||||
} else {
|
||||
} else if (IsMenuOpen && (me.View is MenuBar || me.View is Menu)) {
|
||||
Application.GrabMouse (me.View);
|
||||
}
|
||||
else {
|
||||
handled = false;
|
||||
return false;
|
||||
}
|
||||
//if (me.View != this && (me.Flags != MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked))
|
||||
//if (me.View != this && me.Flags != MouseFlags.Button1Pressed)
|
||||
// return true;
|
||||
//else if (me.View != this && (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked)) {
|
||||
//else if (me.View != this && me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked) {
|
||||
// Application.UngrabMouse ();
|
||||
// host.CloseAllMenus ();
|
||||
// return true;
|
||||
//}
|
||||
|
||||
|
||||
//if (!(me.View is MenuBar) && !(me.View is Menu) && (me.Flags != MouseFlags.Button1Pressed ||
|
||||
// me.Flags != MouseFlags.Button1DoubleClicked))
|
||||
//if (!(me.View is MenuBar) && !(me.View is Menu) && me.Flags != MouseFlags.Button1Pressed))
|
||||
// return false;
|
||||
|
||||
//if (Application.mouseGrabView != null) {
|
||||
@@ -1175,12 +1171,11 @@ namespace Terminal.Gui {
|
||||
// me.Y -= me.OfY;
|
||||
// me.View.MouseEvent (me);
|
||||
// return true;
|
||||
// } else if (!(me.View is MenuBar || me.View is Menu) && (me.Flags == MouseFlags.Button1Pressed ||
|
||||
// me.Flags == MouseFlags.Button1DoubleClicked)) {
|
||||
// } else if (!(me.View is MenuBar || me.View is Menu) && me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked) {
|
||||
// Application.UngrabMouse ();
|
||||
// CloseAllMenus ();
|
||||
// }
|
||||
//} else if (!isMenuClosed && selected == -1 && (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked)) {
|
||||
//} else if (!isMenuClosed && selected == -1 && me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked) {
|
||||
// Application.GrabMouse (this);
|
||||
// return true;
|
||||
//}
|
||||
|
||||
Reference in New Issue
Block a user