<Swing Dev> [9] Review Request for 8130892: Test javax/swing/plaf/basic/BasicTextUI/8001470/bug8001470.java fails in Solaris Sparcv9

Semyon Sadetsky semyon.sadetsky at oracle.com
Mon Jul 27 13:32:50 UTC 2015


Alexander,
you can run the next test on Windows which sets the right frame size and 
see that it fails because of the negative size.

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;

public class bug8001470 {

     private static JFrame frame;
     private static JTextField textField1;
     private static JTextField textField2;

     public static void main(String[] args) throws Exception {
         SwingUtilities.invokeAndWait(new Runnable() {
             @Override
             public void run() {
                 frame = new JFrame("JTextField Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                 JPanel container = (JPanel) frame.getContentPane();
                 container.setLayout(new GridLayout(2,1));

                 textField1 = new JTextField("\u0e01");
                 textField2 = new JTextField("\u0c01");
                 JPanel panel = new JPanel();
                 BorderLayout mgr = new BorderLayout();
                 panel.setLayout(mgr);
                 container.add(panel);
                 panel.setBorder(new EmptyBorder(100, 100, 100, 100));
                 panel.add(textField1);
                 panel.add(textField2);
                 frame.setVisible(true);
                 frame.pack();
             }
         });
         if( textField1.getHeight() < 10 || textField2.getHeight() < 10 )
             throw new Exception("Wrong field height");
         System.out.println("ok");
         SwingUtilities.invokeLater(new Runnable() {
             @Override
             public void run() {
                 frame.dispose();
             }
         });
     }
}

--Semyon


On 7/27/2015 2:52 PM, Semyon Sadetsky wrote:
> -Alexander Yarmoliskiy
> +Alexander Zvegintsev
>
> On 7/27/2015 2:36 PM, Semyon Sadetsky wrote:
>> It is probably an issue, but even if fix it we cannot guarantee that 
>> insets will be always less then the resulting frame size. Method 
>> guessInsets() which obtains insets in frame's peer is hinting.
>> And again layout manager is able to apply negative size to container 
>> regardless the frame size.
>>
>> --Semyon
>>
>> On 7/27/2015 1:38 PM, Alexander Scherbatiy wrote:
>>>
>>>   I see that  sun.awt.X11.WindowDimensions class takes insets into 
>>> account and sets window size bigger than insets size. It looks like 
>>> difference between windows size and insets should be positive in 
>>> this case.
>>>
>>>  Thanks,
>>>  Alexandr.
>>>
>>> On 7/27/2015 9:56 AM, Semyon Sadetsky wrote:
>>>> Your expectation is not correct because if insets are set for a 
>>>> container then its child components can receive negative size even 
>>>> if the parent size is positive.
>>>>
>>>> --Semyon
>>>>
>>>> On 7/24/2015 7:09 PM, Sergey Bylokhov wrote:
>>>>> On 23.07.15 16:06, Semyon Sadetsky wrote:
>>>>>> Peer validation doesn't make any sense until layout manager may 
>>>>>> easily set negative size for any component using 
>>>>>> Component.setBounds(). That happens this issue particularly.
>>>>> In your first request you mention that the problem occurs when "On 
>>>>> Linux and Solaris platforms the initial frame window width and 
>>>>> height can be negative".
>>>>> My expectation is that: if the window size if >=0 then none of the 
>>>>> layout managers should set negative value for width/height, no?
>>>>>
>>>>>> So we need either to introduce the size constraint and fix the 
>>>>>> general issue either make UI to be prepared to get negative size 
>>>>>> occasionally i.e. fix the particular case (what is done in the 
>>>>>> solution).
>>>>>> Which option are you suggesting?
>>>>>>
>>>>>> --Semyon
>>>>>>
>>>>>> On 7/23/2015 2:06 PM, Sergey Bylokhov wrote:
>>>>>>> On 23.07.15 9:22, Semyon Sadetsky wrote:
>>>>>>>> O.K. It sounds like a generic rule. Can I add this constant to 
>>>>>>>> the Component.reshape()?
>>>>>>> Historically our components have a lack of any data validation 
>>>>>>> because the user was able to call peers methods directly. I 
>>>>>>> assume that such validation should exists already in the peers 
>>>>>>> classes(like XBaseWindow.xSetBounds()).
>>>>>>>
>>>>>>>> --Semyon
>>>>>>>>
>>>>>>>> On 7/22/2015 3:40 PM, Sergey Bylokhov wrote:
>>>>>>>>> It seems that the bug is in fact that the size of the window 
>>>>>>>>> is negative. In a lot of place we assume that it should be >=0.
>>>>>>>>>
>>>>>>>>> On 22.07.15 14:28, Semyon Sadetsky wrote:
>>>>>>>>>> In setVisible(true) if size is not specified and pack has not 
>>>>>>>>>> been called yet frame get some initial size depending on the 
>>>>>>>>>> platform.
>>>>>>>>>> That is the purpose of the test : to call pack() after 
>>>>>>>>>> setVisible().
>>>>>>>>>>
>>>>>>>>>> --Semyon
>>>>>>>>>>
>>>>>>>>>> On 7/22/2015 2:03 PM, Alexander Scherbatiy wrote:
>>>>>>>>>>> On 7/17/2015 5:32 PM, Semyon Sadetsky wrote:
>>>>>>>>>>>> Hello,
>>>>>>>>>>>>
>>>>>>>>>>>> Please review fix for JDK9:
>>>>>>>>>>>>
>>>>>>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8130892
>>>>>>>>>>>> webrev: 
>>>>>>>>>>>> http://cr.openjdk.java.net/~ssadetsky/8130892/webrev.00/
>>>>>>>>>>>>
>>>>>>>>>>>> On Linux and Solaris platforms the initial frame window 
>>>>>>>>>>>> width and height can be negative. So the root view is 
>>>>>>>>>>>> initialization trigger was updated to take negative values 
>>>>>>>>>>>> into account. The fix was tested on Ubuntu 12, OEL7 and 
>>>>>>>>>>>> Solaris 11.
>>>>>>>>>>>    It looks strange that the test which does not set 
>>>>>>>>>>> explicit bounds and calls frame.pack() encounters into 
>>>>>>>>>>> negative sizes.
>>>>>>>>>>>    In which place does the frame window obtain negative 
>>>>>>>>>>> width and height?
>>>>>>>>>>>
>>>>>>>>>>>    Thanks,
>>>>>>>>>>>    Alexandr.
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --Semyon
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20150727/baf45b2c/attachment.html>


More information about the swing-dev mailing list