On Wed, 4 Sep 2024 00:54:16 GMT, Damon Nguyen <[email protected]> wrote:
> In a JComboBox, if the user opens the dropdown list and clicks and holds the > down-button, then ALT-TABs to switch focus, when the user re-focuses the > frame with the JComboBox and opens the dropdown list again, the list will > still be scrolling even though the down-button isn't pressed. > > This isn't OS or L&F specific, although Aqua L&F does not have any > directional arrows in the dropdown list (and is thus exempt). This led me to > believe it could be handled in BasicComboBoxUI where focusLost and focusGain > are used or isPopupVisible but the scroll behavior cannot be altered here. > Likewise for BasicComboPopup where `autoscroll` is used. However, this > behavior isn't related to autoscroll and is actually found in the JScrollbar > of the JScrollpane inside of the JComboBox. The timer for the scroll action > starts but is never stopped if focus is lost, so a new listener is created > and used. The proposed solution uses `KeyboardFocusManager` to track the > focus owner. The listener stops the `scrollTimer` when the `focusOwner` > property is changed. With this change, the list no longer automatically > scrolls when re-focused and instead opens normally. > > The included test is manual due to the need to confirm that the list still > scrolls after ALT-TABing. The L&F is set to Metal since it is the > cross-platform lookandfeel and has directional buttons for the JScrollPane > list. This pull request has now been integrated. Changeset: 11147046 Author: Damon Nguyen <[email protected]> URL: https://git.openjdk.org/jdk/commit/11147046aa6102bc6e132d7b8c9d4e11db802002 Stats: 120 lines in 2 files changed: 120 ins; 0 del; 0 mod 6672644: JComboBox still scrolling if switch to another window and return back Reviewed-by: abhiscxk, psadhukhan ------------- PR: https://git.openjdk.org/jdk/pull/20845
