Skip to content
Snippets Groups Projects
Commit f2919ef3 authored by David Jee's avatar David Jee Committed by David Jee
Browse files

2004-01-27 David Jee <djee@redhat.com>

	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
	(addExposeFilter): Handle GtkFramePeer separately.
	(removeExposeFilter): Likewise.

From-SVN: r76751
parent 39e453d7
No related branches found
No related tags found
No related merge requests found
2004-01-27 David Jee <djee@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
(addExposeFilter): Handle GtkFramePeer separately.
(removeExposeFilter): Likewise.
2004-01-27 Michael Koch <konqueror@gmx.de> 2004-01-27 Michael Koch <konqueror@gmx.de>
* gnu/java/net/protocol/http/Connection.java * gnu/java/net/protocol/http/Connection.java
......
...@@ -602,11 +602,38 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_addExposeFilt ...@@ -602,11 +602,38 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_addExposeFilt
void *ptr = NSA_GET_PTR (env, obj); void *ptr = NSA_GET_PTR (env, obj);
jobject *gref = NSA_GET_GLOBAL_REF (env, obj); jobject *gref = NSA_GET_GLOBAL_REF (env, obj);
g_assert (gref); g_assert (gref);
GtkObject *filterobj;
GtkWidget *vbox, *layout;
GList *children;
gdk_threads_enter (); gdk_threads_enter ();
g_signal_handlers_block_by_func (GTK_OBJECT(ptr), *pre_event_handler, *gref); // GtkFramePeer is built as a GtkLayout inside a GtkVBox inside a GtkWindow.
g_signal_connect( GTK_OBJECT(ptr), "event", // Events go to the GtkLayout layer, so we filter them there.
if (GTK_IS_WINDOW(ptr))
{
children = gtk_container_get_children(GTK_CONTAINER(ptr));
vbox = children->data;
g_assert (GTK_IS_VBOX(vbox));
children = gtk_container_get_children(GTK_CONTAINER(vbox));
do
{
layout = children->data;
children = children->next;
}
while (!GTK_IS_LAYOUT (layout) && children != NULL);
g_assert (GTK_IS_LAYOUT(layout));
filterobj = GTK_OBJECT(layout);
}
else
{
filterobj = GTK_OBJECT(ptr);
}
g_signal_handlers_block_by_func (filterobj, *pre_event_handler, *gref);
g_signal_connect( filterobj, "event",
G_CALLBACK(filter_expose_event_handler), *gref); G_CALLBACK(filter_expose_event_handler), *gref);
gdk_threads_leave (); gdk_threads_leave ();
...@@ -618,12 +645,39 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_removeExposeF ...@@ -618,12 +645,39 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_removeExposeF
void *ptr = NSA_GET_PTR (env, obj); void *ptr = NSA_GET_PTR (env, obj);
jobject *gref = NSA_GET_GLOBAL_REF (env, obj); jobject *gref = NSA_GET_GLOBAL_REF (env, obj);
g_assert (gref); g_assert (gref);
GtkObject *filterobj;
GtkWidget *vbox, *layout;
GList *children;
gdk_threads_enter (); gdk_threads_enter ();
g_signal_handlers_disconnect_by_func (GTK_OBJECT(ptr), // GtkFramePeer is built as a GtkLayout inside a GtkVBox inside a GtkWindow.
// Events go to the GtkLayout layer, so we filter them there.
if (GTK_IS_WINDOW(ptr))
{
children = gtk_container_get_children(GTK_CONTAINER(ptr));
vbox = children->data;
g_assert (GTK_IS_VBOX(vbox));
children = gtk_container_get_children(GTK_CONTAINER(vbox));
do
{
layout = children->data;
children = children->next;
}
while (!GTK_IS_LAYOUT (layout) && children != NULL);
g_assert (GTK_IS_LAYOUT(layout));
filterobj = GTK_OBJECT(layout);
}
else
{
filterobj = GTK_OBJECT(ptr);
}
g_signal_handlers_disconnect_by_func (filterobj,
*filter_expose_event_handler, *gref); *filter_expose_event_handler, *gref);
g_signal_handlers_unblock_by_func (GTK_OBJECT(ptr), *pre_event_handler, *gref); g_signal_handlers_unblock_by_func (filterobj, *pre_event_handler, *gref);
gdk_threads_leave (); gdk_threads_leave ();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment