Hi Semyon,
Created a bug : https://bugs.openjdk.java.net/browse/JDK-8191552

Please add any more information that you feel is necessary.

Thanks,
Krishna

-----Original Message-----
From: Semyon Sadetsky 
Sent: Friday, November 17, 2017 9:39 PM
To: Krishna Addepalli <[email protected]>; Sergey Bylokhov 
<[email protected]>; [email protected]
Subject: Re: <Swing Dev> [10][JDK-8178430] JMenu in GridBagLayout flickers when 
label text shows "..." and is updated

Can you create this bug send link to it to this thread?

--Semyon

On 11/17/17 1:45 AM, Krishna Addepalli wrote:
> Hi Semyon,
>
> Yes, you are right about all the components exhibiting the same behavior. 
> But, that would require more extensive analysis, and I feel should be 
> addressed in its own bug - which can be linked to this.
>
> Thanks,
> Krishna
>
> -----Original Message-----
> From: Semyon Sadetsky
> Sent: Thursday, November 16, 2017 10:42 PM
> To: Krishna Addepalli <[email protected]>; Sergey Bylokhov 
> <[email protected]>; [email protected]
> Subject: Re: <Swing Dev> [10][JDK-8178430] JMenu in GridBagLayout 
> flickers when label text shows "..." and is updated
>
> Hi Krishna,
>
> On 11/16/2017 03:38 AM, Krishna Addepalli wrote:
>> Hi Semyon,
>>
>> 1. I have tried in my Ubuntu 17.04 VM and was able to see the test case fail 
>> before fix, and passing after the fix.
>> 2. Regarding the minimum size, it is not related to any layout - the test 
>> fails across any Layout - I have verified this in debugging process. The 
>> only point is, whenever the label text / any other component rendering width 
>> is larger the window size, it requests all the components to report the 
>> minimum size. In the case of JMenu (which is a top level menu), it is better 
>> to return a preferred size rather than minimum size (which by the way is 
>> 1x1), so that the item is rendered correctly. Returning null from the fixed 
>> function will cause the layout class to return the default minimum value as 
>> per the layout class used. So, I didn’t see any reason to come up with 
>> arbitrary minimum values.
> I don't see this bug as a Menu issue because any other component that has 
> minimumSize != prefferredSize placed instead of the menu causes the same 
> unexpected layout behavior.
> The heights of all components should be preserved with the layout width 
> change but the the upper component jumps to its minimum size after the width 
> of the window reaches some value.
>
> --Semyon
>> Thanks,
>> Krishna
>>
>> -----Original Message-----
>> From: Sergey Bylokhov
>> Sent: Thursday, November 16, 2017 6:51 AM
>> To: Semyon Sadetsky <[email protected]>; Krishna Addepalli 
>> <[email protected]>; [email protected]
>> Subject: Re: <Swing Dev> [10][JDK-8178430] JMenu in GridBagLayout 
>> flickers when label text shows "..." and is updated
>>
>> On 15/11/2017 10:53, Semyon Sadetsky wrote:
>>>> There are no such restrictions that getMinimumSize() must return 
>>>> exact value of getPrefferredSize(). It should return some 
>>>> reasonable value instead of null, which can be considered as 1x1 by 
>>>> some layout managers. In most cases the PrefferredSize is used for this 
>>>> purpose.
>>> This doesn't correspond to what I see if add
>>>
>>> menu.setMinimumSize(new Dimension(2,2));
>>>
>>> After that the problem described in the bug comes back.
>> This will not be a bug, if the application thinks that 2x2 or 200x200 are 
>> reasonable values for maximum/minimum/preferred sizes and will set it, then 
>> these values will be used.
>>
>>>>> --Semyon
>>>>>
>>>>>
>>>>> On 11/15/2017 08:24 AM, Sergey Bylokhov wrote:
>>>>>> Looks fine.
>>>>>>
>>>>>> On 15/11/2017 07:26, Krishna Addepalli wrote:
>>>>>>> Hi Sergey,
>>>>>>>
>>>>>>> Per our conversation, I have added the volatile keyword to the 
>>>>>>> Boolean flag. Here is the updated webrev:
>>>>>>> http://cr.openjdk.java.net/~kaddepalli/8178430/webrev04/
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Krishna
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Krishna Addepalli
>>>>>>> Sent: Wednesday, November 15, 2017 6:07 PM
>>>>>>> To: Sergey Bylokhov <[email protected]>; 
>>>>>>> [email protected]
>>>>>>> Subject: RE: <Swing Dev> [10][JDK-8178430] JMenu in 
>>>>>>> GridBagLayout flickers when label text shows "..." and is 
>>>>>>> updated
>>>>>>>
>>>>>>> Hi Sergey,
>>>>>>>
>>>>>>> I have modified the code as per your requests, and here is the 
>>>>>>> updated webrev:
>>>>>>> http://cr.openjdk.java.net/~kaddepalli/8178430/webrev03/
>>>>>>>
>>>>>>> However, I have a couple questions regarding the fix:
>>>>>>> 1. Why was it considered good to fix it in BasicMenuUI rather 
>>>>>>> than in BasicMenuUIItem?
>>>>>>> 2. While using Robot.waitForIdle(), I came across the function 
>>>>>>> "Suntoolkit.flushPendingEvents" function. But this is a private 
>>>>>>> function and applications cannot use this. Is it expected that 
>>>>>>> the applications should import the robot module to flush the 
>>>>>>> events, considering that mostly it is used for testing purposes?
>>>>>>> If this is the case, then "Suntoolkit.flushPendingEvents" 
>>>>>>> becomes a valuable tool, given that Swing rendering happens in 
>>>>>>> an EDT that is separate from MainThread.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Krishna
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Sergey Bylokhov
>>>>>>> Sent: Wednesday, November 15, 2017 2:23 AM
>>>>>>> To: Krishna Addepalli <[email protected]>; 
>>>>>>> [email protected]
>>>>>>> Subject: Re: <Swing Dev> [10][JDK-8178430] JMenu in 
>>>>>>> GridBagLayout flickers when label text shows "..." and is 
>>>>>>> updated
>>>>>>>
>>>>>>> Hi, Krishna.
>>>>>>> Small comments: I think that this code
>>>>>>> "(JMenu)menuItem).isTopLevelMenu() == true"
>>>>>>> can be simplified to
>>>>>>> (JMenu)menuItem).isTopLevelMenu().
>>>>>>>
>>>>>>> In the test you create and dispose JFrame and other components 
>>>>>>> outside of EDT thread. I suggest to use invokeAndWait() which 
>>>>>>> will work synchronously. Instead of sleep() you van use 
>>>>>>> Robot.waitForIdle();
>>>>>>>
>>>>>>>
>>>>>>> On 12/11/2017 22:45, Krishna Addepalli wrote:
>>>>>>>> Hi Sergey,
>>>>>>>>
>>>>>>>> Gentle reminder! Could you review the fix?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Krishna
>>>>>>>>
>>>>>>>> -----Original Message-----
>>>>>>>> From: Krishna Addepalli
>>>>>>>> Sent: Wednesday, November 8, 2017 8:22 PM
>>>>>>>> To: Sergey Bylokhov <[email protected]>; 
>>>>>>>> [email protected]
>>>>>>>> Subject: RE: <Swing Dev> [10][JDK-8178430] JMenu in 
>>>>>>>> GridBagLayout flickers when label text shows "..." and is 
>>>>>>>> updated
>>>>>>>>
>>>>>>>> Hi Sergey,
>>>>>>>>
>>>>>>>> Are the changes fine now?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Krishna
>>>>>>>>
>>>>>>>> -----Original Message-----
>>>>>>>> From: Krishna Addepalli
>>>>>>>> Sent: Monday, November 6, 2017 9:02 PM
>>>>>>>> To: Sergey Bylokhov <[email protected]>; 
>>>>>>>> [email protected]
>>>>>>>> Subject: RE: <Swing Dev> [10][JDK-8178430] JMenu in 
>>>>>>>> GridBagLayout flickers when label text shows "..." and is 
>>>>>>>> updated
>>>>>>>>
>>>>>>>> Hi Sergey,
>>>>>>>>
>>>>>>>> As per your recommendation I have done the following changes:
>>>>>>>> 1. Moved the fix to BasicMenuUI.
>>>>>>>> 2. Corrected the test to:
>>>>>>>>       a. Access the UI elements only in the EDT.
>>>>>>>>       b. Made sure that the main thread doesn't exit till the 
>>>>>>>> test is complete.
>>>>>>>>
>>>>>>>> Here is the updated webrev:
>>>>>>>> http://cr.openjdk.java.net/~kaddepalli/8178430/webrev02/
>>>>>>>>
>>>>>>>> However, I was wondering, why it is good to fix in BasicMenuUI?
>>>>>>>> Also, while writing the testcase, I couldnot find any 
>>>>>>>> functionality like "flush" on the event queue, which will 
>>>>>>>> execute all the pending events. Is it by design?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Krishna
>>>>>>>>
>>>>>>>> -----Original Message-----
>>>>>>>> From: Sergey Bylokhov
>>>>>>>> Sent: Friday, November 3, 2017 11:24 PM
>>>>>>>> To: Krishna Addepalli <[email protected]>; 
>>>>>>>> [email protected]
>>>>>>>> Subject: Re: <Swing Dev> [10][JDK-8178430] JMenu in 
>>>>>>>> GridBagLayout flickets when label text shows "..." and is 
>>>>>>>> updated
>>>>>>>>
>>>>>>>> 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 <[email protected]>; 
>>>>>>>>> [email protected]
>>>>>>>>> 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.
>>>>>>>>
>>>>>>> --
>>>>>>> Best regards, Sergey.
>>>>>>>
>> --
>> Best regards, Sergey.

Reply via email to