This implements some of the new 1.5 stuff for AWT.
- changes to Image (accelerationPriority)
- always-on-top Window (and GTK peer support)
- MouseInfo and PointerInfo classes and the necessary
peers and Toolkit changes.
- GTK implementation of MouseInfoPeer.
(Note that the getMouseInfoPeer method is not abstract
in Toolkit and is allowed to throw UnsupportedOpException,
so I made that the default. Toolkit implementations should
obviously overload this if possible. That means you, Roman ;))
/Sven
2006-07-15 Sven de Marothy <[EMAIL PROTECTED]>
* gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java,
* java/awt/MouseInfo.java,
* java/awt/PointerInfo.java,
* java/awt/peer/MouseInfoPeer.java:
New files.
* java/awt/Image.java
(accelerationPriority): New field.
(setAccelerationPriority, getAccelerationPriority): New methods..
* include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h,
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c,
* gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java:
(getMouseCoordinates): New method.
* gnu/java/awt/peer/gtk/GtkFramePeer.java
(updateAlwaysOnTop): Remove stub overload.
* gnu/java/awt/ClasspathToolkit.java,
* gnu/java/awt/peer/gtk/GtkToolkit.java,
* include/gnu_java_awt_peer_gtk_GtkToolkit.h,
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c:
(getMouseInfoPeer): New method.
(getMouseNumberOfButtons): New method.
* gnu/java/awt/peer/gtk/GtkWindowPeer.java
* include/gnu_java_awt_peer_gtk_GtkWindowPeer.h
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(gtkWindowSetAlwaysOnTop): New method.
(updateAlwaysOnTop): Implement.
* java/awt/Toolkit.java,
(getMouseInfoPeer): New method.
* java/awt/Window.java
(alwaysOnTop): New field.
(isAlwaysOnTop, setAlwaysOnTop): New methods.
* java/awt/peer/WindowPeer.java: Doc fix.
Index: gnu/java/awt/ClasspathToolkit.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/ClasspathToolkit.java,v
retrieving revision 1.20
diff -U3 -r1.20 ClasspathToolkit.java
--- gnu/java/awt/ClasspathToolkit.java 30 Jun 2006 18:20:06 -0000 1.20
+++ gnu/java/awt/ClasspathToolkit.java 15 Jul 2006 07:41:21 -0000
@@ -1,5 +1,5 @@
/* ClasspathToolkit.java -- Abstract superclass for Classpath toolkits.
- Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -52,6 +52,7 @@
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
+import java.awt.Point;
import java.awt.Toolkit;
import java.awt.font.FontRenderContext;
import java.awt.image.ColorModel;
@@ -188,6 +189,9 @@
*/
public abstract Font createFont(int format, InputStream stream);
+ /**
+ * Creates a RobotPeer on a given GraphicsDevice.
+ */
public abstract RobotPeer createRobot (GraphicsDevice screen)
throws AWTException;
@@ -201,8 +205,24 @@
/**
* Used to register ImageIO SPIs provided by the toolkit.
+ *
+ * Our default implementation does nothing.
*/
public void registerImageIOSpis(IIORegistry reg)
{
}
+
+ /**
+ * Returns the number of mouse buttons.
+ * (used by java.awt.MouseInfo).
+ *
+ * This dummy implementation returns -1 (no mouse).
+ * toolkit implementors should overload this method if possible.
+ * @since 1.5
+ */
+ public int getMouseNumberOfButtons()
+ {
+ return -1;
+ }
}
+
Index: gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,v
retrieving revision 1.13
diff -U3 -r1.13 GdkGraphicsEnvironment.java
--- gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java 6 Jun 2006 10:57:37 -0000 1.13
+++ gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java 15 Jul 2006 07:41:21 -0000
@@ -134,5 +134,9 @@
{
throw new java.lang.UnsupportedOperationException ();
}
-
+
+ /**
+ * Used by GtkMouseInfoPeer.
+ */
+ native int[] getMouseCoordinates();
}
Index: gnu/java/awt/peer/gtk/GtkFramePeer.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GtkFramePeer.java,v
retrieving revision 1.46
diff -U3 -r1.46 GtkFramePeer.java
--- gnu/java/awt/peer/gtk/GtkFramePeer.java 30 Mar 2006 18:58:56 -0000 1.46
+++ gnu/java/awt/peer/gtk/GtkFramePeer.java 15 Jul 2006 07:41:21 -0000
@@ -218,11 +218,7 @@
// TODO Auto-generated method stub
}
- public void updateAlwaysOnTop()
- {
- // TODO Auto-generated method stub
-
- }
+
public boolean requestWindowFocus()
{
// TODO Auto-generated method stub
Index: gnu/java/awt/peer/gtk/GtkToolkit.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GtkToolkit.java,v
retrieving revision 1.90
diff -U3 -r1.90 GtkToolkit.java
--- gnu/java/awt/peer/gtk/GtkToolkit.java 6 Jul 2006 19:50:24 -0000 1.90
+++ gnu/java/awt/peer/gtk/GtkToolkit.java 15 Jul 2006 07:41:21 -0000
@@ -102,6 +102,7 @@
import java.awt.peer.ListPeer;
import java.awt.peer.MenuBarPeer;
import java.awt.peer.MenuItemPeer;
+import java.awt.peer.MouseInfoPeer;
import java.awt.peer.MenuPeer;
import java.awt.peer.PanelPeer;
import java.awt.peer.PopupMenuPeer;
@@ -653,4 +654,12 @@
}
public static native void gtkMain();
+
+ protected MouseInfoPeer getMouseInfoPeer()
+ {
+ return new GtkMouseInfoPeer();
+ }
+
+ public native int getMouseNumberOfButtons();
+
} // class GtkToolkit
Index: gnu/java/awt/peer/gtk/GtkWindowPeer.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java,v
retrieving revision 1.48
diff -U3 -r1.48 GtkWindowPeer.java
--- gnu/java/awt/peer/gtk/GtkWindowPeer.java 30 Mar 2006 18:58:56 -0000 1.48
+++ gnu/java/awt/peer/gtk/GtkWindowPeer.java 15 Jul 2006 07:41:21 -0000
@@ -70,7 +70,7 @@
native void gtkWindowSetTitle (String title);
native void gtkWindowSetResizable (boolean resizable);
native void gtkWindowSetModal (boolean modal);
-
+ native void gtkWindowSetAlwaysOnTop ( boolean alwaysOnTop );
native void realize ();
/** Returns the cached width of the AWT window component. */
@@ -275,10 +275,13 @@
else
q().postEvent (new WindowEvent ((Window) awtComponent, id, opposite));
}
+
+ /**
+ * Update the always-on-top status of the native window.
+ */
public void updateAlwaysOnTop()
{
- // TODO Auto-generated method stub
-
+ gtkWindowSetAlwaysOnTop( ((Window)awtComponent).isAlwaysOnTop() );
}
protected void postExposeEvent (int x, int y, int width, int height)
Index: include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h
===================================================================
RCS file: /sources/classpath/classpath/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h,v
retrieving revision 1.4
diff -U3 -r1.4 gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h
--- include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h 6 Jun 2006 10:04:14 -0000 1.4
+++ include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h 15 Jul 2006 07:41:21 -0000
@@ -16,6 +16,7 @@
JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_nativeGetDefaultScreenDevice (JNIEnv *env, jobject);
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);
#ifdef __cplusplus
}
Index: include/gnu_java_awt_peer_gtk_GtkToolkit.h
===================================================================
RCS file: /sources/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkToolkit.h,v
retrieving revision 1.11
diff -U3 -r1.11 gnu_java_awt_peer_gtk_GtkToolkit.h
--- include/gnu_java_awt_peer_gtk_GtkToolkit.h 30 Apr 2006 10:37:36 -0000 1.11
+++ include/gnu_java_awt_peer_gtk_GtkToolkit.h 15 Jul 2006 07:41:21 -0000
@@ -17,6 +17,7 @@
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_sync (JNIEnv *env, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_loadSystemColors (JNIEnv *env, jobject, jintArray);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkMain (JNIEnv *env, jclass);
+JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_getMouseNumberOfButtons (JNIEnv *env, jobject);
#ifdef __cplusplus
}
Index: include/gnu_java_awt_peer_gtk_GtkWindowPeer.h
===================================================================
RCS file: /sources/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkWindowPeer.h,v
retrieving revision 1.22
diff -U3 -r1.22 gnu_java_awt_peer_gtk_GtkWindowPeer.h
--- include/gnu_java_awt_peer_gtk_GtkWindowPeer.h 30 Apr 2006 10:37:36 -0000 1.22
+++ include/gnu_java_awt_peer_gtk_GtkWindowPeer.h 15 Jul 2006 07:41:21 -0000
@@ -13,6 +13,7 @@
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_gtkWindowSetTitle (JNIEnv *env, jobject, jstring);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_gtkWindowSetResizable (JNIEnv *env, jobject, jboolean);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_gtkWindowSetModal (JNIEnv *env, jobject, jboolean);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_gtkWindowSetAlwaysOnTop(JNIEnv *env, jobject, jboolean);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_realize (JNIEnv *env, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_create (JNIEnv *env, jobject, jint, jboolean, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setVisibleNative (JNIEnv *env, jobject, jboolean);
Index: java/awt/Image.java
===================================================================
RCS file: /sources/classpath/classpath/java/awt/Image.java,v
retrieving revision 1.14
diff -U3 -r1.14 Image.java
--- java/awt/Image.java 3 May 2006 19:31:45 -0000 1.14
+++ java/awt/Image.java 15 Jul 2006 07:41:21 -0000
@@ -1,5 +1,5 @@
/* Image.java -- superclass for images
- Copyright (C) 1999, 2002, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -50,7 +50,7 @@
*
* @author Aaron M. Renn ([EMAIL PROTECTED])
* @since 1.0
- * @status updated to 1.4
+ * @status updated to 1.5
*/
public abstract class Image
{
@@ -102,6 +102,12 @@
public static final int SCALE_AREA_AVERAGING = 16;
/**
+ * The acceleration priority of the image
+ * @since 1.5
+ */
+ protected float accelerationPriority;
+
+ /**
* A default constructor for subclasses.
*/
public Image()
@@ -205,4 +211,32 @@
* includes the actual image data.
*/
public abstract void flush();
+
+ /**
+ * Sets the acceleration priority of the image.
+ * This is a value from 0 (lowest) to 1 (highest), which may
+ * be used as a hint for image acceleration.
+ * E.g. higher priority images may be stored in video memory.
+ * @param priority - the priority
+ * @throws IllegalArgumentException if priority is not >= 0 and <= 1.
+ *
+ * @since 1.5
+ */
+ public void setAccelerationPriority(float priority)
+ {
+ if( priority < 0f || priority > 1f)
+ throw new IllegalArgumentException("Invalid priority value.");
+ accelerationPriority = priority;
+ }
+
+ /**
+ * Returns the acceleration priority of the image.
+ *
+ * @see #setAccelerationPriority(float)
+ * @since 1.5
+ */
+ public float getAccelerationPriority()
+ {
+ return accelerationPriority;
+ }
} // class Image
Index: java/awt/Toolkit.java
===================================================================
RCS file: /sources/classpath/classpath/java/awt/Toolkit.java,v
retrieving revision 1.42
diff -U3 -r1.42 Toolkit.java
--- java/awt/Toolkit.java 20 Jun 2006 11:36:23 -0000 1.42
+++ java/awt/Toolkit.java 15 Jul 2006 07:41:21 -0000
@@ -70,6 +70,7 @@
import java.awt.peer.MenuBarPeer;
import java.awt.peer.MenuItemPeer;
import java.awt.peer.MenuPeer;
+import java.awt.peer.MouseInfoPeer;
import java.awt.peer.PanelPeer;
import java.awt.peer.PopupMenuPeer;
import java.awt.peer.ScrollPanePeer;
@@ -332,6 +333,18 @@
protected abstract MenuItemPeer createMenuItem(MenuItem target);
/**
+ * Returns a MouseInfoPeer.
+ * The default implementation of this method throws
+ * UnsupportedOperationException.
+ *
+ * Toolkit implementations should overload this if possible, however.
+ */
+ protected MouseInfoPeer getMouseInfoPeer()
+ {
+ throw new UnsupportedOperationException("No mouse info peer.");
+ }
+
+ /**
* Creates a peer object for the specified <code>FileDialog</code>.
*
* @param target The <code>FileDialog</code> to create the peer for.
Index: java/awt/Window.java
===================================================================
RCS file: /sources/classpath/classpath/java/awt/Window.java,v
retrieving revision 1.72
diff -U3 -r1.72 Window.java
--- java/awt/Window.java 30 May 2006 16:38:11 -0000 1.72
+++ java/awt/Window.java 15 Jul 2006 07:41:21 -0000
@@ -80,6 +80,8 @@
private int state = 0;
/** @since 1.4 */
private boolean focusableWindowState = true;
+ /** @since 1.5 */
+ private boolean alwaysOnTop = false;
// A list of other top-level windows owned by this window.
private transient Vector ownedWindows = new Vector();
@@ -420,13 +422,17 @@
/**
* Sends this window to the back so that all other windows display in
* front of it.
+ *
+ * If the window is set to be always-on-top, this will remove its
+ * always-on-top status.
*/
public void toBack()
{
if (peer != null)
{
- WindowPeer wp = (WindowPeer) peer;
- wp.toBack();
+ if( alwaysOnTop )
+ setAlwaysOnTop( false );
+ ( (WindowPeer) peer ).toBack();
}
}
@@ -437,10 +443,7 @@
public void toFront()
{
if (peer != null)
- {
- WindowPeer wp = (WindowPeer) peer;
- wp.toFront();
- }
+ ( (WindowPeer) peer ).toFront();
}
/**
@@ -1236,6 +1239,55 @@
}
/**
+ * Returns whether the Windows is an always-on-top window,
+ * meaning whether the window can be obscured by other windows or not.
+ *
+ * @return <code>true</code> if the windows is always-on-top,
+ * <code>false</code> otherwise.
+ * @since 1.5
+ */
+ public final boolean isAlwaysOnTop()
+ {
+ return alwaysOnTop;
+ }
+
+ /**
+ * Sets the always-on-top state of this window (if supported).
+ *
+ * Setting a window to always-on-top means it will not be obscured
+ * by any other windows (with the exception of other always-on-top
+ * windows). Not all platforms may support this.
+ *
+ * If an window's always-on-top status is changed to false, the window
+ * will remain at the front but not be anchored there.
+ *
+ * Calling toBack() on an always-on-top window will change its
+ * always-on-top status to false.
+ *
+ * @since 1.5
+ */
+ public final void setAlwaysOnTop(boolean alwaysOnTop)
+ {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null)
+ sm.checkPermission( new AWTPermission("setWindowAlwaysOnTop") );
+
+ if( this.alwaysOnTop == alwaysOnTop )
+ return;
+
+ if( alwaysOnTop )
+ toFront();
+
+ firePropertyChange("alwaysOnTop", this.alwaysOnTop, alwaysOnTop );
+ this.alwaysOnTop = alwaysOnTop;
+
+ if (peer != null)
+ ( (WindowPeer) peer).updateAlwaysOnTop();
+ else
+ System.out.println("Null peer?!");
+ }
+
+ /**
* Generate a unique name for this window.
*
* @return A unique name for this window.
Index: java/awt/peer/WindowPeer.java
===================================================================
RCS file: /sources/classpath/classpath/java/awt/peer/WindowPeer.java,v
retrieving revision 1.10
diff -U3 -r1.10 WindowPeer.java
--- java/awt/peer/WindowPeer.java 19 Aug 2005 01:29:26 -0000 1.10
+++ java/awt/peer/WindowPeer.java 15 Jul 2006 07:41:21 -0000
@@ -1,5 +1,5 @@
/* WindowPeer.java -- Interface for window peers
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -44,7 +44,8 @@
void toFront();
/**
- * FIXME: unknown.
+ * Update the always-on-top status of the Window.
+ *
* @since 1.5
*/
void updateAlwaysOnTop();
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c
===================================================================
RCS file: /sources/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c,v
retrieving revision 1.6
diff -U3 -r1.6 gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c 6 Jun 2006 10:04:15 -0000 1.6
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c 15 Jul 2006 07:41:22 -0000
@@ -241,3 +241,35 @@
return defaultDevice;
}
+
+JNIEXPORT jintArray JNICALL
+Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_getMouseCoordinates
+(JNIEnv *env, jobject obj)
+{
+ jintArray retArray;
+ jint *values;
+ GdkDisplay *display;
+ gint x, y, screenIndex;
+ GdkScreen *screen;
+
+ display = (GdkDisplay *) NSA_GET_DISPLAY_PTR(env, obj);
+ g_assert (display != NULL);
+
+ gdk_threads_enter ();
+
+ gdk_display_get_pointer (display, &screen, &x, &y, NULL);
+ screenIndex = gdk_screen_get_number( screen );
+
+ gdk_threads_leave ();
+
+ retArray = (*env)->NewIntArray (env, 3);
+ values = (*env)->GetIntArrayElements (env, retArray, NULL);
+
+ values[0] = screenIndex;
+ values[1] = x;
+ values[2] = y;
+
+ (*env)->ReleaseIntArrayElements (env, retArray, values, 0);
+
+ return retArray;
+}
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
===================================================================
RCS file: /sources/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c,v
retrieving revision 1.26
diff -U3 -r1.26 gnu_java_awt_peer_gtk_GtkToolkit.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c 25 May 2006 15:29:36 -0000 1.26
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c 15 Jul 2006 07:41:22 -0000
@@ -387,6 +387,37 @@
return res;
}
+/**
+ * Report the number of mouse buttons
+ * Returns the number of buttons of the first mouse found, or -1 if no mouse
+ * seems to be connected.
+ */
+JNIEXPORT jint JNICALL
+Java_gnu_java_awt_peer_gtk_GtkToolkit_getMouseNumberOfButtons
+ (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)))
+{
+ jint res = -1;
+ GList *devices;
+ GdkDevice *d;
+
+ gdk_threads_enter ();
+
+ // FIXME: Why doesn't this return the correct number?
+ devices = gdk_devices_list();
+
+ while( res == -1 && devices != NULL )
+ {
+ d = GDK_DEVICE( devices->data );
+ if( d->source == GDK_SOURCE_MOUSE )
+ res = d->num_keys;
+ devices = devices->next;
+ }
+
+ gdk_threads_leave ();
+
+ return res;
+}
+
#define CONVERT(type, state) \
gdk_color_to_java_color (style->type[GTK_STATE_ ## state])
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
===================================================================
RCS file: /sources/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,v
retrieving revision 1.67
diff -U3 -r1.67 gnu_java_awt_peer_gtk_GtkWindowPeer.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 18 Jun 2006 03:45:28 -0000 1.67
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 15 Jul 2006 07:41:22 -0000
@@ -1245,6 +1245,21 @@
}
JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkWindowPeer_gtkWindowSetAlwaysOnTop
+ (JNIEnv *env, jobject obj, jboolean alwaysOnTop)
+{
+ void *ptr;
+
+ gdk_threads_enter ();
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ gtk_window_set_keep_above (GTK_WINDOW (ptr), alwaysOnTop);
+
+ gdk_threads_leave ();
+}
+
+JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setVisibleNative
(JNIEnv *env, jobject obj, jboolean visible)
{