diff options
| author | Thomas Fitzsimmons <fitzsim@redhat.com> | 2007-11-27 22:06:57 +0000 |
|---|---|---|
| committer | Thomas Fitzsimmons <fitzsim@redhat.com> | 2007-11-27 22:06:57 +0000 |
| commit | 01332a3a7f7095b703bc492b9d47baf5e02cd292 (patch) | |
| tree | 12c91e59d8adcdbfad5e5e2489f210b9949115ef /gnu/java/awt | |
| parent | be1b1415b49febe180ff2363e3edc7b4faf500d9 (diff) | |
| download | classpath-01332a3a7f7095b703bc492b9d47baf5e02cd292.tar.gz | |
2007-11-27 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.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c:
Revert 2007-09-11 changes.
Diffstat (limited to 'gnu/java/awt')
| -rw-r--r-- | gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java | 1 | ||||
| -rw-r--r-- | gnu/java/awt/peer/gtk/GtkComponentPeer.java | 16 | ||||
| -rw-r--r-- | gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java | 14 | ||||
| -rw-r--r-- | gnu/java/awt/peer/gtk/GtkWindowPeer.java | 11 |
4 files changed, 17 insertions, 25 deletions
diff --git a/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java b/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java index 67040b82a..d06af8443 100644 --- a/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java +++ b/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/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/gnu/java/awt/peer/gtk/GtkComponentPeer.java index 6d9ba8857..76fefaaa5 100644 --- a/gnu/java/awt/peer/gtk/GtkComponentPeer.java +++ b/gnu/java/awt/peer/gtk/GtkComponentPeer.java @@ -253,20 +253,10 @@ public class GtkComponentPeer extends GtkGenericPeer public Point getLocationOnScreen () { int point[] = new int[2]; - if( this instanceof WindowPeer ) - { - if (Thread.currentThread() == GtkMainThread.mainThread) - gtkWindowGetLocationOnScreenUnlocked (point); - else - gtkWindowGetLocationOnScreen (point); - } + if (Thread.currentThread() == GtkMainThread.mainThread) + gtkWidgetGetLocationOnScreenUnlocked (point); else - { - if (Thread.currentThread() == GtkMainThread.mainThread) - gtkWidgetGetLocationOnScreenUnlocked (point); - else - gtkWidgetGetLocationOnScreen (point); - } + gtkWidgetGetLocationOnScreen (point); return new Point (point[0], point[1]); } diff --git a/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java b/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java index 7aea50991..7407744af 100644 --- a/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java +++ b/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/gnu/java/awt/peer/gtk/GtkWindowPeer.java b/gnu/java/awt/peer/gtk/GtkWindowPeer.java index d8054150d..9744c3a53 100644 --- a/gnu/java/awt/peer/gtk/GtkWindowPeer.java +++ b/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,16 @@ public class GtkWindowPeer extends GtkContainerPeer clickCount, popupTrigger); } + public Point getLocationOnScreen() + { + int point[] = new int[2]; + if (Thread.currentThread() == GtkMainThread.mainThread) + gtkWindowGetLocationOnScreenUnlocked(point); + else + gtkWindowGetLocationOnScreen(point); + return new Point(point[0], point[1]); + } + // We override this to keep it in sync with our internal // representation. public Rectangle getBounds() |
