Skip to content

Commit

Permalink
Backport 668d4b077f260a30a90842a01b38a9cf6718d418
Browse files Browse the repository at this point in the history
  • Loading branch information
duke committed Jan 9, 2024
1 parent 772ac17 commit 2f03de8
Showing 1 changed file with 24 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand All @@ -26,14 +26,23 @@
@key headful
@bug 8041470
@summary JButtons stay pressed after they have lost focus if you use the mouse wheel
@author Anton Nashatyrev
*/

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.AWTEvent;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Point;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.concurrent.CountDownLatch;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class WheelModifier {

JFrame f;
Expand All @@ -44,6 +53,9 @@ public class WheelModifier {
CountDownLatch releaseSema = new CountDownLatch(1);
volatile CountDownLatch wheelSema;

private volatile Point sLoc;
private volatile Dimension bSize;

void createGui() {
f = new JFrame("frame");
fb = new JButton("frame_button");
Expand Down Expand Up @@ -98,10 +110,13 @@ void run() throws Exception {
r.waitForIdle();
System.out.println("# Started");

Point sLoc = fb.getLocationOnScreen();
Dimension bSize = fb.getSize();
SwingUtilities.invokeAndWait(() -> {
sLoc = fb.getLocationOnScreen();
bSize = fb.getSize();
});

r.mouseMove(sLoc.x + bSize.width / 2, sLoc.y + bSize.height / 2);
r.mousePress(MouseEvent.BUTTON1_MASK);
r.mousePress(MouseEvent.BUTTON1_DOWN_MASK);
pressSema.await();
System.out.println("# Pressed");

Expand All @@ -119,7 +134,7 @@ void run() throws Exception {
wheelSema.await();
System.out.println("# Wheeled 2");

r.mouseRelease(MouseEvent.BUTTON1_MASK);
r.mouseRelease(MouseEvent.BUTTON1_DOWN_MASK);
releaseSema.await();
System.out.println("# Released!");
}
Expand Down

0 comments on commit 2f03de8

Please sign in to comment.