Browse Source

Also fixed the position and unicode on StatusBar.

BDisp 5 years ago
parent
commit
f34e869ad6

+ 1 - 0
Terminal.Gui/Core/Toplevel.cs

@@ -286,6 +286,7 @@ namespace Terminal.Gui {
 
 
 		internal void PositionToplevels ()
 		internal void PositionToplevels ()
 		{
 		{
+			PositionToplevel (this);
 			foreach (var top in Subviews) {
 			foreach (var top in Subviews) {
 				if (top is Toplevel) {
 				if (top is Toplevel) {
 					PositionToplevel ((Toplevel)top);
 					PositionToplevel ((Toplevel)top);

+ 5 - 5
Terminal.Gui/Views/StatusBar.cs

@@ -88,7 +88,7 @@ namespace Terminal.Gui {
 			CanFocus = false;
 			CanFocus = false;
 			ColorScheme = Colors.Menu;
 			ColorScheme = Colors.Menu;
 			X = 0;
 			X = 0;
-			Y = Driver.Rows - 1;
+			Y = SuperView != null ? SuperView.Frame.Height - 1 : Pos.AnchorEnd (1);
 			Width = Dim.Fill ();
 			Width = Dim.Fill ();
 			Height = 1;
 			Height = 1;
 
 
@@ -100,8 +100,8 @@ namespace Terminal.Gui {
 			return delegate {
 			return delegate {
 				X = 0;
 				X = 0;
 				Height = 1;
 				Height = 1;
-				if (SuperView == null || SuperView == Application.Top) {
-					Y = Driver.Rows - 1;
+				if (SuperView == null || SuperView is Toplevel) {
+					Y = SuperView.Frame.Height - 1;
 				} else {
 				} else {
 					//Y = Pos.Bottom (SuperView);
 					//Y = Pos.Bottom (SuperView);
 				}
 				}
@@ -125,7 +125,7 @@ namespace Terminal.Gui {
 			//}
 			//}
 
 
 			Move (0, 0);
 			Move (0, 0);
-			Driver.SetAttribute (ColorScheme.Normal);
+			Driver.SetAttribute (Colors.Menu.Normal);
 			for (int i = 0; i < Frame.Width; i++)
 			for (int i = 0; i < Frame.Width; i++)
 				Driver.AddRune (' ');
 				Driver.AddRune (' ');
 
 
@@ -134,7 +134,7 @@ namespace Terminal.Gui {
 			Driver.SetAttribute (scheme);
 			Driver.SetAttribute (scheme);
 			for (int i = 0; i < Items.Length; i++) {
 			for (int i = 0; i < Items.Length; i++) {
 				var title = Items [i].Title;
 				var title = Items [i].Title;
-				for (int n = 0; n < title.Length; n++) {
+				for (int n = 0; n < title.RuneCount; n++) {
 					if (title [n] == '~') {
 					if (title [n] == '~') {
 						scheme = ToggleScheme (scheme);
 						scheme = ToggleScheme (scheme);
 						continue;
 						continue;

+ 7 - 0
UICatalog/Scenarios/Unicode.cs

@@ -36,6 +36,13 @@ namespace UICatalog {
 			});
 			});
 			Top.Add (menu);
 			Top.Add (menu);
 
 
+			var statusBar = new StatusBar (new StatusItem [] {
+				new StatusItem (Key.ControlQ, "~^Q~ Выход", () => Application.RequestStop()),
+				new StatusItem (Key.Unknown, "~F2~ Создать", null),
+				new StatusItem(Key.Unknown, "~F3~ Со_хранить", null),
+			});
+			Top.Add (statusBar);
+
 			var label = new Label ("Label:") { X = 0, Y = 1 };
 			var label = new Label ("Label:") { X = 0, Y = 1 };
 			Win.Add (label);
 			Win.Add (label);
 			var testlabel = new Label (gitString) { X = 20, Y = Pos.Y (label), Width = Dim.Percent (50), };
 			var testlabel = new Label (gitString) { X = 20, Y = Pos.Y (label), Width = Dim.Percent (50), };