<Swing Dev> [9] Review Request for 6866751: J2SE_Swing_Reg: the caret disappears when moving to the end of the line.
Alexander Scherbatiy
alexandr.scherbatiy at oracle.com
Thu Apr 9 09:40:39 UTC 2015
The fix looks good to me.
Thanks,
Alexandr.
On 4/9/2015 11:58 AM, Semyon Sadetsky wrote:
> Hi Alexander,
>
> The case you've described means user overrides the default behavior
> but sets an incorrect value. In my opinion it is ok if the value
> fallbacks to the default in this scenario.
> Imagine the situation when user wants to have the same default right
> margin in all platforms (currently caret.width is set only in Windows)
> he can achieve that by setting client property to negative value and
> then the internal default value will be used everywhere. Without that
> possibility he would need to set the specific value explicitly.
>
> --Semyon
>
> On 4/9/2015 11:44 AM, Alexander Scherbatiy wrote:
>> On 4/1/2015 5:45 PM, Semyon Sadetsky wrote:
>>> Hi Sergey,
>>>
>>> I have added reading of the client property. It will also allow user
>>> to adjust the right margin for caret. The test scenario is also
>>> extended.
>>>
>>> the updated webrev:
>>> http://cr.openjdk.java.net/~ssadetsky/6866751/webrev.01/
>>
>> If c.getClientProperty("caretWidth") is negative should
>> UIManager.get("Caret.width") or DEFAULT_CARET_MARGIN be used?
>>
>> Thanks,
>> Alexandr.
>>
>>>
>>> --Semyon
>>>
>>>
>>> On 3/24/2015 9:10 AM, Semyon Sadetsky wrote:
>>>> Hi Sergey,
>>>>
>>>> On 3/23/2015 5:41 PM, Sergey Bylokhov wrote:
>>>>> Hi, Semyon.
>>>>> It seems that "Caret.width" is platform specific property, right?
>>>>> (looks like it is initialized on windows only).
>>>> It can be set on any platform. If it is not set we take 1px which
>>>> is the default cursor width.
>>>>
>>>>> What happens if the user will set the size/aspect of the caret via
>>>>> "putClientProperty" after the fix?
>>>> It depends on specific Cursor implementation.
>>>>
>>>>> It seems that correct width of the caret can be obtained via
>>>>> DefaultCaret.getCaretWidth (It takes into account both properties:
>>>>> aspectRatio/caretWidth). Probably we can push implementation of
>>>>> this method to the Caret class itself(in jdk9) or at least share
>>>>> the code somehow? Note that we can initialize caretWidth for each
>>>>> L&F by default to 1(or to Caret.width) if this value is correct,
>>>>> so the user will be able take current value which is used by Swing.
>>>> DefaultCaret.getCaretWidth(height) has package visibility.
>>>> DefaultCaret implementation can be retired by API
>>>> JTextComponet.setCaret(Caret). So what you've proposed is not a
>>>> complete solution as well.
>>>> An introduction a new method in the Caret interface is too drastic
>>>> change. And I'm not sure that font height can be the only parameter
>>>> for all possible Caret implementations.
>>>>
>>>> 1px seems a good solution for the issue because caret width=1px in
>>>> 99.9% cases. Currently under the System LnF we don't see this 1px
>>>> caret at all on platforms. That solution will be a great improvment.
>>>>
>>>> For specific situations like custom caret aspect ratio and custom
>>>> caret shape I'm not sure. If we add the full right text padding for
>>>> such situations users who already use custom carets may not expect
>>>> such behavior. It can be too noticeable change when all text
>>>> components will receive large right padding.
>>>>
>>>> --Semyon
>>>>
>>>>>
>>>>> 23.03.15 14:57, Semyon Sadetsky wrote:
>>>>>> +description
>>>>>> Cursor size is added to any text control preferred width.
>>>>>>
>>>>>> On 3/23/2015 2:33 PM, Semyon Sadetsky wrote:
>>>>>>> Hello,
>>>>>>>
>>>>>>> Please review JDK9 fix.
>>>>>>>
>>>>>>> webrev:
>>>>>>> http://cr.openjdk.java.net/~alexsch/semyon-sadetsky/6866751/webrev.00/
>>>>>>>
>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-6866751
>>>>>>>
>>>>>>> Thanks!
>>>>>>> --Semyon
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
More information about the swing-dev
mailing list