diff options
author | Thomas Fitzsimmons <fitzsim@redhat.com> | 2005-06-09 22:48:00 +0000 |
---|---|---|
committer | Thomas Fitzsimmons <fitzsim@redhat.com> | 2005-06-09 22:48:00 +0000 |
commit | b4f05dd9f1613f9100c2cd56a6b1e0c39a514e8c (patch) | |
tree | f331167f6748f3cd0f64e4dba3a9fe475bf5f659 | |
parent | 3f74c0ac33151fdb2d24064d4daa492634751d42 (diff) | |
download | classpath-b4f05dd9f1613f9100c2cd56a6b1e0c39a514e8c.tar.gz |
2005-06-09 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkPanelPeer.java,
gnu_java_awt_peer_gtk_GtkPanelPeer.c (connectSignals): New method.
* include/gnu_java_awt_peer_gtk_GtkPanelPeer.h: Regenerate.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(window_focus_in_cb, window_focus_out_cb): Remove FIXMEs.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GtkPanelPeer.java | 2 | ||||
-rw-r--r-- | include/gnu_java_awt_peer_gtk_GtkPanelPeer.h | 1 | ||||
-rw-r--r-- | native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c | 53 | ||||
-rw-r--r-- | native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c | 4 |
5 files changed, 61 insertions, 5 deletions
@@ -1,5 +1,11 @@ 2005-06-09 Thomas Fitzsimmons <fitzsim@redhat.com> + * gnu/java/awt/peer/gtk/GtkPanelPeer.java, + gnu_java_awt_peer_gtk_GtkPanelPeer.c (connectSignals): New method. + * include/gnu_java_awt_peer_gtk_GtkPanelPeer.h: Regenerate. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c + (window_focus_in_cb, window_focus_out_cb): Remove FIXMEs. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c (copyState): Check if cairo pattern is null before copying it. (drawPixels): Check if cairo pattern is null before retrieving it. diff --git a/gnu/java/awt/peer/gtk/GtkPanelPeer.java b/gnu/java/awt/peer/gtk/GtkPanelPeer.java index fbdfcf472..fb2d4274a 100644 --- a/gnu/java/awt/peer/gtk/GtkPanelPeer.java +++ b/gnu/java/awt/peer/gtk/GtkPanelPeer.java @@ -65,4 +65,6 @@ public class GtkPanelPeer extends GtkContainerPeer } super.handleEvent (event); } + + native void connectSignals (); } diff --git a/include/gnu_java_awt_peer_gtk_GtkPanelPeer.h b/include/gnu_java_awt_peer_gtk_GtkPanelPeer.h index 19643a455..7498a97d9 100644 --- a/include/gnu_java_awt_peer_gtk_GtkPanelPeer.h +++ b/include/gnu_java_awt_peer_gtk_GtkPanelPeer.h @@ -11,6 +11,7 @@ extern "C" #endif JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPanelPeer_create (JNIEnv *env, jobject); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPanelPeer_connectSignals (JNIEnv *env, jobject); #ifdef __cplusplus } diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c index f432baf0c..74016cc4e 100644 --- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c +++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c @@ -40,6 +40,13 @@ exception statement from your version. */ #include "gnu_java_awt_peer_gtk_GtkComponentPeer.h" #include "gnu_java_awt_peer_gtk_GtkPanelPeer.h" +static gboolean panel_focus_in_cb (GtkWidget * widget, + GdkEventFocus *event, + jobject peer); +static gboolean panel_focus_out_cb (GtkWidget * widget, + GdkEventFocus *event, + jobject peer); + JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPanelPeer_create (JNIEnv *env, jobject obj) @@ -49,7 +56,7 @@ Java_gnu_java_awt_peer_gtk_GtkPanelPeer_create NSA_SET_GLOBAL_REF (env, obj); gdk_threads_enter (); - + widget = gtk_fixed_new (); gtk_fixed_set_has_window (GTK_FIXED (widget), TRUE); @@ -60,3 +67,47 @@ Java_gnu_java_awt_peer_gtk_GtkPanelPeer_create NSA_SET_PTR (env, obj, widget); } + +JNIEXPORT void JNICALL +Java_gnu_java_awt_peer_gtk_GtkPanelPeer_connectSignals + (JNIEnv *env, jobject obj) +{ + void *ptr; + jobject *gref; + + ptr = NSA_GET_PTR (env, obj); + gref = NSA_GET_GLOBAL_REF (env, obj); + + gdk_threads_enter (); + + g_signal_connect (GTK_OBJECT (ptr), "event", + G_CALLBACK (pre_event_handler), *gref); + + g_signal_connect (G_OBJECT (ptr), "focus-in-event", + G_CALLBACK (panel_focus_in_cb), *gref); + + g_signal_connect (G_OBJECT (ptr), "focus-out-event", + G_CALLBACK (panel_focus_out_cb), *gref); + + g_signal_connect_after (G_OBJECT (ptr), "realize", + G_CALLBACK (connect_awt_hook_cb), *gref); + + gdk_threads_leave (); +} + +static gboolean +panel_focus_in_cb (GtkWidget * widget __attribute__((unused)), + GdkEventFocus *event __attribute__((unused)), + jobject peer __attribute__((unused))) +{ + return TRUE; +} + +static gboolean +panel_focus_out_cb (GtkWidget * widget __attribute__((unused)), + GdkEventFocus *event __attribute__((unused)), + jobject peer __attribute__((unused))) +{ + return TRUE; +} + diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c index 318b13ad1..49e88a1c2 100644 --- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c +++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c @@ -561,8 +561,6 @@ window_focus_in_cb (GtkWidget * widget __attribute__((unused)), postWindowEventID, (jint) AWT_WINDOW_GAINED_FOCUS, (jobject) NULL, (jint) 0); - /* FIXME: somewhere after this is handled, the child window is - getting an expose event. */ gdk_threads_enter (); return FALSE; } @@ -577,8 +575,6 @@ window_focus_out_cb (GtkWidget * widget __attribute__((unused)), postWindowEventID, (jint) AWT_WINDOW_LOST_FOCUS, (jobject) NULL, (jint) 0); - /* FIXME: somewhere after this is handled, the child window is - getting an expose event. */ gdk_threads_enter (); return FALSE; } |