On Fri, 28 Aug 2020 17:30:11 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

>> Ambarish Rapte has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   Fix for non editable ComboBox
>
> modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/ListViewBehavior.java
>  line 143:
> 
>> 142:
>> 143:         if 
>> (Boolean.FALSE.equals(control.getProperties().containsKey("excludeKeyMappingsForComboBoxEditor")))
>>  {
>> 144:             // This is not ComboBox's ListView
> 
> Unless I'm missing something, you don't need to compare with a `Boolean` at 
> all since containsKey returns a `boolean`
> primitive type, so I think this can be simplified to:
> if 
> (!control.getProperties().containsKey("excludeKeyMappingsForComboBoxEditor")) 
> {
> 
> If instead you do want to check the value of the property, and not just its 
> existence, you would need the following,
> and it would be important to check `!TRUE.equals` rather than `FALSE.equals` 
> so that an unset property would be treated
> as `false`.  if 
> (!Boolean.TRUE.equals(control.getProperties().get("excludeKeyMappingsForComboBoxEditor")))
>  {

Changed to use
`if 
(!control.getProperties().containsKey("excludeKeyMappingsForComboBoxEditor")) {`

> modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/ListViewBehavior.java
>  line 359:
> 
>> 358:         Boolean isComboBoxEditable = 
>> (Boolean)getNode().getProperties().get("editableComboBoxEditor");
>> 359:         if (isComboBoxEditable != null) {
>> 360:             // This is ComboBox's ListView
> 
> Maybe simplify this as follows, to match the earlier logic?
> 
> if 
> (Boolean.FALSE.equals(getNode().getProperties().get("editableComboBoxEditor")))
>  {

With this change, we need to check both FALSE and TRUE.
For a Non ComboBox ListView 
`getNode().getProperties().get("editableComboBoxEditor")` would be `null`.

if 
(Boolean.FALSE.equals(getNode().getProperties().get("editableComboBoxEditor"))) 
{ add KeyMappings }
else if 
(Boolean.TRUE.equals(getNode().getProperties().get("editableComboBoxEditor"))) 
{ remove KeyMappings }
else { ListView is not contained by ComboBox }

-------------

PR: https://git.openjdk.java.net/jfx/pull/172

Reply via email to