RFR: 5021949: JSplitPane setEnabled(false) shouldn't be partially functional [v3]

Alexey Ivanov aivanov at openjdk.org
Wed Jun 26 09:29:12 UTC 2024


On Wed, 26 Jun 2024 08:36:45 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:

>> Alisen's concern is valid.
>> 
>> What if `setEnabled(false)` is called when `isOneTouchExpandable` is `false` and then `setOneTouchExpandable(true)` is called which adds the buttons? The buttons are enabled when they should be disabled.
>
> Why buttons will be enabled? The buttons state is determined by `setEnabled `param, if `setEnabled `is false, then irrespective of `isOneTouchExpandable`, it will be disabled...`isOneTouchExpandable `is just extra layer of check as that determines whether arrow buttons are rendered or not....If oneTouchExpandable is not there then arrow buttons itself is not created so no point set their state...

Consider the following scenario:


JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                                new JButton("Left"),
                                new JButton("Right"));

jsp.setOneTouchExpandable(false);
jsp.setEnabled(false);
// At this point neither `leftButton` or `rightButton` are created

jsp.setOneTouchExpandable(true);
// This has created both `leftButton` or `rightButton`,
// and both buttons are enabled, aren't they?
// I can't see how either button could get disabled.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19695#discussion_r1654434650


More information about the client-libs-dev mailing list