39 |
#include "gtkpeer.h" |
#include "gtkpeer.h" |
40 |
#include "gnu_java_awt_peer_gtk_GtkButtonPeer.h" |
#include "gnu_java_awt_peer_gtk_GtkButtonPeer.h" |
41 |
|
|
42 |
static gboolean focus_in_cb (GtkWidget *widget, |
static jmethodID beginNativeRepaintID; |
43 |
GdkEventFocus *event, |
static jmethodID endNativeRepaintID; |
44 |
jobject peer); |
|
45 |
static gboolean focus_out_cb (GtkWidget *widget, |
void |
46 |
GdkEventFocus *event, |
cp_gtk_button_init_jni (void) |
47 |
jobject peer); |
{ |
48 |
|
jclass gtkbuttonpeer; |
49 |
|
|
50 |
|
gtkbuttonpeer = (*cp_gtk_gdk_env())->FindClass (cp_gtk_gdk_env(), |
51 |
|
"gnu/java/awt/peer/gtk/GtkButtonPeer"); |
52 |
|
|
53 |
|
beginNativeRepaintID = (*cp_gtk_gdk_env())->GetMethodID (cp_gtk_gdk_env(), gtkbuttonpeer, |
54 |
|
"beginNativeRepaint", |
55 |
|
"()V"); |
56 |
|
|
57 |
|
endNativeRepaintID = (*cp_gtk_gdk_env())->GetMethodID (cp_gtk_gdk_env(), gtkbuttonpeer, |
58 |
|
"endNativeRepaint", "()V"); |
59 |
|
} |
60 |
|
|
61 |
static void block_expose_event_cb (GtkWidget *widget, |
static void block_expose_event_cb (GtkWidget *widget, |
62 |
jobject peer); |
jobject peer); |
101 |
|
|
102 |
button = gtk_bin_get_child (GTK_BIN (ptr)); |
button = gtk_bin_get_child (GTK_BIN (ptr)); |
103 |
|
|
104 |
g_signal_connect (G_OBJECT (ptr), "event", |
/* Button signals */ |
|
G_CALLBACK (pre_event_handler), *gref); |
|
|
|
|
|
g_signal_connect (G_OBJECT (button), "event", |
|
|
G_CALLBACK (pre_event_handler), *gref); |
|
|
|
|
|
g_signal_connect (G_OBJECT (button), "focus-in-event", |
|
|
G_CALLBACK (focus_in_cb), *gref); |
|
|
|
|
|
g_signal_connect (G_OBJECT (button), "focus-out-event", |
|
|
G_CALLBACK (focus_out_cb), *gref); |
|
|
|
|
105 |
g_signal_connect_after (G_OBJECT (button), "pressed", |
g_signal_connect_after (G_OBJECT (button), "pressed", |
106 |
G_CALLBACK (block_expose_event_cb), *gref); |
G_CALLBACK (block_expose_event_cb), *gref); |
107 |
|
|
108 |
g_signal_connect_after (G_OBJECT (button), "released", |
g_signal_connect_after (G_OBJECT (button), "released", |
109 |
G_CALLBACK (block_expose_event_cb), *gref); |
G_CALLBACK (block_expose_event_cb), *gref); |
110 |
|
|
111 |
|
/* Component signals */ |
112 |
|
cp_gtk_component_connect_signals (G_OBJECT (button), gref); |
113 |
|
|
114 |
gdk_threads_leave (); |
gdk_threads_leave (); |
115 |
} |
} |
116 |
|
|
158 |
label = gtk_bin_get_child (GTK_BIN (button)); |
label = gtk_bin_get_child (GTK_BIN (button)); |
159 |
|
|
160 |
font_desc = pango_font_description_from_string (font_name); |
font_desc = pango_font_description_from_string (font_name); |
161 |
pango_font_description_set_size (font_desc, size * dpi_conversion_factor); |
pango_font_description_set_size (font_desc, |
162 |
|
size * cp_gtk_dpi_conversion_factor); |
163 |
|
|
164 |
if (style & AWT_STYLE_BOLD) |
if (style & AWT_STYLE_BOLD) |
165 |
pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD); |
pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD); |
317 |
gdk_threads_leave (); |
gdk_threads_leave (); |
318 |
} |
} |
319 |
|
|
|
static gboolean |
|
|
focus_in_cb (GtkWidget *widget __attribute((unused)), |
|
|
GdkEventFocus *event __attribute((unused)), |
|
|
jobject peer) |
|
|
{ |
|
|
gdk_threads_leave (); |
|
|
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
|
|
postFocusEventID, |
|
|
AWT_FOCUS_GAINED, |
|
|
JNI_FALSE); |
|
|
gdk_threads_enter (); |
|
|
return FALSE; |
|
|
} |
|
|
|
|
|
static gboolean |
|
|
focus_out_cb (GtkWidget *widget __attribute((unused)), |
|
|
GdkEventFocus *event __attribute((unused)), |
|
|
jobject peer) |
|
|
{ |
|
|
gdk_threads_leave (); |
|
|
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
|
|
postFocusEventID, |
|
|
AWT_FOCUS_LOST, |
|
|
JNI_FALSE); |
|
|
gdk_threads_enter (); |
|
|
return FALSE; |
|
|
} |
|
|
|
|
320 |
static void |
static void |
321 |
block_expose_event_cb (GtkWidget *widget, jobject peer) |
block_expose_event_cb (GtkWidget *widget, jobject peer) |
322 |
{ |
{ |
323 |
gdk_threads_leave (); |
gdk_threads_leave (); |
324 |
|
|
325 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
(*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, |
326 |
beginNativeRepaintID); |
beginNativeRepaintID); |
327 |
|
|
328 |
gdk_threads_enter (); |
gdk_threads_enter (); |
331 |
|
|
332 |
gdk_threads_leave (); |
gdk_threads_leave (); |
333 |
|
|
334 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
(*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, |
335 |
endNativeRepaintID); |
endNativeRepaintID); |
336 |
|
|
337 |
gdk_threads_enter (); |
gdk_threads_enter (); |