diff options
author | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-12-05 18:04:44 +0000 |
---|---|---|
committer | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-12-05 18:04:44 +0000 |
commit | 1e35b63380704a5149fe5ecc74f77fc5f8d00d6f (patch) | |
tree | 18361aa2bba3ec82f967a259c1fd72c45c7abf3c | |
parent | 97f67e8325991858f090084f771494852fbf7f60 (diff) | |
download | gcc-1e35b63380704a5149fe5ecc74f77fc5f8d00d6f.tar.gz |
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-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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130627 138bc75d-0d04-0410-961f-82ee72b054a4
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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer.class b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer.class Binary files differindex 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 diff --git a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.class b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.class Binary files differindex 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 diff --git a/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkWindowPeer.class b/libjava/classpath/lib/gnu/java/awt/peer/gtk/GtkWindowPeer.class Binary files differindex 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 diff --git a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTComponentHandler.class b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTComponentHandler.class Binary files differindex f48c922ff79..6c5bdeb7565 100644 --- a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTComponentHandler.class +++ b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTComponentHandler.class diff --git a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTFocusHandler.class b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTFocusHandler.class Binary files differindex 029692cc4f0..e2e3e879254 100644 --- a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTFocusHandler.class +++ b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent$AccessibleAWTFocusHandler.class diff --git a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent.class b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent.class Binary files differindex 010706e95d8..22532323a23 100644 --- a/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent.class +++ b/libjava/classpath/lib/java/awt/Component$AccessibleAWTComponent.class diff --git a/libjava/classpath/lib/java/awt/Component$BltBufferStrategy.class b/libjava/classpath/lib/java/awt/Component$BltBufferStrategy.class Binary files differindex 74be60b2956..e796a03a7f4 100644 --- a/libjava/classpath/lib/java/awt/Component$BltBufferStrategy.class +++ b/libjava/classpath/lib/java/awt/Component$BltBufferStrategy.class diff --git a/libjava/classpath/lib/java/awt/Component$FlipBufferStrategy.class b/libjava/classpath/lib/java/awt/Component$FlipBufferStrategy.class Binary files differindex 16b024509d2..f0857dc8ea3 100644 --- a/libjava/classpath/lib/java/awt/Component$FlipBufferStrategy.class +++ b/libjava/classpath/lib/java/awt/Component$FlipBufferStrategy.class diff --git a/libjava/classpath/lib/java/awt/Component$HeavyweightInLightweightListener.class b/libjava/classpath/lib/java/awt/Component$HeavyweightInLightweightListener.class Binary files differindex 5ab9670bde1..60503e61e1d 100644 --- a/libjava/classpath/lib/java/awt/Component$HeavyweightInLightweightListener.class +++ b/libjava/classpath/lib/java/awt/Component$HeavyweightInLightweightListener.class diff --git a/libjava/classpath/lib/java/awt/Component.class b/libjava/classpath/lib/java/awt/Component.class Binary files differindex 6adbf61ac0a..90b546ccd3a 100644 --- a/libjava/classpath/lib/java/awt/Component.class +++ b/libjava/classpath/lib/java/awt/Component.class diff --git a/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer$AccessibleContainerHandler.class b/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer$AccessibleContainerHandler.class Binary files differindex a07e427861d..5f045ab2123 100644 --- a/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer$AccessibleContainerHandler.class +++ b/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer$AccessibleContainerHandler.class diff --git a/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer.class b/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer.class Binary files differindex 18f79012eb3..167660a70ba 100644 --- a/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer.class +++ b/libjava/classpath/lib/java/awt/Container$AccessibleAWTContainer.class diff --git a/libjava/classpath/lib/java/awt/Container$GfxPaintAllVisitor.class b/libjava/classpath/lib/java/awt/Container$GfxPaintAllVisitor.class Binary files differindex fea586bd9fd..cd7fd4c6493 100644 --- a/libjava/classpath/lib/java/awt/Container$GfxPaintAllVisitor.class +++ b/libjava/classpath/lib/java/awt/Container$GfxPaintAllVisitor.class diff --git a/libjava/classpath/lib/java/awt/Container$GfxPaintVisitor.class b/libjava/classpath/lib/java/awt/Container$GfxPaintVisitor.class Binary files differindex e5a54f8ffdc..791d8579f0f 100644 --- a/libjava/classpath/lib/java/awt/Container$GfxPaintVisitor.class +++ b/libjava/classpath/lib/java/awt/Container$GfxPaintVisitor.class diff --git a/libjava/classpath/lib/java/awt/Container$GfxPrintAllVisitor.class b/libjava/classpath/lib/java/awt/Container$GfxPrintAllVisitor.class Binary files differindex 3c741e98426..087631893fb 100644 --- a/libjava/classpath/lib/java/awt/Container$GfxPrintAllVisitor.class +++ b/libjava/classpath/lib/java/awt/Container$GfxPrintAllVisitor.class diff --git a/libjava/classpath/lib/java/awt/Container$GfxPrintVisitor.class b/libjava/classpath/lib/java/awt/Container$GfxPrintVisitor.class Binary files differindex fe7b3267f6e..c8557e99c45 100644 --- a/libjava/classpath/lib/java/awt/Container$GfxPrintVisitor.class +++ b/libjava/classpath/lib/java/awt/Container$GfxPrintVisitor.class diff --git a/libjava/classpath/lib/java/awt/Container$GfxVisitor.class b/libjava/classpath/lib/java/awt/Container$GfxVisitor.class Binary files differindex f9f85ae5215..9fd2811aad9 100644 --- a/libjava/classpath/lib/java/awt/Container$GfxVisitor.class +++ b/libjava/classpath/lib/java/awt/Container$GfxVisitor.class diff --git a/libjava/classpath/lib/java/awt/Container.class b/libjava/classpath/lib/java/awt/Container.class Binary files differindex 1154af9697a..f6b029ec258 100644 --- a/libjava/classpath/lib/java/awt/Container.class +++ b/libjava/classpath/lib/java/awt/Container.class 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); |