> This PR changes how the BorderLayout positions components when they don't fit 
> inside a container.
> 
> This should have no effect on BorderLayouts that match or exceed their 
> preferred size.
> 
> (The name of this PR/ticket is a little misleading: this in no way relates to 
> `component.getMinimumSize()`.)
> 
> Here is part of a comment in that ticket that sums up what this PR is trying 
> to fix:
>> Instead of the South Component being placed partially offscreen as Windows 
>> does, it is often placed on top of the North Component. Indeed, 
>> BorderLayout.layoutContainer() always places the South Component flush with 
>> the bottom of the Container and does not check if the Container is smaller 
>> than the minimum size, or if the North and South Components overlap.
> 
> Previously child components could:
> A. be assigned negative (x,y) coordinates
> B. be assigned negative widths or heights
> C. overlap other child components
> D. be assigned dimensions that don't fit inside the target container
> 
> This PR will instead constrain certain values. Now child components may be 
> given a width/height of zero pixels, but they should never show the 4 
> behaviors stated above.
> 
> We encountered this basic problem last week at work (we could end up with a 
> component with a negative height). Our work-around was more complex than this 
> PR: we wrote a modified BorderLayout that would switch to using 
> `component.getMinimumSize()` when the preferred size wouldn't fit. IMO that 
> is a better option all-around, but it is dangerously invasive for an OpenJDK 
> proposal. I'm happy to discuss that idea further, though, if anyone here 
> disagrees.

Jeremy Wood has updated the pull request incrementally with six additional 
commits since the last revision:

 - Update 
test/jdk/java/awt/BorderLayout/ConstrainedBorderLayoutChildrenTest.java
   
   Co-authored-by: Andrey Turbanov <turban...@gmail.com>
 - Update 
test/jdk/java/awt/BorderLayout/ConstrainedBorderLayoutChildrenTest.java
   
   Co-authored-by: Andrey Turbanov <turban...@gmail.com>
 - Update 
test/jdk/java/awt/BorderLayout/ConstrainedBorderLayoutChildrenTest.java
   
   Co-authored-by: Andrey Turbanov <turban...@gmail.com>
 - Update 
test/jdk/java/awt/BorderLayout/ConstrainedBorderLayoutChildrenTest.java
   
   Co-authored-by: Andrey Turbanov <turban...@gmail.com>
 - Update 
test/jdk/java/awt/BorderLayout/ConstrainedBorderLayoutChildrenTest.java
   
   Co-authored-by: Andrey Turbanov <turban...@gmail.com>
 - Update 
test/jdk/java/awt/BorderLayout/ConstrainedBorderLayoutChildrenTest.java
   
   Co-authored-by: Andrey Turbanov <turban...@gmail.com>

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/24772/files
  - new: https://git.openjdk.org/jdk/pull/24772/files/c30f1803..87e90797

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=24772&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=24772&range=00-01

  Stats: 6 lines in 1 file changed: 0 ins; 0 del; 6 mod
  Patch: https://git.openjdk.org/jdk/pull/24772.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24772/head:pull/24772

PR: https://git.openjdk.org/jdk/pull/24772

Reply via email to