<AWT Dev> Review request for 8151385: [hidpi] JOptionPane-Icons only partially visible when using Windows 10 L&F

Alexandr Scherbatiy alexandr.scherbatiy at oracle.com
Tue Mar 22 16:27:49 UTC 2016


On 3/22/2016 8:36 AM, Hendrik Schreiber wrote:
>
>
>> On Mar 21, 2016, at 22:07, Alexandr Scherbatiy 
>> <alexandr.scherbatiy at oracle.com 
>> <mailto:alexandr.scherbatiy at oracle.com>> wrote:
>>
>> On 3/18/2016 6:09 AM, Hendrik Schreiber wrote:
>>> On Mar 16, 2016, at 06:25, Alexandr Scherbatiy 
>>> <alexandr.scherbatiy at oracle.com> wrote:
>>>>
>>>>
>>>>   The JDK fixes should be pushed to the JDK 9 first and then be 
>>>> back-ported to JDK 8.
>>>>
>>>>   Could you prepare the fix for JDK 9?
>>>
>>> Hi Alexandr,
>>>
>>> I've created a patch for JDK9. You can find it at 
>>> http://cr.openjdk.java.net/~hschreiber/8151385/webrev.00/ (I hope, I 
>>> created the webrev the right way). It contains a suitable test.
>>>
>>> This patch also contains the changes I suggested in 
>>> https://bugs.openjdk.java.net/browse/JDK-8149453 (because the fixes 
>>> overlap to a degree). I made sure they compile, but didn’t do any 
>>> further testing (lack of time). Perhaps, since you are already 
>>> working on this, you can try it out and, if you deem it appropriate, 
>>> add a test for the upFolder/newFolder etc. buttons.
>>    For some reasons the native getIconBits() method returns size 16 
>> for both small and large icons which leads to the AOBE in the 
>> BufferedImage.setRGB() methods.
>>    I will try to investigate it deeper.
>
I got the IOBE running the simple JFileChooser (new 
JFileChooser().showOpenDialog(null));

I created an application in Visual Studio and try to check the returned 
icon size.
It returns the same size 16 for both IDB_VIEW_SMALL_COLOR and 
IDB_VIEW_LARGE_COLOR.

Here is the code which I used (without any error handling):
----------------
     WPARAM size = (WPARAM)IDB_VIEW_LARGE_COLOR;

     int iconIndex = VIEW_NEWFOLDER;
     HWND hWndToolbar = ::CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
         0, 0, 0, 0, 0,
         NULL, NULL, NULL, NULL);
     SendMessage(hWndToolbar, TB_LOADIMAGES, size, (LPARAM)HINST_COMMCTRL);
     HIMAGELIST hImageList = (HIMAGELIST)SendMessage(hWndToolbar, 
TB_GETIMAGELIST, 0, 0);

     HICON hIcon = ImageList_GetIcon(hImageList, iconIndex, 
ILD_TRANSPARENT);

     BITMAP bmp;
     memset(&bmp, 0, sizeof(BITMAP));

     ICONINFO iconInfo;
     GetIconInfo((HICON)hIcon, &iconInfo);
     HDC dc = GetDC(NULL);
     GetObject(iconInfo.hbmColor, sizeof(bmp), &bmp);

     TCHAR     str[MAX_LOADSTRING];
     wsprintf(str, L"Icon size: [%d, %d]", bmp.bmWidth, bmp.bmHeight);
     MessageBox(NULL, str, L"TEST", MB_OK);
----------------

  The other thing that I noticed that icons on JOptionPane have twice 
bigger size than expected.

Thanks,
Alexandr.
> Thanks.
>
> -hendrik

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20160322/0a82ccdb/attachment-0001.html>


More information about the awt-dev mailing list