Selaa lähdekoodia

Preparing PR + fix cursor issue happening inside frameview

Gilles Freart 4 vuotta sitten
vanhempi
commit
8a13efbb83

+ 2 - 2
Terminal.Gui/ConsoleDrivers/FakeDriver/FakeDriver.cs

@@ -422,12 +422,12 @@ namespace Terminal.Gui {
 		{
 		{
 			visibility = CursorVisibility.Default;
 			visibility = CursorVisibility.Default;
 
 
-			return true;
+			return false;
 		}
 		}
 
 
 		public override bool SetCursorVisibility (CursorVisibility visibility)
 		public override bool SetCursorVisibility (CursorVisibility visibility)
 		{
 		{
-			return true;
+			return false;
 		}
 		}
 
 
 		public override bool EnsureCursorVisibility ()
 		public override bool EnsureCursorVisibility ()

+ 1 - 1
Terminal.Gui/ConsoleDrivers/WindowsDriver.cs

@@ -504,6 +504,7 @@ namespace Terminal.Gui {
 		[DllImport ("kernel32.dll")]
 		[DllImport ("kernel32.dll")]
 		static extern bool GetConsoleMode (IntPtr hConsoleHandle, out uint lpMode);
 		static extern bool GetConsoleMode (IntPtr hConsoleHandle, out uint lpMode);
 
 
+
 		[DllImport ("kernel32.dll")]
 		[DllImport ("kernel32.dll")]
 		static extern bool SetConsoleMode (IntPtr hConsoleHandle, uint dwMode);
 		static extern bool SetConsoleMode (IntPtr hConsoleHandle, uint dwMode);
 
 
@@ -1490,7 +1491,6 @@ namespace Terminal.Gui {
 		public override void CookMouse ()
 		public override void CookMouse ()
 		{
 		{
 		}
 		}
-
 		#endregion
 		#endregion
 	}
 	}
 
 

+ 2 - 2
Terminal.Gui/Core/Application.cs

@@ -503,7 +503,6 @@ namespace Terminal.Gui {
 			toplevel.PositionCursor ();
 			toplevel.PositionCursor ();
 			Driver.Refresh ();
 			Driver.Refresh ();
 
 
-
 			return rs;
 			return rs;
 		}
 		}
 
 
@@ -711,7 +710,8 @@ namespace Terminal.Gui {
 					RunLoop (runToken);
 					RunLoop (runToken);
 
 
 					End (runToken);
 					End (runToken);
-				} catch (Exception error)
+				} 
+				catch (Exception error)
 				{
 				{
 					if (errorHandler == null)
 					if (errorHandler == null)
 					{
 					{

+ 0 - 8
Terminal.Gui/Views/DateField.cs

@@ -377,14 +377,6 @@ namespace Terminal.Gui {
 		{
 		{
 			DateChanged?.Invoke (args);
 			DateChanged?.Invoke (args);
 		}
 		}
-
-		///<inheritdoc/>
-		public override bool OnEnter (View view)
-		{
-			Application.Driver.SetCursorVisibility (CursorVisibility.Invisible);
-
-			return base.OnEnter (view);
-		}
 	}
 	}
 
 
 	/// <summary>
 	/// <summary>

+ 4 - 1
Terminal.Gui/Views/FrameView.cs

@@ -9,6 +9,7 @@
 //  - Does not support IEnumerable
 //  - Does not support IEnumerable
 // Any udpates done here should probably be done in Window as well; TODO: Merge these classes
 // Any udpates done here should probably be done in Window as well; TODO: Merge these classes
 
 
+using System.Linq;
 using NStack;
 using NStack;
 
 
 namespace Terminal.Gui {
 namespace Terminal.Gui {
@@ -195,7 +196,9 @@ namespace Terminal.Gui {
 		///<inheritdoc/>
 		///<inheritdoc/>
 		public override bool OnEnter (View view)
 		public override bool OnEnter (View view)
 		{
 		{
-			Application.Driver.SetCursorVisibility (CursorVisibility.Invisible);
+			if (Subviews.Count == 0 || !Subviews.Any (subview => subview.CanFocus)) {
+				Application.Driver?.SetCursorVisibility (CursorVisibility.Invisible);
+			}
 
 
 			return base.OnEnter (view);
 			return base.OnEnter (view);
 		}
 		}

+ 4 - 1
Terminal.Gui/Views/ScrollView.cs

@@ -12,6 +12,7 @@
 // - Perhaps allow an option to not display the scrollbar arrow indicators?
 // - Perhaps allow an option to not display the scrollbar arrow indicators?
 
 
 using System;
 using System;
+using System.Linq;
 using System.Reflection;
 using System.Reflection;
 
 
 namespace Terminal.Gui {
 namespace Terminal.Gui {
@@ -526,7 +527,9 @@ namespace Terminal.Gui {
 		///<inheritdoc/>
 		///<inheritdoc/>
 		public override bool OnEnter (View view)
 		public override bool OnEnter (View view)
 		{
 		{
-			Application.Driver.SetCursorVisibility (CursorVisibility.Invisible);
+			if (Subviews.Count == 0 || !Subviews.Any (subview => subview.CanFocus)) {
+				Application.Driver?.SetCursorVisibility (CursorVisibility.Invisible);
+			}
 
 
 			return base.OnEnter (view);
 			return base.OnEnter (view);
 		}
 		}

+ 18 - 19
UICatalog/Scenarios/Editor.cs

@@ -24,25 +24,24 @@ namespace UICatalog {
 				Top = Application.Top;
 				Top = Application.Top;
 			}
 			}
 
 
-			List<MenuBarItem> menuBarItems = new List<MenuBarItem> ();
-
-			menuBarItems.AddRange	(	new MenuBarItem [] 
-							{
-								new MenuBarItem ("_File", new MenuItem [] {
-									new MenuItem ("_New", "", () => New()),
-									new MenuItem ("_Open", "", () => Open()),
-									new MenuItem ("_Save", "", () => Save()),
-									null,
-									new MenuItem ("_Quit", "", () => Quit()),
-								}),
-								new MenuBarItem ("_Edit", new MenuItem [] {
-									new MenuItem ("_Copy", "", () => Copy()),
-									new MenuItem ("C_ut", "", () => Cut()),
-									new MenuItem ("_Paste", "", () => Paste())
-								}),
-								new MenuBarItem ("_ScrollBarView", CreateKeepChecked ())
-							}
-						);
+			List<MenuBarItem> menuBarItems = new List<MenuBarItem> (
+				new MenuBarItem [] 
+				{
+					new MenuBarItem ("_File", new MenuItem [] {
+						new MenuItem ("_New", "", () => New()),
+						new MenuItem ("_Open", "", () => Open()),
+						new MenuItem ("_Save", "", () => Save()),
+						null,
+						new MenuItem ("_Quit", "", () => Quit()),
+					}),
+					new MenuBarItem ("_Edit", new MenuItem [] {
+						new MenuItem ("_Copy", "", () => Copy()),
+						new MenuItem ("C_ut", "", () => Cut()),
+						new MenuItem ("_Paste", "", () => Paste())
+					}),
+					new MenuBarItem ("_ScrollBarView", CreateKeepChecked ())
+				}
+			);
 
 
 			if (!Application.UseSystemConsole) {
 			if (!Application.UseSystemConsole) {
 				menuBarItems.Add (new MenuBarItem ("_Cursor", new MenuItem [] {
 				menuBarItems.Add (new MenuBarItem ("_Cursor", new MenuItem [] {