Merge branch 'master' into idisposable

This commit is contained in:
Charlie Kindel
2020-06-14 08:54:39 -07:00
5 changed files with 36 additions and 17 deletions

View File

@@ -223,7 +223,7 @@ namespace Terminal.Gui {
if (cev.ButtonState == Curses.Event.ReportMousePosition) {
mouseFlag = (MouseFlags)LastMouseButtonPressed | MouseFlags.ReportMousePosition;
point = new Point ();
cancelButtonClicked = true;
//cancelButtonClicked = true;
} else {
point = new Point () {
X = cev.X,

View File

@@ -866,7 +866,7 @@ namespace Terminal.Gui {
X = mouseEvent.MousePosition.X,
Y = mouseEvent.MousePosition.Y
};
if (p == point) {
//if (p == point) {
switch (LastMouseButtonPressed) {
case WindowsConsole.ButtonState.Button1Pressed:
mouseFlag = MouseFlags.Button1Clicked;
@@ -880,9 +880,13 @@ namespace Terminal.Gui {
mouseFlag = MouseFlags.Button3Clicked;
break;
}
} else {
mouseFlag = 0;
}
point = new Point () {
X = mouseEvent.MousePosition.X,
Y = mouseEvent.MousePosition.Y
};
//} else {
// mouseFlag = 0;
//}
LastMouseButtonPressed = null;
IsButtonReleased = false;
} else if (mouseEvent.EventFlags.HasFlag (WindowsConsole.EventFlags.DoubleClick)) {
@@ -927,7 +931,12 @@ namespace Terminal.Gui {
}
} else if (mouseEvent.EventFlags == WindowsConsole.EventFlags.MouseMoved) {
mouseFlag = MouseFlags.ReportMousePosition;
if (mouseEvent.MousePosition.X != point.X || mouseEvent.MousePosition.Y != point.Y) {
mouseFlag = MouseFlags.ReportMousePosition;
point = new Point ();
} else {
mouseFlag = 0;
}
} else if (mouseEvent.ButtonState == 0 && mouseEvent.EventFlags == 0) {
mouseFlag = 0;
}

View File

@@ -524,7 +524,7 @@ namespace Terminal.Gui {
Run (barItems.Children [meY].Action);
return true;
} else if (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked ||
me.Flags == MouseFlags.ReportMousePosition ||
me.Flags == MouseFlags.Button1TripleClicked || me.Flags == MouseFlags.ReportMousePosition ||
me.Flags.HasFlag (MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition)) {
disabled = false;
if (me.Y < 1)
@@ -1161,7 +1161,7 @@ namespace Terminal.Gui {
}
handled = false;
if (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked || me.Flags == MouseFlags.Button1Clicked ||
if (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked || me.Flags == MouseFlags.Button1TripleClicked || me.Flags == MouseFlags.Button1Clicked ||
(me.Flags == MouseFlags.ReportMousePosition && selected > -1) ||
(me.Flags.HasFlag (MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition) && selected > -1)) {
int pos = 1;
@@ -1173,7 +1173,7 @@ namespace Terminal.Gui {
var menu = new Menu (this, i, 0, Menus [i]);
menu.Run (Menus [i].Action);
}
} else if (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked) {
} else if (me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked || me.Flags == MouseFlags.Button1TripleClicked) {
if (IsMenuOpen) {
CloseAllMenus ();
} else {
@@ -1209,7 +1209,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.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked)) {
me.Flags == MouseFlags.Button1Pressed || me.Flags == MouseFlags.Button1DoubleClicked || me.Flags == MouseFlags.Button1TripleClicked)) {
Application.UngrabMouse ();
CloseAllMenus ();
handled = false;
@@ -1218,7 +1218,7 @@ 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 == MouseFlags.Button1TripleClicked || me.Flags.HasFlag (MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition))) {
Application.GrabMouse (current);
} else if (IsMenuOpen && (me.View is MenuBar || me.View is Menu)) {
Application.GrabMouse (me.View);

View File

@@ -122,6 +122,11 @@ namespace Terminal.Gui {
WantContinuousButtonPressed = true;
}
int posTopTee;
int posLeftTee;
int posBottomTee;
int posRightTee;
///<inheritdoc/>
public override void Redraw (Rect region)
{
@@ -170,9 +175,11 @@ namespace Terminal.Gui {
} else {
if (y == by1 && !hasTopTee) {
hasTopTee = true;
posTopTee = y;
special = Driver.TopTee;
} else if ((y >= by2 || by2 == 0) && !hasBottomTee) {
hasBottomTee = true;
posBottomTee = y;
special = Driver.BottomTee;
} else {
special = Driver.VLine;
@@ -222,9 +229,11 @@ namespace Terminal.Gui {
} else {
if (x == bx1 && !hasLeftTee) {
hasLeftTee = true;
posLeftTee = x;
special = Driver.LeftTee;
} else if ((x >= bx2 || bx2 == 0) && !hasRightTee) {
hasRightTee = true;
posRightTee = x;
special = Driver.RightTee;
} else {
special = Driver.HLine;
@@ -252,6 +261,8 @@ namespace Terminal.Gui {
int location = vertical ? me.Y : me.X;
int barsize = vertical ? Bounds.Height : Bounds.Width;
int posTopLeftTee = vertical ? posTopTee : posLeftTee;
int posBottomRightTee = vertical ? posBottomTee : posRightTee;
barsize -= 2;
var pos = Position;
@@ -265,12 +276,11 @@ namespace Terminal.Gui {
var b1 = pos * barsize / Size;
var b2 = (pos + barsize) * barsize / Size;
if (b2 == 0 && location == 1 && pos == 0 ||
(b2 == barsize && location == barsize) ||
(location > b1 && location < b2)) {
if (b1 == 0 && location == 1 && pos == 0 || (location >= posTopLeftTee + 1 && location <= posBottomRightTee + 1 && (pos != 0 || pos != Size - 1) && location != 1 && location != barsize) ||
(b2 == barsize + (b2 - b1 - 1) && location == barsize && pos == Size - 1)) {
return true;
} else if (location <= barsize) {
if (location > 1 && location >= b2)
if (location > 1 && location > posTopLeftTee && location > posBottomRightTee)
SetPosition (Math.Min (pos + (Size / location), Size - 1));
else if (location <= b2 && pos > 0 || pos > 0)
SetPosition (Math.Max (pos - (Size / barsize), 0));
@@ -556,7 +566,7 @@ namespace Terminal.Gui {
public bool ScrollDown (int lines)
{
var ny = Math.Max (-contentSize.Height, contentOffset.Y - lines);
if (Math.Abs (ny) == contentSize.Height)
if (ny == contentOffset.Y)
return false;
ContentOffset = new Point (contentOffset.X, ny);
return true;

View File

@@ -100,7 +100,7 @@ namespace Terminal.Gui {
if (SuperView == null || SuperView == Application.Top) {
Y = Driver.Rows - 1;
} else {
Y = Pos.Bottom (SuperView);
//Y = Pos.Bottom (SuperView);
}
};