Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4500123

REGRESSION: MouseEvent.isPopupTrigger is never true in Windows

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P2 P2
    • None
    • 1.4.0
    • client-libs
    • x86
    • windows_nt

      java version "1.4.0-beta3"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta3-b78)
      Java HotSpot(TM) Client VM (build 1.4.0-beta3-b78, mixed mode)

      This is a serious regression. When processing a mouse Event to show a popup menu, the isPopupTrigger is never true for MOUSE_RELEASED or MOUSE_PRESSED events.

      This regression was introduced between b74 (works fine) and b77 (broken). Unfortunately, the beta 2 that was just released contains this regression.

      This problem exists on Windows but not Solaris (I don't know about Linux).

      See the attached test case:


      ------ PopupTest.java -----------
      import java.awt.*;
      import java.awt.event.*;

      import javax.swing.*;

      public class PopupTest extends JFrame {

          private JPopupMenu popupMenu;

          private static String[] dayData = {
              "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
          };

          public PopupTest() {
      super("Right click with the mouse to popup a menu");
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      JPanel panel = new JPanel();

      popupMenu = new JPopupMenu();
      for (int i = 0; i < dayData.length; i++) {
      popupMenu.add(dayData[i]);
      }
      panel.addMouseListener(new PopupListener(popupMenu));
      setContentPane(panel);

      setSize(300, 300);
      setVisible(true);
          }


          public static void main(String[] args) {
      PopupTest test = new PopupTest();
          }

          class PopupListener extends MouseAdapter {
      private JPopupMenu popup;

      public PopupListener(JPopupMenu popup) {
      this.popup = popup;
      }

      public void mousePressed(MouseEvent e) {
      maybeShowPopup(e);
      }

      public void mouseReleased(MouseEvent e) {
      maybeShowPopup(e);
      }

      private void maybeShowPopup(MouseEvent e) {
      if (e.isPopupTrigger()) {
      popup.show(e.getComponent(), e.getX(), e.getY());
      } else {
      System.out.println("MouseEvent: " + e + " is NOT a popup trigger");
      }
      }
          }
      }







            bchristi Brent Christian
            mdavidsosunw Mark Davidson (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: