<Swing Dev> [10][JDK-8178430] JMenu in GridBagLayout flickets when label text shows "..." and is updated

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

<Swing Dev> [10][JDK-8178430] JMenu in GridBagLayout flickets when label text shows "..." and is updated

Krishna Addepalli

Hi All,

 

Please review the fix for bug:


Bug: JDK-8178430: https://bugs.openjdk.java.net/browse/JDK-8178430

 

Webrev: http://cr.openjdk.java.net/~kaddepalli/8178430/webrev00/

 

Summary:

The issue is when the label text width is more than the container(JPanel) width, the container tries to render with minimum width for all the components. In such case, the JMenuItem, which is added to the JMenuBar also returns its height dimension as 1 (the default minimum). The test case alternates between the short text and long text on the label, and it gives a flickering effect of the Menu. The fix is to return preferred size from JMenuItem, if its parent is a JMenuBar, since JMenuBar is added to the top level window.

 

Thanks,

Krishna

Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> [10][JDK-8178430] JMenu in GridBagLayout flickets when label text shows "..." and is updated

Sergey Bylokhov
Hi, Krishna.
Can you please clarify in what situation the test will stop working(it
does not have any assertions)?

On 27/10/2017 02:45, Krishna Addepalli wrote:

> Hi All,
>
> Please review the fix for bug:
>
>
> Bug: JDK-8178430: https://bugs.openjdk.java.net/browse/JDK-8178430
>
> Webrev: http://cr.openjdk.java.net/~kaddepalli/8178430/webrev00/
>
> Summary:
>
> The issue is when the label text width is more than the
> container(JPanel) width, the container tries to render with minimum
> width for all the components. In such case, the JMenuItem, which is
> added to the JMenuBar also returns its height dimension as 1 (the
> default minimum). The test case alternates between the short text and
> long text on the label, and it gives a flickering effect of the Menu.
> The fix is to return preferred size from JMenuItem, if its parent is a
> JMenuBar, since JMenuBar is added to the top level window.
>
> Thanks,
>
> Krishna
>


--
Best regards, Sergey.
Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> [10][JDK-8178430] JMenu in GridBagLayout flickets when label text shows "..." and is updated

Krishna Addepalli
Hi Sergey,

Thanks for pointing that out. Fixed the test case and created a new webrev here: http://cr.openjdk.java.net/~kaddepalli/8178430/webrev01/

Now, the testcase throws an exception and also after a few trials, closes on its own.

Thanks,
Krishna

-----Original Message-----
From: Sergey Bylokhov
Sent: Tuesday, October 31, 2017 1:13 AM
To: Krishna Addepalli <[hidden email]>; [hidden email]
Subject: Re: <Swing Dev> [10][JDK-8178430] JMenu in GridBagLayout flickets when label text shows "..." and is updated

Hi, Krishna.
Can you please clarify in what situation the test will stop working(it does not have any assertions)?

On 27/10/2017 02:45, Krishna Addepalli wrote:

> Hi All,
>
> Please review the fix for bug:
>
>
> Bug: JDK-8178430: https://bugs.openjdk.java.net/browse/JDK-8178430
>
> Webrev: http://cr.openjdk.java.net/~kaddepalli/8178430/webrev00/
>
> Summary:
>
> The issue is when the label text width is more than the
> container(JPanel) width, the container tries to render with minimum
> width for all the components. In such case, the JMenuItem, which is
> added to the JMenuBar also returns its height dimension as 1 (the
> default minimum). The test case alternates between the short text and
> long text on the label, and it gives a flickering effect of the Menu.
> The fix is to return preferred size from JMenuItem, if its parent is a
> JMenuBar, since JMenuBar is added to the top level window.
>
> Thanks,
>
> Krishna
>


--
Best regards, Sergey.
Reply | Threaded
Open this post in threaded view
|

Re: <Swing Dev> [10][JDK-8178430] JMenu in GridBagLayout flickets when label text shows "..." and is updated

Sergey Bylokhov
Hi, Krishna.
A few notes:
  - Looks like the bug can be reproduced in JMenu only? Then it will be
good to fix it in BasicMenuUI, moreover it is already implemented a
getMaximumSize() in a similar way as in your fix.
  - In the test some of the Swing components are accessed on non-EDT
thread. Also note that when you start the Thread you will exit
invokeAndWait() and it is possible that the test will end before the
Thread complete(jtreg will kill the test when the main thread is completed)

On 31/10/2017 05:00, Krishna Addepalli wrote:

> Hi Sergey,
>
> Thanks for pointing that out. Fixed the test case and created a new webrev here: http://cr.openjdk.java.net/~kaddepalli/8178430/webrev01/
>
> Now, the testcase throws an exception and also after a few trials, closes on its own.
>
> Thanks,
> Krishna
>
> -----Original Message-----
> From: Sergey Bylokhov
> Sent: Tuesday, October 31, 2017 1:13 AM
> To: Krishna Addepalli <[hidden email]>; [hidden email]
> Subject: Re: <Swing Dev> [10][JDK-8178430] JMenu in GridBagLayout flickets when label text shows "..." and is updated
>
> Hi, Krishna.
> Can you please clarify in what situation the test will stop working(it does not have any assertions)?
>
> On 27/10/2017 02:45, Krishna Addepalli wrote:
>> Hi All,
>>
>> Please review the fix for bug:
>>
>>
>> Bug: JDK-8178430: https://bugs.openjdk.java.net/browse/JDK-8178430
>>
>> Webrev: http://cr.openjdk.java.net/~kaddepalli/8178430/webrev00/
>>
>> Summary:
>>
>> The issue is when the label text width is more than the
>> container(JPanel) width, the container tries to render with minimum
>> width for all the components. In such case, the JMenuItem, which is
>> added to the JMenuBar also returns its height dimension as 1 (the
>> default minimum). The test case alternates between the short text and
>> long text on the label, and it gives a flickering effect of the Menu.
>> The fix is to return preferred size from JMenuItem, if its parent is a
>> JMenuBar, since JMenuBar is added to the top level window.
>>
>> Thanks,
>>
>> Krishna
>>
>
>
> --
> Best regards, Sergey.
>


--
Best regards, Sergey.