From 28d7be721cbf2a48aa72f23c736d1e9649b60951 Mon Sep 17 00:00:00 2001 From: Tig Kindel Date: Tue, 21 Feb 2023 11:53:10 +1300 Subject: [PATCH] Revert "Illustrates #2331 (Scrollview not respecting clip) does not reproduce (#2332)" This reverts commit c85ff954aa8cebf0e0eb934d9d283551a6f63db8. --- Terminal.Gui/Core/View.cs | 25 +- UICatalog/Scenarios/ASCIICustomButton.cs | 313 ----------------------- UnitTests/Core/BorderTests.cs | 80 +----- UnitTests/Views/ScrollViewTests.cs | 228 +---------------- 4 files changed, 29 insertions(+), 617 deletions(-) delete mode 100644 UICatalog/Scenarios/ASCIICustomButton.cs diff --git a/Terminal.Gui/Core/View.cs b/Terminal.Gui/Core/View.cs index 018cf1384..19f086715 100644 --- a/Terminal.Gui/Core/View.cs +++ b/Terminal.Gui/Core/View.cs @@ -1109,8 +1109,15 @@ namespace Terminal.Gui { /// public void Clear () { - var h = Frame.Height; - var w = Frame.Width; + Rect containerBounds = GetContainerBounds (); + Rect viewBounds = Bounds; + if (!containerBounds.IsEmpty) { + viewBounds.Width = Math.Min (viewBounds.Width, containerBounds.Width); + viewBounds.Height = Math.Min (viewBounds.Height, containerBounds.Height); + } + + var h = viewBounds.Height; + var w = viewBounds.Width; for (var line = 0; line < h; line++) { Move (0, line); for (var col = 0; col < w; col++) @@ -1524,8 +1531,7 @@ namespace Terminal.Gui { } if (!ustring.IsNullOrEmpty (TextFormatter.Text)) { - Rect containerBounds = GetContainerBounds (); - Clear (ViewToScreen (GetNeedDisplay (containerBounds))); + Clear (); SetChildNeedsDisplay (); // Draw any Text if (TextFormatter != null) { @@ -1568,17 +1574,6 @@ namespace Terminal.Gui { ClearNeedsDisplay (); } - Rect GetNeedDisplay (Rect containerBounds) - { - Rect rect = NeedDisplay; - if (!containerBounds.IsEmpty) { - rect.Width = Math.Min (NeedDisplay.Width, containerBounds.Width); - rect.Height = Math.Min (NeedDisplay.Height, containerBounds.Height); - } - - return rect; - } - Rect GetContainerBounds () { var containerBounds = SuperView == null ? default : SuperView.ViewToScreen (SuperView.Bounds); diff --git a/UICatalog/Scenarios/ASCIICustomButton.cs b/UICatalog/Scenarios/ASCIICustomButton.cs deleted file mode 100644 index 77cacf8b9..000000000 --- a/UICatalog/Scenarios/ASCIICustomButton.cs +++ /dev/null @@ -1,313 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using Terminal.Gui; - -namespace UICatalog.Scenarios { - [ScenarioMetadata (Name: "ASCIICustomButtonTest", Description: "ASCIICustomButton sample")] - [ScenarioCategory ("Controls")] - public class ASCIICustomButtonTest : Scenario { - private static bool smallerWindow; - private ScrollViewTestWindow scrollViewTestWindow; - private MenuItem miSmallerWindow; - - public override void Init (ColorScheme colorScheme) - { - Application.Init (); - scrollViewTestWindow = new ScrollViewTestWindow (); - var menu = new MenuBar (new MenuBarItem [] { - new MenuBarItem("Window Size", new MenuItem [] { - miSmallerWindow = new MenuItem ("Smaller Window", "", ChangeWindowSize) { - CheckType = MenuItemCheckStyle.Checked - }, - null, - new MenuItem("Quit", "",() => Application.RequestStop(),null,null, Key.Q | Key.CtrlMask) - }) - }); - Application.Top.Add (menu, scrollViewTestWindow); - Application.Run (); - } - - private void ChangeWindowSize () - { - smallerWindow = miSmallerWindow.Checked = !miSmallerWindow.Checked; - scrollViewTestWindow.Dispose (); - Application.Top.Remove (scrollViewTestWindow); - scrollViewTestWindow = new ScrollViewTestWindow (); - Application.Top.Add (scrollViewTestWindow); - } - - public override void Run () - { - } - - public class ASCIICustomButton : Button { - public string Description => $"Description of: {id}"; - - public event Action PointerEnter; - - private Label fill; - private FrameView border; - private string id; - - public ASCIICustomButton (string text, Pos x, Pos y, int width, int height) : base (text) - { - CustomInitialize ("", text, x, y, width, height); - } - - public ASCIICustomButton (string id, string text, Pos x, Pos y, int width, int height) : base (text) - { - CustomInitialize (id, text, x, y, width, height); - } - - private void CustomInitialize (string id, string text, Pos x, Pos y, int width, int height) - { - this.id = id; - X = x; - Y = y; - - Frame = new Rect { - Width = width, - Height = height - }; - - border = new FrameView () { - Width = width, - Height = height - }; - - AutoSize = false; - - var fillText = new System.Text.StringBuilder (); - for (int i = 0; i < Bounds.Height; i++) { - if (i > 0) { - fillText.AppendLine (""); - } - for (int j = 0; j < Bounds.Width; j++) { - fillText.Append ("█"); - } - } - - fill = new Label (fillText.ToString ()) { - Visible = false, - CanFocus = false - }; - - var title = new Label (text) { - X = Pos.Center (), - Y = Pos.Center (), - }; - - border.MouseClick += This_MouseClick; - border.Subviews [0].MouseClick += This_MouseClick; - fill.MouseClick += This_MouseClick; - title.MouseClick += This_MouseClick; - - Add (border, fill, title); - } - - private void This_MouseClick (MouseEventArgs obj) - { - OnMouseEvent (obj.MouseEvent); - } - - public override bool OnMouseEvent (MouseEvent mouseEvent) - { - Debug.WriteLine ($"{mouseEvent.Flags}"); - if (mouseEvent.Flags == MouseFlags.Button1Clicked) { - if (!HasFocus && SuperView != null) { - if (!SuperView.HasFocus) { - SuperView.SetFocus (); - } - SetFocus (); - SetNeedsDisplay (); - } - - OnClicked (); - return true; - } - return base.OnMouseEvent (mouseEvent); - } - - public override bool OnEnter (View view) - { - border.Visible = false; - fill.Visible = true; - PointerEnter.Invoke (this); - view = this; - return base.OnEnter (view); - } - - public override bool OnLeave (View view) - { - border.Visible = true; - fill.Visible = false; - if (view == null) - view = this; - return base.OnLeave (view); - } - } - - public class ScrollViewTestWindow : Window { - private List