<Swing Dev> [9] Review request for 8157065: There is no the focus border on the selected tab.

Semyon Sadetsky semyon.sadetsky at oracle.com
Tue Sep 13 17:34:54 UTC 2016



On 9/13/2016 8:25 PM, Alexandr Scherbatiy wrote:
> On 9/13/2016 7:38 PM, Semyon Sadetsky wrote:
>>
>>
>> On 9/13/2016 7:21 PM, Alexandr Scherbatiy wrote:
>>> On 9/12/2016 10:42 PM, Semyon Sadetsky wrote:
>>>>
>>>>
>>>> On 9/12/2016 9:48 PM, Alexandr Scherbatiy wrote:
>>>>> On 9/12/2016 7:52 PM, Semyon Sadetsky wrote:
>>>>>> On 9/12/2016 6:50 PM, Alexandr Scherbatiy wrote:
>>>>>>
>>>>>>> On 9/12/2016 6:42 PM, Semyon Sadetsky wrote:
>>>>>>>> GTKPainter does not implement a lot of methods which can be 
>>>>>>>> accessed by public API. Could you, please, explain, why this 
>>>>>>>> specific method is more important than, for example, 
>>>>>>>> paintToolBarContentBackground() or paintToggleButtonBorder(), 
>>>>>>>> or all other unimplemented?
>>>>>>>>
>>>>>>>> In general, how do you separate public API methods of the 
>>>>>>>> SynthPainter class into two sets: the first set that *should 
>>>>>>>> be* over-riden and the second set of methods that *should not 
>>>>>>>> be* overr-riden? Are there any systematic criterium for that 
>>>>>>>> differentiation?
>>>>>>>   All the same methods with different number of arguments which 
>>>>>>> do not fall to overridden implementation should be overridden to 
>>>>>>> provide proper implementation.
>>>>>> Where I can read about this rule for SynthPainter? And it 
>>>>>> obviously is not true.
>>>>>   This is a usual rule for public methods which can be used by an 
>>>>> external application.
>>>>>> There are a lot of methods that are not over-riden in GTKPainter. 
>>>>>> I even wrote an examples above.
>>>>>   The SynthPainter.paintToolBarContentBackground(..., orientation) 
>>>>> calls SynthPainter.paintToolBarContentBackground(...) without the 
>>>>> orientation and the GTKPainter .paintToolBarContentBackground 
>>>>> overrides the method without the orientation.  So calls to 
>>>>> gtkPainter.paintToolBarContentBackground(..., orientation) falls 
>>>>> down to the overriden method in GTKPainter.
>>>>>
>>>>>  The same is for SynthPainter.paintProgressBarBackground(..., 
>>>>> orientation) and paintScrollBarBackground(..., orientation) methods.
>>>>>
>>>>>  The SynthPainter has only one paintToggleButtonBorder() method.
>>>> Interesting rule... I thought that more specific method version may 
>>>> have different implementation.
>>>   It was done for historical reason. For example before the fix 
>>> JDK-5033822 "Synth ScrollBar paintTrack() dosn't support orientation"
>>>   there was only paintScrollBarBackground() method without the 
>>> orientation in the SynthPainter class.
>>>   After the fix the paintScrollBarBackground() method with the 
>>> orientation is added which default implementation just calls the 
>>> same method without the orientation because old user's subclasses 
>>> can override the method without the orientation an not be aware 
>>> about new method version.
>>>
>>>> What would you say about paintSeparatorBackground() ?
>>>> It's (..., orientation) version is over-ridden while the generic 
>>>> version is not over-ridden.
>>>    I guess that it is just a bug.
>> Not sure. GTKPainter has never been providing a systematic API from 
>> the beginning. It is not for an arbitrary external use, because the 
>> resulting painting will be unpredictable. I explained this in this 
>> thread many times. And even if I would like to provide this useless 
>> method implementation 
>   It is a part of the public SynthPainter API and can be called by an 
> external application.
I can be called without any predictable result.  This is the current 
state. It cannot be changed by the change you are proposing to add.
>> I were not able to do this because the orientation is a required 
>> parameter to paint the GTK tab border.
>   The overridden method without the orientation can just call the 
> overridden method with orientation passing a default orientation value.
And what the default value is? It is not defined.

--Semyon
>
>   Thanks,
>   Alexandr.
>>
>> --Semyon
>>>
>>>   Thanks,
>>>   Alexandr.
>>>>
>>>> --Semyon
>>>>>
>>>>>  Thanks,
>>>>>  Alexandr.
>>>>>
>>>>>
>>>>>>
>>>>>> --Semyon
>>>>>>>
>>>>>>>   Thanks,
>>>>>>>   Alexandr.
>>>>>>>>
>>>>>>>> --Semyon
>>>>>>>>
>>>>>>>> On 9/12/2016 6:20 PM, Alexandr Scherbatiy wrote:
>>>>>>>>> The paintTabbedPaneTabBorder() without orientation should be 
>>>>>>>>> implemented as well because it can be accessed by public API.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Alexandr.
>>>>>>>>>
>>>>>>>>> On 6/3/2016 10:54 PM, Semyon Sadetsky wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 6/3/2016 10:34 PM, Sergey Bylokhov wrote:
>>>>>>>>>>> On 03.06.16 22:21, Semyon Sadetsky wrote:
>>>>>>>>>>>>> What reason? Why it is not public? since I provided the 
>>>>>>>>>>>>> code example
>>>>>>>>>>>>> where these methods are accessed by the user?
>>>>>>>>>>>> GTK toollkit painting sequence is very different.
>>>>>>>>>>>
>>>>>>>>>>> What does it mean "different"? Even in this fix you 
>>>>>>>>>>> implement one of the method according to the spec and skip 
>>>>>>>>>>> the same method for some unknown reason.
>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> I still did not get why an overload method should have 
>>>>>>>>>>>>>> the same behavior
>>>>>>>>>>>>>> as its associates. This is a brand new design principle 
>>>>>>>>>>>>>> I've never heard
>>>>>>>>>>>>>> before.
>>>>>>>>>>>>>
>>>>>>>>>>>>> ...........
>>>>>>>>>>>> That's nice...
>>>>>>>>>>>> Do you have any other concerns?
>>>>>>>>>>>
>>>>>>>>>>> I still do not understand why the first method with default 
>>>>>>>>>>> orientation is not implemented.
>>>>>>>>>> I guess you meant "is not over-ridden". :) Once again: 
>>>>>>>>>> because it is never used.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>




More information about the swing-dev mailing list