mirror of
				https://github.com/nsnail/spectre.console.git
				synced 2025-11-01 01:25:27 +08:00 
			
		
		
		
	Fix maxWidth bug in Panel
Panel could pass a maxWidth to the child Render function that was greater than the maxWidth that was passed to the Panel render function. I noticed this when trying to nest a table in a panel and the word wrapping was being disabled. N.B It might be that Table.Measure ought to not return a measurment larger than maxWidth, but this Panel change seems defensivly sensible regardless.
This commit is contained in:
		 Fraser Waters
					Fraser Waters
				
			
				
					committed by
					
						 Patrik Svensson
						Patrik Svensson
					
				
			
			
				
	
			
			
			 Patrik Svensson
						Patrik Svensson
					
				
			
						parent
						
							79af013bf2
						
					
				
				
					commit
					91f910326c
				
			| @@ -0,0 +1,16 @@ | |||||||
|  | ╔════════════════════════════╗ | ||||||
|  | ║ ┌────────┬───────┬───────┐ ║ | ||||||
|  | ║ │ Foo    │ Bar   │ Baz   │ ║ | ||||||
|  | ║ ├────────┼───────┼───────┤ ║ | ||||||
|  | ║ │ Qux    │ Corgi │ Waldo │ ║ | ||||||
|  | ║ │ With A │       │       │ ║ | ||||||
|  | ║ │ Long   │       │       │ ║ | ||||||
|  | ║ │ Descri │       │       │ ║ | ||||||
|  | ║ │ ption  │       │       │ ║ | ||||||
|  | ║ │ Grault │ Garpl │ Fred  │ ║ | ||||||
|  | ║ │        │ y     │ On A  │ ║ | ||||||
|  | ║ │        │       │ Long  │ ║ | ||||||
|  | ║ │        │       │ Long  │ ║ | ||||||
|  | ║ │        │       │ Walk  │ ║ | ||||||
|  | ║ └────────┴───────┴───────┘ ║ | ||||||
|  | ╚════════════════════════════╝ | ||||||
| @@ -476,5 +476,26 @@ namespace Spectre.Console.Tests.Unit | |||||||
|             // Then |             // Then | ||||||
|             return Verifier.Verify(console.Output); |             return Verifier.Verify(console.Output); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         [Fact] | ||||||
|  |         [Expectation("Render_Fold")] | ||||||
|  |         public Task Should_Render_With_Folded_Text_Table_Correctly() | ||||||
|  |         { | ||||||
|  |             // Given | ||||||
|  |             var console = new TestConsole().Width(30); | ||||||
|  |             var table = new Table(); | ||||||
|  |             table.AddColumns("Foo", "Bar", "Baz"); | ||||||
|  |             table.AddRow("Qux With A Long Description", "Corgi", "Waldo"); | ||||||
|  |             table.AddRow("Grault", "Garply", "Fred On A Long Long Walk"); | ||||||
|  |  | ||||||
|  |             var panel = new Panel(table); | ||||||
|  |             panel.Border = BoxBorder.Double; | ||||||
|  |  | ||||||
|  |             // When | ||||||
|  |             console.Write(panel); | ||||||
|  |  | ||||||
|  |             // Then | ||||||
|  |             return Verifier.Verify(console.Output); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -99,6 +99,7 @@ namespace Spectre.Console | |||||||
|  |  | ||||||
|             var panelWidth = childWidth + edgeWidth; |             var panelWidth = childWidth + edgeWidth; | ||||||
|             panelWidth = Math.Min(panelWidth, maxWidth); |             panelWidth = Math.Min(panelWidth, maxWidth); | ||||||
|  |             childWidth = panelWidth - edgeWidth; | ||||||
|  |  | ||||||
|             var result = new List<Segment>(); |             var result = new List<Segment>(); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user