Procházet zdrojové kódy

Fixed backward bug and added one more unit test to probe.

BDisp před 4 roky
rodič
revize
351cb8133f

+ 1 - 1
Terminal.Gui/Core/View.cs

@@ -1342,8 +1342,8 @@ namespace Terminal.Gui {
 							// Draw the subview
 							// Use the view's bounds (view-relative; Location will always be (0,0)
 							if (view.Visible && view.Frame.Width > 0 && view.Frame.Height > 0) {
-								view.OnDrawContent (view.Bounds);
 								view.Redraw (view.Bounds);
+								view.OnDrawContent (view.Bounds);
 							}
 						}
 						view.NeedDisplay = Rect.Empty;

+ 1 - 1
Terminal.Gui/Views/ScrollBarView.cs

@@ -137,7 +137,7 @@ namespace Terminal.Gui {
 						if (max > 0 && max == value - position) {
 							position = value;
 						} else {
-							position = Math.Max (max, 0);
+							position = Math.Max (position + max, 0);
 						}
 					}
 					OnChangedPosition ();

+ 26 - 0
UnitTests/ScrollBarViewTests.cs

@@ -146,6 +146,32 @@ namespace Terminal.Gui {
 			Assert.Equal (_horizontal.Position, _hostView.Left);
 		}
 
+		[Fact]
+		public void ChangedPosition_Scrolling ()
+		{
+			Hosting_A_View_To_A_ScrollBarView ();
+
+			AddHandlers ();
+
+			for (int i = 0; i < _vertical.Size; i++) {
+				_vertical.Position += 1;
+				Assert.Equal (_vertical.Position, _hostView.Top);
+			}
+			for (int i = _vertical.Size - 1; i >= 0; i--) {
+				_vertical.Position -= 1;
+				Assert.Equal (_vertical.Position, _hostView.Top);
+			}
+
+			for (int i = 0; i < _horizontal.Size; i++) {
+				_horizontal.Position += i;
+				Assert.Equal (_horizontal.Position, _hostView.Left);
+			}
+			for (int i = _horizontal.Size - 1; i >= 0; i--) {
+				_horizontal.Position -= 1;
+				Assert.Equal (_horizontal.Position, _hostView.Left);
+			}
+		}
+
 		[Fact]
 		public void ChangedPosition_Negative_Value ()
 		{