Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allows a subview reference the superview of the subview superview. #10

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
28d7be7
Revert "Illustrates #2331 (Scrollview not respecting clip) does not r…
tig Feb 20, 2023
abf07fb
Refactored SetRelativeLayout etc; looks good but tests fail
tig Feb 24, 2023
4322132
fixed da bug; also fixed pwsh clipboard tests
tig Feb 24, 2023
feae3b6
merged from develop after accident
tig Feb 24, 2023
6ba4931
merged from develop after accident
tig Feb 24, 2023
93b8dfd
fixing bugs caused by Pos.Combine bugfix
tig Feb 24, 2023
7bee36e
fixed more bugs exposed by Pos.Combine bugfix
tig Feb 24, 2023
7fc6a85
restored Generic.cs
tig Feb 24, 2023
0121006
Pos.Combine unit tests
tig Feb 24, 2023
c192f8d
re-merged changes lost from #2345
tig Feb 26, 2023
fdd5c6b
Fixed Border Comparsion Pos.Center bugs
tig Feb 26, 2023
c9cbacb
Fixed Borders on XXX Pos.Center bugs
tig Feb 26, 2023
288d81b
Allows a subview reference the superview of the subview superview.
BDisp Feb 26, 2023
c6183c7
Added one more condition to be consistent with others.
BDisp Feb 26, 2023
932aca8
Merge #2382 into #2379.
BDisp Feb 27, 2023
006f57b
Fixes the Clear method.
BDisp Feb 27, 2023
17d1235
Merged v1_setrelativelayout_improvement into v1_setrelativelayout_imp…
BDisp Feb 27, 2023
534d4ea
Fixes Revert "Illustrates #2331 (Scrollview not respecting clip) does…
BDisp Feb 27, 2023
47ca62d
ToString must return the Pos/Dim class name. Also Target.ToString() i…
BDisp Feb 27, 2023
19dbb41
ToString() is to force throw if View is null. Good catch.
BDisp Feb 27, 2023
ad426ff
Fixes unit tests to support Pos/Dim changes.
BDisp Feb 27, 2023
d15732e
Removing ToString() because they aren't View class and did a reformat.
BDisp Feb 27, 2023
2064947
GetContainerBounds already has called ViewToScreen, so do the same to…
BDisp Feb 27, 2023
ab0ad0a
Added some more PosCenter unit tests.
BDisp Feb 27, 2023
f73b791
Fixes redraw behavior by ignoring negative rows.
BDisp Feb 27, 2023
bea9dcf
Fixes Borders scenario.
BDisp Feb 27, 2023
0892fed
Fixes BordersComparisons scenario.
BDisp Feb 27, 2023
04d7055
Reducing enormously the code of the borders on containers scenarios b…
BDisp Feb 27, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
121 changes: 80 additions & 41 deletions Terminal.Gui/Core/Border.cs
Original file line number Diff line number Diff line change
Expand Up @@ -665,39 +665,51 @@ private void DrawChildBorder (Rect frame, bool fill = true)

// Draw the upper BorderThickness
for (int r = frame.Y - drawMarginFrame - sumThickness.Top;
r > 0 && r < frame.Y - drawMarginFrame - padding.Top; r++) {
r < frame.Y - drawMarginFrame - padding.Top; r++) {

if (r < 0) {
continue;
}
for (int c = frame.X - drawMarginFrame - sumThickness.Left;
c > 0 && c < Math.Min (frame.Right + drawMarginFrame + sumThickness.Right, driver.Cols); c++) {
c < Math.Min (frame.Right + drawMarginFrame + sumThickness.Right, driver.Cols); c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the left BorderThickness
for (int r = frame.Y - drawMarginFrame - padding.Top;
r > 0 && r < Math.Min (frame.Bottom + drawMarginFrame + padding.Bottom, driver.Rows); r++) {
r < Math.Min (frame.Bottom + drawMarginFrame + padding.Bottom, driver.Rows); r++) {

if (r < 0) {
continue;
}
for (int c = frame.X - drawMarginFrame - sumThickness.Left;
c > 0 && c < frame.X - drawMarginFrame - padding.Left; c++) {
c < frame.X - drawMarginFrame - padding.Left; c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the right BorderThickness
for (int r = frame.Y - drawMarginFrame - padding.Top;
r > 0 && r < Math.Min (frame.Bottom + drawMarginFrame + padding.Bottom, driver.Rows); r++) {
r < Math.Min (frame.Bottom + drawMarginFrame + padding.Bottom, driver.Rows); r++) {

if (r < 0) {
continue;
}
for (int c = frame.Right + drawMarginFrame + padding.Right;
c > 0 && c < Math.Min (frame.Right + drawMarginFrame + sumThickness.Right, driver.Cols); c++) {
c < Math.Min (frame.Right + drawMarginFrame + sumThickness.Right, driver.Cols); c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the lower BorderThickness
for (int r = frame.Bottom + drawMarginFrame + padding.Bottom;
r > 0 && r > 0 && r < Math.Min (frame.Bottom + drawMarginFrame + sumThickness.Bottom, driver.Rows); r++) {
r < Math.Min (frame.Bottom + drawMarginFrame + sumThickness.Bottom, driver.Rows); r++) {
for (int c = frame.X - drawMarginFrame - sumThickness.Left;
c > 0 && c > 0 && c < Math.Min (frame.Right + drawMarginFrame + sumThickness.Right, driver.Cols); c++) {
c < Math.Min (frame.Right + drawMarginFrame + sumThickness.Right, driver.Cols); c++) {

AddRuneAt (driver, c, r, ' ');
}
Expand All @@ -707,39 +719,43 @@ private void DrawChildBorder (Rect frame, bool fill = true)

// Draw the upper Padding
for (int r = frame.Y - drawMarginFrame - padding.Top;
r > 0 && r < frame.Y - drawMarginFrame; r++) {
r < frame.Y - drawMarginFrame; r++) {

if (r < 0) {
continue;
}
for (int c = frame.X - drawMarginFrame - padding.Left;
c > 0 && c < Math.Min (frame.Right + drawMarginFrame + padding.Right, driver.Cols); c++) {
c < Math.Min (frame.Right + drawMarginFrame + padding.Right, driver.Cols); c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the left Padding
for (int r = frame.Y - drawMarginFrame;
r > 0 && r < Math.Min (frame.Bottom + drawMarginFrame, driver.Rows); r++) {
r < Math.Min (frame.Bottom + drawMarginFrame, driver.Rows); r++) {
for (int c = frame.X - drawMarginFrame - padding.Left;
c > 0 && c < frame.X - drawMarginFrame; c++) {
c < frame.X - drawMarginFrame; c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the right Padding
for (int r = frame.Y - drawMarginFrame;
r > 0 && r < Math.Min (frame.Bottom + drawMarginFrame, driver.Rows); r++) {
r < Math.Min (frame.Bottom + drawMarginFrame, driver.Rows); r++) {
for (int c = frame.Right + drawMarginFrame;
c > 0 && c < Math.Min (frame.Right + drawMarginFrame + padding.Right, driver.Cols); c++) {
c < Math.Min (frame.Right + drawMarginFrame + padding.Right, driver.Cols); c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the lower Padding
for (int r = frame.Bottom + drawMarginFrame;
r > 0 && r < Math.Min (frame.Bottom + drawMarginFrame + padding.Bottom, driver.Rows); r++) {
r < Math.Min (frame.Bottom + drawMarginFrame + padding.Bottom, driver.Rows); r++) {
for (int c = frame.X - drawMarginFrame - padding.Left;
c > 0 && c < Math.Min (frame.Right + drawMarginFrame + padding.Right, driver.Cols); c++) {
c < Math.Min (frame.Right + drawMarginFrame + padding.Right, driver.Cols); c++) {

AddRuneAt (driver, c, r, ' ');
}
Expand Down Expand Up @@ -820,39 +836,50 @@ private void DrawParentBorder (Rect frame, bool fill = true)

// Draw the upper BorderThickness
for (int r = frame.Y;
r > 0 && r < Math.Min (frame.Y + borderThickness.Top, frame.Bottom); r++) {
r < Math.Min (frame.Y + borderThickness.Top, frame.Bottom); r++) {
if (r < 0) {
continue;
}
for (int c = frame.X;
c > 0 && c < Math.Min (frame.Right, driver.Cols); c++) {
c < Math.Min (frame.Right, driver.Cols); c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the left BorderThickness
for (int r = Math.Min (frame.Y + borderThickness.Top, frame.Bottom);
r > 0 && r < Math.Min (frame.Bottom - borderThickness.Bottom, driver.Rows); r++) {
r < Math.Min (frame.Bottom - borderThickness.Bottom, driver.Rows); r++) {

if (r < 0) {
continue;
}
for (int c = frame.X;
c > 0 && c < Math.Min (frame.X + borderThickness.Left, frame.Right); c++) {
c < Math.Min (frame.X + borderThickness.Left, frame.Right); c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the right BorderThickness
for (int r = Math.Min (frame.Y + borderThickness.Top, frame.Bottom);
r > 0 && r < Math.Min (frame.Bottom - borderThickness.Bottom, driver.Rows); r++) {
r < Math.Min (frame.Bottom - borderThickness.Bottom, driver.Rows); r++) {

if (r < 0) {
continue;
}
for (int c = Math.Max (frame.Right - borderThickness.Right, frame.X);
c > 0 && c < Math.Min (frame.Right, driver.Cols); c++) {
c < Math.Min (frame.Right, driver.Cols); c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the lower BorderThickness
for (int r = Math.Max (frame.Bottom - borderThickness.Bottom, frame.Y);
r > 0 && r < Math.Min (frame.Bottom, driver.Rows); r++) {
r < Math.Min (frame.Bottom, driver.Rows); r++) {
for (int c = frame.X;
c > 0 && c < Math.Min (frame.Right, driver.Cols); c++) {
c < Math.Min (frame.Right, driver.Cols); c++) {

AddRuneAt (driver, c, r, ' ');
}
Expand All @@ -862,39 +889,51 @@ private void DrawParentBorder (Rect frame, bool fill = true)

// Draw the upper Padding
for (int r = frame.Y + borderThickness.Top;
r > 0 && r < Math.Min (frame.Y + sumThickness.Top, frame.Bottom - borderThickness.Bottom); r++) {
r < Math.Min (frame.Y + sumThickness.Top, frame.Bottom - borderThickness.Bottom); r++) {

if (r < 0) {
continue;
}
for (int c = frame.X + borderThickness.Left;
c > 0 && c < Math.Min (frame.Right - borderThickness.Right, driver.Cols); c++) {
c < Math.Min (frame.Right - borderThickness.Right, driver.Cols); c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the left Padding
for (int r = frame.Y + sumThickness.Top;
r > 0 && r < Math.Min (frame.Bottom - sumThickness.Bottom, driver.Rows); r++) {
r < Math.Min (frame.Bottom - sumThickness.Bottom, driver.Rows); r++) {

if (r < 0) {
continue;
}
for (int c = frame.X + borderThickness.Left;
c > 0 && c < Math.Min (frame.X + sumThickness.Left, frame.Right - borderThickness.Right); c++) {
c < Math.Min (frame.X + sumThickness.Left, frame.Right - borderThickness.Right); c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the right Padding
for (int r = frame.Y + sumThickness.Top;
r > 0 && r < Math.Min (frame.Bottom - sumThickness.Bottom, driver.Rows); r++) {
r < Math.Min (frame.Bottom - sumThickness.Bottom, driver.Rows); r++) {

if (r < 0) {
continue;
}
for (int c = Math.Max (frame.Right - sumThickness.Right, frame.X + sumThickness.Left);
c > 0 && c < Math.Max (frame.Right - borderThickness.Right, frame.X + sumThickness.Left); c++) {
c < Math.Max (frame.Right - borderThickness.Right, frame.X + sumThickness.Left); c++) {

AddRuneAt (driver, c, r, ' ');
}
}

// Draw the lower Padding
for (int r = Math.Max (frame.Bottom - sumThickness.Bottom, frame.Y + borderThickness.Top);
r > 0 && r < Math.Min (frame.Bottom - borderThickness.Bottom, driver.Rows); r++) {
r < Math.Min (frame.Bottom - borderThickness.Bottom, driver.Rows); r++) {
for (int c = frame.X + borderThickness.Left;
c > 0 && c < Math.Min (frame.Right - borderThickness.Right, driver.Cols); c++) {
c < Math.Min (frame.Right - borderThickness.Right, driver.Cols); c++) {

AddRuneAt (driver, c, r, ' ');
}
Expand All @@ -921,39 +960,39 @@ private void DrawParentBorder (Rect frame, bool fill = true)

// Draw the upper Effect3D
for (int r = Math.Max (frame.Y + effect3DOffset.Y, 0);
r > 0 && r < frame.Y; r++) {
r < frame.Y; r++) {
for (int c = Math.Max (frame.X + effect3DOffset.X, 0);
c > 0 && c < Math.Min (frame.Right + effect3DOffset.X, driver.Cols); c++) {
c < Math.Min (frame.Right + effect3DOffset.X, driver.Cols); c++) {

AddRuneAt (driver, c, r, (Rune)driver.Contents [r, c, 0]);
}
}

// Draw the left Effect3D
for (int r = Math.Max (frame.Y + effect3DOffset.Y, 0);
r > 0 && r < Math.Min (frame.Bottom + effect3DOffset.Y, driver.Rows); r++) {
r < Math.Min (frame.Bottom + effect3DOffset.Y, driver.Rows); r++) {
for (int c = Math.Max (frame.X + effect3DOffset.X, 0);
c > 0 && c < frame.X; c++) {
c < frame.X; c++) {

AddRuneAt (driver, c, r, (Rune)driver.Contents [r, c, 0]);
}
}

// Draw the right Effect3D
for (int r = Math.Max (frame.Y + effect3DOffset.Y, 0);
r > 0 && r < Math.Min (frame.Bottom + effect3DOffset.Y, driver.Rows); r++) {
r < Math.Min (frame.Bottom + effect3DOffset.Y, driver.Rows); r++) {
for (int c = frame.Right;
c > 0 && c < Math.Min (frame.Right + effect3DOffset.X, driver.Cols); c++) {
c < Math.Min (frame.Right + effect3DOffset.X, driver.Cols); c++) {

AddRuneAt (driver, c, r, (Rune)driver.Contents [r, c, 0]);
}
}

// Draw the lower Effect3D
for (int r = frame.Bottom;
r > 0 && r < Math.Min (frame.Bottom + effect3DOffset.Y, driver.Rows); r++) {
r < Math.Min (frame.Bottom + effect3DOffset.Y, driver.Rows); r++) {
for (int c = Math.Max (frame.X + effect3DOffset.X, 0);
c > 0 && c < Math.Min (frame.Right + effect3DOffset.X, driver.Cols); c++) {
c < Math.Min (frame.Right + effect3DOffset.X, driver.Cols); c++) {

AddRuneAt (driver, c, r, (Rune)driver.Contents [r, c, 0]);
}
Expand Down Expand Up @@ -1036,4 +1075,4 @@ public virtual void OnBorderChanged ()
BorderChanged?.Invoke (this);
}
}
}
}
20 changes: 10 additions & 10 deletions Terminal.Gui/Core/PosDim.cs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ internal override int Anchor (int width)

public override string ToString ()
{
return $"Factor({factor})";
return $"PosFactor({factor})";
}

public override int GetHashCode () => factor.GetHashCode ();
Expand Down Expand Up @@ -135,7 +135,7 @@ internal override int Anchor (int width)

public override string ToString ()
{
return $"AnchorEnd({n})";
return $"PosAnchorEnd({n})";
}
}

Expand Down Expand Up @@ -174,7 +174,7 @@ internal override int Anchor (int width)

public override string ToString ()
{
return "Center";
return "PosCenter";
}
}

Expand Down Expand Up @@ -209,7 +209,7 @@ internal class PosAbsolute : Pos {

public override string ToString ()
{
return $"Absolute({n})";
return $"PosAbsolute({n})";
}

internal override int Anchor (int width)
Expand Down Expand Up @@ -264,7 +264,7 @@ internal override int Anchor (int width)

public override string ToString ()
{
return $"Combine({left}{(add ? '+' : '-')}{right})";
return $"PosCombine({left}{(add ? '+' : '-')}{right})";
}

}
Expand Down Expand Up @@ -345,7 +345,7 @@ public override string ToString ()
case 3: tside = "bottom"; break;
default: tside = "unknown"; break;
}
return $"View({tside},{Target.ToString()})";
return $"PosView({tside},{Target.ToString ()})";
}

public override int GetHashCode () => Target.GetHashCode ();
Expand Down Expand Up @@ -482,7 +482,7 @@ public bool IsFromRemaining ()

public override string ToString ()
{
return $"Factor({factor},{remaining})";
return $"DimFactor({factor},{remaining})";
}

public override int GetHashCode () => factor.GetHashCode ();
Expand Down Expand Up @@ -522,7 +522,7 @@ internal class DimAbsolute : Dim {

public override string ToString ()
{
return $"Absolute({n})";
return $"DimAbsolute({n})";
}

internal override int Anchor (int width)
Expand All @@ -541,7 +541,7 @@ internal class DimFill : Dim {

public override string ToString ()
{
return $"Fill({margin})";
return $"DimFill({margin})";
}

internal override int Anchor (int width)
Expand Down Expand Up @@ -613,7 +613,7 @@ internal override int Anchor (int width)

public override string ToString ()
{
return $"Combine({left}{(add ? '+' : '-')}{right})";
return $"DimCombine({left}{(add ? '+' : '-')}{right})";
}

}
Expand Down
Loading