summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Fitzsimmons <fitzsim@redhat.com>2005-06-09 22:48:00 +0000
committerThomas Fitzsimmons <fitzsim@redhat.com>2005-06-09 22:48:00 +0000
commitb4f05dd9f1613f9100c2cd56a6b1e0c39a514e8c (patch)
treef331167f6748f3cd0f64e4dba3a9fe475bf5f659
parent3f74c0ac33151fdb2d24064d4daa492634751d42 (diff)
downloadclasspath-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--ChangeLog6
-rw-r--r--gnu/java/awt/peer/gtk/GtkPanelPeer.java2
-rw-r--r--include/gnu_java_awt_peer_gtk_GtkPanelPeer.h1
-rw-r--r--native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c53
-rw-r--r--native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c4
5 files changed, 61 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index cca7983ad..ea2be3377 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
}