summaryrefslogtreecommitdiffstats
path: root/libjava
diff options
context:
space:
mode:
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog7
-rw-r--r--libjava/classpath/ChangeLog44
-rw-r--r--libjava/classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java1
-rw-r--r--libjava/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java6
-rw-r--r--libjava/classpath/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java14
-rw-r--r--libjava/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java8
-rw-r--r--libjava/classpath/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h5
-rw-r--r--libjava/classpath/java/awt/Component.java56
-rw-r--r--libjava/classpath/java/awt/Container.java27
-rw-r--r--libjava/classpath/lib/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.classbin3454 -> 3526 bytes
-rw-r--r--libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer$RepaintTimerTask.classbin1498 -> 1498 bytes
-rw-r--r--libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer.classbin18688 -> 18625 bytes
-rw-r--r--libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.classbin1504 -> 1154 bytes
-rw-r--r--libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkWindowPeer.classbin8207 -> 8439 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTComponentHandler.classbin1391 -> 1391 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTFocusHandler.classbin1188 -> 1188 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent.classbin7344 -> 7344 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Component$BltBufferStrategy.classbin3283 -> 3283 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Component$FlipBufferStrategy.classbin3475 -> 3475 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Component$HeavyweightInLightweightListener.classbin1500 -> 1500 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Component.classbin57212 -> 58484 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer$AccessibleContainerHandler.classbin1195 -> 1195 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer.classbin2043 -> 2043 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Container$GfxPaintAllVisitor.classbin822 -> 822 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Container$GfxPaintVisitor.classbin810 -> 810 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Container$GfxPrintAllVisitor.classbin822 -> 822 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Container$GfxPrintVisitor.classbin810 -> 810 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Container$GfxVisitor.classbin421 -> 421 bytes
-rw-r--r--libjava/classpath/lib/java/awt/Container.classbin25778 -> 26135 bytes
-rw-r--r--libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c34
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.h2
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.h2
-rw-r--r--libjava/java/awt/Component.h5
-rw-r--r--libjava/java/awt/Container.h4
34 files changed, 196 insertions, 19 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 7da809b8bf4..31b06d9db98 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,10 @@
+2007-12-05 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.h: Regenerate.
+ * gnu/java/awt/peer/gtk/GtkWindowPeer.h: Likewise.
+ * java/awt/Component.h: Likewise.
+ * java/awt/Container.h: Likewise.
+
2007-11-05 H.J. Lu <hongjiu.lu@intel.com>
* configure.ac: Don't run config-ml.in directly.
diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog
index c24ad7b8084..4086a236cea 100644
--- a/libjava/classpath/ChangeLog
+++ b/libjava/classpath/ChangeLog
@@ -1,3 +1,47 @@
+2007-12-05 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
+ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c
+ (isWindowUnderMouse): New method.
+ * include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h:
+ Regenerate.
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java
+ (getLocationOnScreen): Move WindowPeer section to...
+ * gnu/java/awt/peer/gtk/GtkWindowPeer.java (getLocationOnScreen):
+ New method.
+ * gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java
+ (isWindowUnderMouse): Implement.
+ * java/awt/Component.java (getMousePosition): New method.
+ (getMousePositionHelper): Likewise.
+ (mouseOverComponent): Likewise.
+ * java/awt/Container.java (getMousePosition): New method.
+ (mouseOverComponent): Likewise.
+ * classpath/lib/java/awt/Component.class,
+ classpath/lib/java/awt/Component$BltBufferStrategy.class,
+ classpath/lib/java/awt/Container$GfxPaintAllVisitor.class,
+ classpath/lib/java/awt/Component$AccessibleAWTComponent
+ $AccessibleAWTFocusHandler.class,
+ classpath/lib/java/awt/Component$FlipBufferStrategy.class,
+ classpath/lib/java/awt/Container$GfxVisitor.class,
+ classpath/lib/java/awt/Component$AccessibleAWTComponent
+ $AccessibleAWTComponentHandler.class,
+ classpath/lib/java/awt/Container$AccessibleAWTContainer
+ $AccessibleContainerHandler.class,
+ classpath/lib/java/awt/Container.class,
+ classpath/lib/java/awt/Container$AccessibleAWTContainer.class,
+ classpath/lib/java/awt/Container$GfxPrintAllVisitor.class,
+ classpath/lib/java/awt/Component$AccessibleAWTComponent.class,
+ classpath/lib/java/awt/Container$GfxPaintVisitor.class,
+ classpath/lib/java/awt/Container$GfxPrintVisitor.class,
+ classpath/lib/java/awt/Component$HeavyweightInLightweightListener.class,
+ classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer.class,
+ classpath/lib/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.class,
+ classpath/lib/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.class,
+ classpath/lib/gnu/java/awt/peer/gtk/GtkWindowPeer.class,
+ classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer
+ $RepaintTimerTask.class:
+ Regenerate.
+
2007-10-01 Alexandre Oliva <aoliva@redhat.com>
* scripts/check_jni_methods.sh: Don't depend on diff -b ignoring
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java b/libjava/classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
index 67040b82a0f..d06af84433f 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
@@ -155,6 +155,7 @@ public class GdkGraphicsEnvironment extends ClasspathGraphicsEnvironment
* Used by GtkMouseInfoPeer.
*/
native int[] getMouseCoordinates();
+ native boolean isWindowUnderMouse(GtkWindowPeer windowPeer);
public WritableRaster createRaster(ColorModel cm, SampleModel sm)
{
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/libjava/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java
index 16c20ee253f..f658c17afbb 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java
@@ -76,7 +76,6 @@ import java.awt.image.VolatileImage;
import java.awt.peer.ComponentPeer;
import java.awt.peer.ContainerPeer;
import java.awt.peer.LightweightPeer;
-import java.awt.peer.WindowPeer;
import java.util.Timer;
import java.util.TimerTask;
@@ -251,10 +250,7 @@ public class GtkComponentPeer extends GtkGenericPeer
public Point getLocationOnScreen ()
{
int point[] = new int[2];
- if( this instanceof WindowPeer )
- gtkWindowGetLocationOnScreen (point);
- else
- gtkWidgetGetLocationOnScreen (point);
+ gtkWidgetGetLocationOnScreen (point);
return new Point (point[0], point[1]);
}
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java b/libjava/classpath/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java
index 7aea50991df..7407744af9e 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java
@@ -60,17 +60,7 @@ public class GtkMouseInfoPeer implements MouseInfoPeer
public boolean isWindowUnderMouse(Window w)
{
- int[] coords = gde.getMouseCoordinates();
- GraphicsDevice[] gds = gde.getScreenDevices();
-
- // Check if the screen of the Window and the cursor match
- if( gds[ coords[0] ] != w.getGraphicsConfiguration().getDevice() )
- return false;
-
- // Return the bounds-check.
- Point p = w.getLocationOnScreen();
- return (coords[1] >= p.x && coords[1] < p.x + w.getWidth() &&
- coords[2] >= p.y && coords[2] < p.y + w.getHeight() );
- }
+ return gde.isWindowUnderMouse((GtkWindowPeer) w.getPeer());
+ }
}
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java b/libjava/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java
index d8054150dea..5dc4b2e5b37 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java
@@ -45,6 +45,7 @@ import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.KeyboardFocusManager;
+import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Window;
import java.awt.event.ComponentEvent;
@@ -392,6 +393,13 @@ public class GtkWindowPeer extends GtkContainerPeer
clickCount, popupTrigger);
}
+ public Point getLocationOnScreen()
+ {
+ int point[] = new int[2];
+ gtkWindowGetLocationOnScreen(point);
+ return new Point(point[0], point[1]);
+ }
+
// We override this to keep it in sync with our internal
// representation.
public Rectangle getBounds()
diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h
index aa0bd015689..de83f57a597 100644
--- a/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h
+++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h
@@ -1,10 +1,10 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GdkGraphicsEnvironment__
#define __gnu_java_awt_peer_gtk_GdkGraphicsEnvironment__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
@@ -17,6 +17,7 @@ JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_nati
JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_nativeGetNumFontFamilies (JNIEnv *env, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_nativeGetFontFamilies (JNIEnv *env, jobject, jobjectArray);
JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_getMouseCoordinates (JNIEnv *env, jobject);
+JNIEXPORT jboolean JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_isWindowUnderMouse (JNIEnv *env, jobject, jobject);
#ifdef __cplusplus
}
diff --git a/libjava/classpath/java/awt/Component.java b/libjava/classpath/java/awt/Component.java
index f8bed17618e..fe4fb9b8b0d 100644
--- a/libjava/classpath/java/awt/Component.java
+++ b/libjava/classpath/java/awt/Component.java
@@ -5834,6 +5834,62 @@ p * <li>the set of backward traversal keys
}
/**
+ * Returns the mouse pointer position relative to this Component's
+ * top-left corner.
+ *
+ * @return relative mouse pointer position
+ *
+ * @throws HeadlessException if in a headless environment
+ */
+ public Point getMousePosition() throws HeadlessException
+ {
+ return getMousePositionHelper(true);
+ }
+
+ Point getMousePositionHelper(boolean allowChildren) throws HeadlessException
+ {
+ if (GraphicsEnvironment.isHeadless())
+ throw new HeadlessException("can't get mouse position"
+ + " in headless environment");
+ if (!isShowing())
+ return null;
+
+ Component parent = this;
+ int windowRelativeXOffset = 0;
+ int windowRelativeYOffset = 0;
+ while (parent != null && !(parent instanceof Window))
+ {
+ windowRelativeXOffset += parent.getX();
+ windowRelativeYOffset += parent.getY();
+ parent = parent.getParent();
+ }
+ if (parent == null)
+ return null;
+
+ Window window = (Window) parent;
+ if (!Toolkit.getDefaultToolkit()
+ .getMouseInfoPeer().isWindowUnderMouse(window))
+ return null;
+
+ PointerInfo info = MouseInfo.getPointerInfo();
+ Point mouseLocation = info.getLocation();
+ Point windowLocation = window.getLocationOnScreen();
+
+ int x = mouseLocation.x - windowLocation.x;
+ int y = mouseLocation.y - windowLocation.y;
+
+ if (!mouseOverComponent(window.getComponentAt(x, y), allowChildren))
+ return null;
+
+ return new Point(x - windowRelativeXOffset, y - windowRelativeYOffset);
+ }
+
+ boolean mouseOverComponent(Component component, boolean allowChildren)
+ {
+ return component == this;
+ }
+
+ /**
* This method is used to implement transferFocus(). CHILD is the child
* making the request. This is overridden by Container; when called for an
* ordinary component there is no child and so we always return null.
diff --git a/libjava/classpath/java/awt/Container.java b/libjava/classpath/java/awt/Container.java
index 83d9f7b78c5..e7622f2e839 100644
--- a/libjava/classpath/java/awt/Container.java
+++ b/libjava/classpath/java/awt/Container.java
@@ -1098,6 +1098,33 @@ public class Container extends Component
}
/**
+ * Returns the mouse pointer position relative to this Container's
+ * top-left corner. If allowChildren is false, the mouse pointer
+ * must be directly over this container. If allowChildren is true,
+ * the mouse pointer may be over this container or any of its
+ * descendents.
+ *
+ * @param allowChildren true to allow descendents, false if pointer
+ * must be directly over Container.
+ *
+ * @return relative mouse pointer position
+ *
+ * @throws HeadlessException if in a headless environment
+ */
+ public Point getMousePosition(boolean allowChildren) throws HeadlessException
+ {
+ return super.getMousePositionHelper(allowChildren);
+ }
+
+ boolean mouseOverComponent(Component component, boolean allowChildren)
+ {
+ if (allowChildren)
+ return isAncestorOf(component);
+ else
+ return component == this;
+ }
+
+ /**
* Returns the component located at the specified point. This is done
* by checking whether or not a child component claims to contain this
* point. The first child component that does is returned. If no
diff --git a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.class b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.class
index dfb28e4bf3e..6e3a11a3cf1 100644
--- a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.class
+++ b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.class
Binary files differ
diff --git a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer$RepaintTimerTask.class b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer$RepaintTimerTask.class
index 097713c014a..abf76c0d9ee 100644
--- a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer$RepaintTimerTask.class
+++ b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer$RepaintTimerTask.class
Binary files differ
diff --git a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer.class b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer.class
index 9627e77665a..45f9c47f8c6 100644
--- a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer.class
+++ b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer.class
Binary files differ
diff --git a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.class b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.class
index 35c5677f5b8..fc028c27fbb 100644
--- a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.class
+++ b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.class
Binary files differ
diff --git a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkWindowPeer.class b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkWindowPeer.class
index 53b831decaf..a348cf02d4a 100644
--- a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkWindowPeer.class
+++ b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkWindowPeer.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTComponentHandler.class b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTComponentHandler.class
index f48c922ff79..6c5bdeb7565 100644
--- a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTComponentHandler.class
+++ b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTComponentHandler.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTFocusHandler.class b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTFocusHandler.class
index 029692cc4f0..e2e3e879254 100644
--- a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTFocusHandler.class
+++ b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTFocusHandler.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent.class b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent.class
index 010706e95d8..22532323a23 100644
--- a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent.class
+++ b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Component$BltBufferStrategy.class b/libjava/classpath/lib/java/awt/Component$BltBufferStrategy.class
index 74be60b2956..e796a03a7f4 100644
--- a/libjava/classpath/lib/java/awt/Component$BltBufferStrategy.class
+++ b/libjava/classpath/lib/java/awt/Component$BltBufferStrategy.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Component$FlipBufferStrategy.class b/libjava/classpath/lib/java/awt/Component$FlipBufferStrategy.class
index 16b024509d2..f0857dc8ea3 100644
--- a/libjava/classpath/lib/java/awt/Component$FlipBufferStrategy.class
+++ b/libjava/classpath/lib/java/awt/Component$FlipBufferStrategy.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Component$HeavyweightInLightweightListener.class b/libjava/classpath/lib/java/awt/Component$HeavyweightInLightweightListener.class
index 5ab9670bde1..60503e61e1d 100644
--- a/libjava/classpath/lib/java/awt/Component$HeavyweightInLightweightListener.class
+++ b/libjava/classpath/lib/java/awt/Component$HeavyweightInLightweightListener.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Component.class b/libjava/classpath/lib/java/awt/Component.class
index 6adbf61ac0a..90b546ccd3a 100644
--- a/libjava/classpath/lib/java/awt/Component.class
+++ b/libjava/classpath/lib/java/awt/Component.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer$AccessibleContainerHandler.class b/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer$AccessibleContainerHandler.class
index a07e427861d..5f045ab2123 100644
--- a/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer$AccessibleContainerHandler.class
+++ b/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer$AccessibleContainerHandler.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer.class b/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer.class
index 18f79012eb3..167660a70ba 100644
--- a/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer.class
+++ b/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Container$GfxPaintAllVisitor.class b/libjava/classpath/lib/java/awt/Container$GfxPaintAllVisitor.class
index fea586bd9fd..cd7fd4c6493 100644
--- a/libjava/classpath/lib/java/awt/Container$GfxPaintAllVisitor.class
+++ b/libjava/classpath/lib/java/awt/Container$GfxPaintAllVisitor.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Container$GfxPaintVisitor.class b/libjava/classpath/lib/java/awt/Container$GfxPaintVisitor.class
index e5a54f8ffdc..791d8579f0f 100644
--- a/libjava/classpath/lib/java/awt/Container$GfxPaintVisitor.class
+++ b/libjava/classpath/lib/java/awt/Container$GfxPaintVisitor.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Container$GfxPrintAllVisitor.class b/libjava/classpath/lib/java/awt/Container$GfxPrintAllVisitor.class
index 3c741e98426..087631893fb 100644
--- a/libjava/classpath/lib/java/awt/Container$GfxPrintAllVisitor.class
+++ b/libjava/classpath/lib/java/awt/Container$GfxPrintAllVisitor.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Container$GfxPrintVisitor.class b/libjava/classpath/lib/java/awt/Container$GfxPrintVisitor.class
index fe7b3267f6e..c8557e99c45 100644
--- a/libjava/classpath/lib/java/awt/Container$GfxPrintVisitor.class
+++ b/libjava/classpath/lib/java/awt/Container$GfxPrintVisitor.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Container$GfxVisitor.class b/libjava/classpath/lib/java/awt/Container$GfxVisitor.class
index f9f85ae5215..9fd2811aad9 100644
--- a/libjava/classpath/lib/java/awt/Container$GfxVisitor.class
+++ b/libjava/classpath/lib/java/awt/Container$GfxVisitor.class
Binary files differ
diff --git a/libjava/classpath/lib/java/awt/Container.class b/libjava/classpath/lib/java/awt/Container.class
index 1154af9697a..f6b029ec258 100644
--- a/libjava/classpath/lib/java/awt/Container.class
+++ b/libjava/classpath/lib/java/awt/Container.class
Binary files differ
diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c
index 1c88d1b510e..6066a6bb271 100644
--- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c
+++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c
@@ -263,3 +263,37 @@ Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_getMouseCoordinates
return retArray;
}
+
+JNIEXPORT jboolean JNICALL
+Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_isWindowUnderMouse
+(JNIEnv *env, jobject obj, jobject windowPeer)
+{
+ GdkDisplay *display = NULL;
+ gint x = 0;
+ gint y = 0;
+ GtkWidget *windowToTest = NULL;
+ GdkWindow *windowAtPointer = NULL;
+ jboolean retVal = JNI_FALSE;
+
+ display = (GdkDisplay *) gtkpeer_get_display (env, obj);
+ g_assert (display != NULL);
+
+ windowToTest = (GtkWidget *) gtkpeer_get_widget (env, windowPeer);
+
+ gdk_threads_enter ();
+
+ windowAtPointer = gdk_display_get_window_at_pointer (display, &x, &y);
+
+ while (windowAtPointer
+ && windowAtPointer != windowToTest->window)
+ windowAtPointer = gdk_window_get_parent (windowAtPointer);
+
+ gdk_threads_leave ();
+
+ if (windowAtPointer)
+ retVal = JNI_TRUE;
+ else
+ retVal = JNI_FALSE;
+
+ return retVal;
+}
diff --git a/libjava/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.h b/libjava/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.h
index 78d947c6ef4..978c2ec506b 100644
--- a/libjava/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.h
+++ b/libjava/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.h
@@ -27,6 +27,7 @@ extern "Java"
{
class GdkGraphicsEnvironment;
class GdkScreenGraphicsDevice;
+ class GtkWindowPeer;
}
}
}
@@ -77,6 +78,7 @@ public:
virtual JArray< ::java::lang::String * > * getAvailableFontFamilyNames(::java::util::Locale *);
public: // actually package-private
virtual JArray< jint > * getMouseCoordinates();
+ virtual jboolean isWindowUnderMouse(::gnu::java::awt::peer::gtk::GtkWindowPeer *);
public:
virtual ::java::awt::image::WritableRaster * createRaster(::java::awt::image::ColorModel *, ::java::awt::image::SampleModel *);
private:
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.h b/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.h
index 3eb4c142aaf..a40f4168d2b 100644
--- a/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.h
+++ b/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.h
@@ -32,6 +32,7 @@ extern "Java"
class Component;
class Dialog;
class Graphics;
+ class Point;
class Rectangle;
class Window;
}
@@ -101,6 +102,7 @@ public:
public: // actually protected
virtual void postMouseEvent(jint, jlong, jint, jint, jint, jint, jboolean);
public:
+ virtual ::java::awt::Point * getLocationOnScreen();
virtual ::java::awt::Rectangle * getBounds();
virtual void updateIconImages();
virtual void updateMinimumSize();
diff --git a/libjava/java/awt/Component.h b/libjava/java/awt/Component.h
index f5889d2bc0d..23edfa77e98 100644
--- a/libjava/java/awt/Component.h
+++ b/libjava/java/awt/Component.h
@@ -354,6 +354,11 @@ public: // actually package-private
virtual void dispatchEventImpl(::java::awt::AWTEvent *);
virtual jboolean eventTypeEnabled(jint);
virtual jboolean isHierarchyVisible();
+public:
+ virtual ::java::awt::Point * getMousePosition();
+public: // actually package-private
+ virtual ::java::awt::Point * getMousePositionHelper(jboolean);
+ virtual jboolean mouseOverComponent(::java::awt::Component *, jboolean);
virtual ::java::awt::Component * findNextFocusComponent(::java::awt::Component *);
private:
void readObject(::java::io::ObjectInputStream *);
diff --git a/libjava/java/awt/Container.h b/libjava/java/awt/Container.h
index 4a44759532a..3ea162aaede 100644
--- a/libjava/java/awt/Container.h
+++ b/libjava/java/awt/Container.h
@@ -97,6 +97,10 @@ public: // actually protected
public:
virtual void deliverEvent(::java::awt::Event *);
virtual ::java::awt::Component * getComponentAt(jint, jint);
+ virtual ::java::awt::Point * getMousePosition(jboolean);
+public: // actually package-private
+ virtual jboolean mouseOverComponent(::java::awt::Component *, jboolean);
+public:
virtual ::java::awt::Component * locate(jint, jint);
virtual ::java::awt::Component * getComponentAt(::java::awt::Point *);
virtual ::java::awt::Component * findComponentAt(jint, jint);
OpenPOWER on IntegriCloud