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 <krishna.addepa...@oracle.com>; Sergey Bylokhov 
<sergey.bylok...@oracle.com>; swing-dev@openjdk.java.net
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 <semyon.sadet...@oracle.com>; Krishna Addepalli
<krishna.addepa...@oracle.com>; swing-dev@openjdk.java.net
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 <sergey.bylok...@oracle.com>;
swing-dev@openjdk.java.net
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 <krishna.addepa...@oracle.com>;
swing-dev@openjdk.java.net
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 <sergey.bylok...@oracle.com>;
swing-dev@openjdk.java.net
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 <sergey.bylok...@oracle.com>;
swing-dev@openjdk.java.net
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 <krishna.addepa...@oracle.com>;
swing-dev@openjdk.java.net
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 <krishna.addepa...@oracle.com>;
swing-dev@openjdk.java.net
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