diff options
author | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-17 08:37:22 +0000 |
---|---|---|
committer | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-17 08:37:22 +0000 |
commit | bec0aae21b38823f08fb42f1f9d1e1e1710bbc8d (patch) | |
tree | 3574e5e329368fbc3591baf62c3a75ce8a0e6cc0 /libjava/gnu/java/awt | |
parent | 1827796bc30483db776aa2ee573954e7bfd47cc6 (diff) | |
download | gcc-bec0aae21b38823f08fb42f1f9d1e1e1710bbc8d.tar.gz |
2004-07-17 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/EmbeddedWindow.java
(static): Removed.
(addNotify): Set peer via reflection.
(setWindowPeer): Removed.
* gnu/java/awt/natEmbeddedWindow.cc: Removed.
* Makefile.am (nat_source_files):
Removed gnu/java/awt/natEmbeddedWindow.cc.
* Makefile.in: Regenerated.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84854 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/java/awt')
-rw-r--r-- | libjava/gnu/java/awt/EmbeddedWindow.java | 32 | ||||
-rw-r--r-- | libjava/gnu/java/awt/natEmbeddedWindow.cc | 18 |
2 files changed, 20 insertions, 30 deletions
diff --git a/libjava/gnu/java/awt/EmbeddedWindow.java b/libjava/gnu/java/awt/EmbeddedWindow.java index f938f55b791..5f1d71a8068 100644 --- a/libjava/gnu/java/awt/EmbeddedWindow.java +++ b/libjava/gnu/java/awt/EmbeddedWindow.java @@ -40,23 +40,20 @@ package gnu.java.awt; import gnu.classpath.Configuration; import gnu.java.awt.peer.EmbeddedWindowPeer; + +import java.awt.Component; import java.awt.Frame; import java.awt.Toolkit; +import java.lang.reflect.Field; /** * Represents an AWT window that can be embedded into another * application. * - * @author Michael Koch <konqueror@gmx.de> + * @author Michael Koch (konqueror@gmx.de) */ public class EmbeddedWindow extends Frame { - static - { - if (Configuration.INIT_LOAD_LIBRARY) - System.loadLibrary("javaawt"); - } - private long handle; /** @@ -93,14 +90,25 @@ public class EmbeddedWindow extends Frame throw new UnsupportedOperationException ("Embedded windows are not supported by the current peers: " + tk.getClass()); - setWindowPeer (((EmbeddedWindowSupport) tk).createEmbeddedWindow (this)); + // Circumvent the package-privateness of the AWT internal + // java.awt.Component.peer member variable. + try + { + Field peerField = Component.class.getDeclaredField("peer"); + peerField.set(this, ((EmbeddedWindowSupport) tk).createEmbeddedWindow (this)); + } + catch (IllegalAccessException e) + { + // This should never happen. + } + catch (NoSuchFieldException e) + { + // This should never happen. + } + super.addNotify(); } - // This method is only made native to circumvent the package-privateness of - // an AWT internal java.awt.Component.peer member variable. - native void setWindowPeer (EmbeddedWindowPeer peer); - /** * If the native peer for this embedded window has been created, * then setHandle will embed the window. If not, setHandle tells diff --git a/libjava/gnu/java/awt/natEmbeddedWindow.cc b/libjava/gnu/java/awt/natEmbeddedWindow.cc deleted file mode 100644 index 79cdd6797e0..00000000000 --- a/libjava/gnu/java/awt/natEmbeddedWindow.cc +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation - - This file is part of libgcj. - -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ - -#include <gnu/java/awt/EmbeddedWindow.h> -#include <gnu/java/awt/peer/EmbeddedWindowPeer.h> -#include <java/awt/peer/ComponentPeer.h> - -void -gnu::java::awt::EmbeddedWindow::setWindowPeer (gnu::java::awt::peer::EmbeddedWindowPeer* w) -{ - if (!peer) - peer = reinterpret_cast< ::java::awt::peer::ComponentPeer *> (w); -} |