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

Dead circumflex stay active after action associated with circumflex was invoked

XMLWordPrintable

    • generic
    • generic

      ADDITIONAL SYSTEM INFORMATION :
      Microsoft Windows 10 Enterprise, German key board

      A DESCRIPTION OF THE PROBLEM :
      until jre1.8.0_151 circumflex dead key was "deactivated" after the action associated with circumflex key was enabled is UI.
      after jre1.8.0_152 circumflex dead key stay "active" for the same application


      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Enable German keyboard layout. Start the program given in the souce code. Press dead circumflex key aka (^) on qwertz or (~) on qwerty keyboard.
      New window called "popup" will open. Then click on textfield and press "a" key.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      TextField shows: a (works until jre1.8.0_151)
      ACTUAL -
      TextField shows: â (on jre1.8.0_171 and jre1.10)

      ---------- BEGIN SOURCE ----------
      import java.awt.BorderLayout;
      import java.awt.EventQueue;
      import java.awt.event.ActionEvent;
      import java.awt.event.KeyEvent;
      import javax.swing.AbstractAction;
      import javax.swing.JButton;
      import javax.swing.JFrame;
      import javax.swing.JPanel;
      import javax.swing.JTextField;
      import javax.swing.KeyStroke;

      public class Demo
      {

          public void buildGui(){
              JFrame frame = new JFrame("key buttons");
              JPanel panel = new JPanel(new BorderLayout());
              JButton a = new JButton("Open popup");
              panel.add(a, BorderLayout.CENTER);

              frame.setContentPane(panel);
              frame.setVisible(true);
              frame.pack();
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.setFocusTraversalKeysEnabled(false);
              
              KeyStroke us = KeyStroke.getKeyStroke(KeyEvent.VK_DEAD_CIRCUMFLEX, 0, false);
              panel.getInputMap().put(us, "A");

              panel.getActionMap().put("A", new AbstractAction(){
                  @Override
                  public void actionPerformed(ActionEvent evt){
                     openWindow();
                  }
              });
          }

          private void openWindow(){
              JFrame frame = new JFrame("Popup");
              JPanel panel = new JPanel(new BorderLayout());
              JTextField textField = new JTextField(30);
              panel.add(textField, BorderLayout.CENTER);
              frame.setContentPane(panel);
              frame.setVisible(true);
              frame.pack();
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          }

          public static void main(String[] args){
              EventQueue.invokeLater( new Demo()::buildGui);
          }
      }
      ---------- END SOURCE ----------

      FREQUENCY : always


        1. Capture.PNG
          71 kB
          Praveen Narayanaswamy
        2. TextFieldBug.java
          0.5 kB
          Praveen Narayanaswamy

            psadhukhan Prasanta Sadhukhan
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: