src/macosx/classes/sun/lwawt/LWComponentPeer.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, 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
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -40,13 +40,10 @@
 import java.awt.peer.ComponentPeer;
 import java.awt.peer.ContainerPeer;
 
 import java.awt.peer.KeyboardFocusManagerPeer;
 import java.util.concurrent.atomic.AtomicBoolean;
-import java.lang.reflect.Field;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
 
 import sun.awt.*;
 
 import sun.awt.event.IgnorePaintEvent;
 

@@ -130,11 +127,11 @@
 
     //   private volatile boolean paintPending;
     private volatile boolean isLayouting;
 
     private final D delegate;
-    private Container delegateContainer;
+    private final Container delegateContainer;
     private Component delegateDropTarget;
     private final Object dropTargetLock = new Object();
 
     private int fNumDropTargets = 0;
     private CDropTarget fDropTarget = null;

@@ -155,13 +152,10 @@
      * All Swing delegates use delegateContainer as a parent. This container
      * intentionally do not use parent of the peer.
      */
     @SuppressWarnings("serial")// Safe: outer class is non-serializable.
     private final class DelegateContainer extends Container {
-        {
-            enableEvents(0xFFFFFFFF);
-        }
 
         // Empty non private constructor was added because access to this
         // class shouldn't be emulated by a synthetic accessor method.
         DelegateContainer() {
             super();

@@ -210,80 +204,34 @@
         if (containerPeer != null) {
             containerPeer.addChildPeer(this);
         }
 
         // the delegate must be created after the target is set
-        AWTEventListener toolkitListener = null;
-        synchronized (Toolkit.getDefaultToolkit()) {
-            try {
-                toolkitListener = getToolkitAWTEventListener();
-                setToolkitAWTEventListener(null);
-
                 synchronized (getDelegateLock()) {
                     delegate = createDelegate();
-                    if (delegate != null) {
+            if (delegate == null) {
+                delegateContainer = null;
+                return;
+            }
                         delegate.setVisible(false);
                         delegateContainer = new DelegateContainer();
                         delegateContainer.add(delegate);
                         delegateContainer.addNotify();
-                        delegate.addNotify();
                         resetColorsAndFont(delegate);
                         delegate.setOpaque(true);
-                    } else {
-                        return;
-                    }
-                }
-
-            } finally {
-                setToolkitAWTEventListener(toolkitListener);
             }
 
             // todo swing: later on we will probably have one global RM
             SwingUtilities3.setDelegateRepaintManager(delegate, new RepaintManager() {
                 @Override
-                public void addDirtyRegion(final JComponent c, final int x, final int y, final int w, final int h) {
+            public void addDirtyRegion(final JComponent c, final int x,
+                                       final int y, final int w, final int h) {
                     repaintPeer(SwingUtilities.convertRectangle(
                             c, new Rectangle(x, y, w, h), getDelegate()));
                 }
             });
         }
-    }
-
-    /**
-     * This method must be called under Toolkit.getDefaultToolkit() lock
-     * and followed by setToolkitAWTEventListener()
-     */
-    protected final AWTEventListener getToolkitAWTEventListener() {
-        return AccessController.doPrivileged(new PrivilegedAction<AWTEventListener>() {
-            public AWTEventListener run() {
-                Toolkit toolkit = Toolkit.getDefaultToolkit();
-                try {
-                    Field field = Toolkit.class.getDeclaredField("eventListener");
-                    field.setAccessible(true);
-                    return (AWTEventListener) field.get(toolkit);
-                } catch (Exception e) {
-                    throw new InternalError(e.toString());
-                }
-            }
-        });
-    }
-
-    protected final void setToolkitAWTEventListener(final AWTEventListener listener) {
-        AccessController.doPrivileged(new PrivilegedAction<Void>() {
-            public Void run() {
-                Toolkit toolkit = Toolkit.getDefaultToolkit();
-                try {
-                    Field field = Toolkit.class.getDeclaredField("eventListener");
-                    field.setAccessible(true);
-                    field.set(toolkit, listener);
-                } catch (Exception e) {
-                    throw new InternalError(e.toString());
-                }
-                return null;
-            }
-        });
-    }
 
     /**
      * This method is called under getDelegateLock().
      * Overridden in subclasses.
      */