40 |
#include "gnu_java_awt_peer_gtk_GtkComponentPeer.h" |
#include "gnu_java_awt_peer_gtk_GtkComponentPeer.h" |
41 |
#include <gtk/gtkprivate.h> |
#include <gtk/gtkprivate.h> |
42 |
|
|
43 |
|
static GtkWidget *find_fg_color_widget (GtkWidget *widget); |
44 |
|
static GtkWidget *find_bg_color_widget (GtkWidget *widget); |
45 |
|
|
46 |
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkGenericPeer_dispose |
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkGenericPeer_dispose |
47 |
(JNIEnv *env, jobject obj) |
(JNIEnv *env, jobject obj) |
48 |
{ |
{ |
302 |
|
|
303 |
gdk_threads_enter (); |
gdk_threads_enter (); |
304 |
|
|
305 |
widget = GTK_WIDGET (ptr); |
widget = find_bg_color_widget (GTK_WIDGET (ptr)); |
306 |
|
|
307 |
gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &normal_color); |
gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &normal_color); |
308 |
gtk_widget_modify_bg (widget, GTK_STATE_ACTIVE, &active_color); |
gtk_widget_modify_bg (widget, GTK_STATE_ACTIVE, &active_color); |
327 |
|
|
328 |
gdk_threads_enter (); |
gdk_threads_enter (); |
329 |
|
|
330 |
widget = GTK_WIDGET (ptr); |
widget = find_fg_color_widget (GTK_WIDGET (ptr)); |
331 |
|
|
332 |
gtk_widget_modify_fg (widget, GTK_STATE_NORMAL, &color); |
gtk_widget_modify_fg (widget, GTK_STATE_NORMAL, &color); |
333 |
|
gtk_widget_modify_fg (widget, GTK_STATE_ACTIVE, &color); |
334 |
|
gtk_widget_modify_fg (widget, GTK_STATE_PRELIGHT, &color); |
335 |
|
|
336 |
gdk_threads_leave (); |
gdk_threads_leave (); |
337 |
} |
} |
547 |
connect_awt_hook (env, obj, 1, GTK_WIDGET (ptr)->window); |
connect_awt_hook (env, obj, 1, GTK_WIDGET (ptr)->window); |
548 |
gdk_threads_leave (); |
gdk_threads_leave (); |
549 |
} |
} |
550 |
|
|
551 |
|
static GtkWidget * |
552 |
|
find_fg_color_widget (GtkWidget *widget) |
553 |
|
{ |
554 |
|
GtkWidget *fg_color_widget; |
555 |
|
|
556 |
|
if (GTK_IS_EVENT_BOX (widget)) |
557 |
|
fg_color_widget = gtk_bin_get_child (GTK_BIN(widget)); |
558 |
|
else |
559 |
|
fg_color_widget = widget; |
560 |
|
|
561 |
|
return fg_color_widget; |
562 |
|
} |
563 |
|
|
564 |
|
static GtkWidget * |
565 |
|
find_bg_color_widget (GtkWidget *widget) |
566 |
|
{ |
567 |
|
GtkWidget *bg_color_widget; |
568 |
|
|
569 |
|
if (GTK_IS_WINDOW (widget)) |
570 |
|
{ |
571 |
|
GtkWidget *vbox; |
572 |
|
GList* children; |
573 |
|
|
574 |
|
children = gtk_container_get_children(GTK_CONTAINER(widget)); |
575 |
|
vbox = children->data; |
576 |
|
|
577 |
|
children = gtk_container_get_children(GTK_CONTAINER(vbox)); |
578 |
|
bg_color_widget = children->data; |
579 |
|
} |
580 |
|
else |
581 |
|
bg_color_widget = widget; |
582 |
|
|
583 |
|
return bg_color_widget; |
584 |
|
} |
585 |
|
|