On Fri, 10 Jun 2022 05:55:35 GMT, Harshitha Onkar <hon...@openjdk.org> wrote:
> Due to incorrect AWT Frame inset values being returned from native code, few > of the components in the frame were not being shown completely on Windows. > With the proposed fix, correct insets are obtained which in turn sizes and > displays the frame correctly. > > The default insets obtained from the Win system was adding only > `::GetSystemMetrics(SM_CXSIZEFRAME)` for **WS_THICKFRAME** and the insets > were off by 6px from the expected value. > `::GetSystemMetrics(SM_CXPADDEDBORDER)` is additionally added to top, bottom, > left and right insets to account for the 6px. [GetSystemMetric() > Document](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetrics) > > A test case is added which checks if the actual frame size is equal to the > expected frame size (frame.getSize() == frame.getPreferredSize()), thus > checking if frame.pack() works as expected. > > Following are before and after screenshots - >  src/java.desktop/windows/native/libawt/windows/awt_Window.cpp line 1407: > 1405: int extraPaddedBorderInsets = info.dwMajorVersion >= 6 ? > 1406: ::GetSystemMetrics(SM_CXPADDEDBORDER) : 0; > 1407: The OS version check is added since **SM_CXPADDEDBORDER** metric is not supported on Win XP & 2000. If the current JDK Window target OS version is set to Windows Vista, probably this check is not required or redundant. Suggestions would be helpful as to whether to retain this check or not  Screenshot source: [GetSystemMetrics Doc](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetrics) ------------- PR: https://git.openjdk.org/jdk/pull/9118