mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-30 01:38:01 +01:00
Merge branch 'master' into idisposable
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user