952 |
|
|
953 |
if (event->keyval == GDK_Shift_L |
if (event->keyval == GDK_Shift_L |
954 |
|| event->keyval == GDK_Shift_R) |
|| event->keyval == GDK_Shift_R) |
955 |
result |= AWT_SHIFT_DOWN_MASK; |
result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK; |
956 |
else |
else |
957 |
{ |
{ |
958 |
if (state & GDK_SHIFT_MASK) |
if (state & GDK_SHIFT_MASK) |
959 |
result |= AWT_SHIFT_DOWN_MASK; |
result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK; |
960 |
} |
} |
961 |
|
|
962 |
if (event->keyval == GDK_Control_L |
if (event->keyval == GDK_Control_L |
963 |
|| event->keyval == GDK_Control_R) |
|| event->keyval == GDK_Control_R) |
964 |
result |= AWT_CTRL_DOWN_MASK; |
result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK; |
965 |
else |
else |
966 |
{ |
{ |
967 |
if (state & GDK_CONTROL_MASK) |
if (state & GDK_CONTROL_MASK) |
968 |
result |= AWT_CTRL_DOWN_MASK; |
result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK; |
969 |
} |
} |
970 |
|
|
971 |
if (event->keyval == GDK_Alt_L |
if (event->keyval == GDK_Alt_L |
972 |
|| event->keyval == GDK_Alt_R) |
|| event->keyval == GDK_Alt_R) |
973 |
result |= AWT_ALT_DOWN_MASK; |
result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK; |
974 |
else |
else |
975 |
{ |
{ |
976 |
if (state & GDK_MOD1_MASK) |
if (state & GDK_MOD1_MASK) |
977 |
result |= AWT_ALT_DOWN_MASK; |
result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK; |
978 |
} |
} |
979 |
} |
} |
980 |
else if (event->type == GDK_KEY_RELEASE) |
else if (event->type == GDK_KEY_RELEASE) |
985 |
&& event->keyval != GDK_Shift_R) |
&& event->keyval != GDK_Shift_R) |
986 |
{ |
{ |
987 |
if (state & GDK_SHIFT_MASK) |
if (state & GDK_SHIFT_MASK) |
988 |
result |= AWT_SHIFT_DOWN_MASK; |
result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK; |
989 |
} |
} |
990 |
if (event->keyval != GDK_Control_L |
if (event->keyval != GDK_Control_L |
991 |
&& event->keyval != GDK_Control_R) |
&& event->keyval != GDK_Control_R) |
992 |
{ |
{ |
993 |
if (state & GDK_CONTROL_MASK) |
if (state & GDK_CONTROL_MASK) |
994 |
result |= AWT_CTRL_DOWN_MASK; |
result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK; |
995 |
} |
} |
996 |
|
|
997 |
if (event->keyval != GDK_Alt_L |
if (event->keyval != GDK_Alt_L |
998 |
&& event->keyval != GDK_Alt_R) |
&& event->keyval != GDK_Alt_R) |
999 |
{ |
{ |
1000 |
if (state & GDK_MOD1_MASK) |
if (state & GDK_MOD1_MASK) |
1001 |
result |= AWT_ALT_DOWN_MASK; |
result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK; |
1002 |
} |
} |
1003 |
} |
} |
1004 |
|
|
1028 |
static void window_destroy_cb (GtkWidget *widget, GdkEvent *event, |
static void window_destroy_cb (GtkWidget *widget, GdkEvent *event, |
1029 |
jobject peer); |
jobject peer); |
1030 |
static void window_show_cb (GtkWidget *widget, jobject peer); |
static void window_show_cb (GtkWidget *widget, jobject peer); |
|
static void window_active_state_change_cb (GtkWidget *widget, |
|
|
GParamSpec *pspec, |
|
|
jobject peer); |
|
1031 |
static void window_focus_state_change_cb (GtkWidget *widget, |
static void window_focus_state_change_cb (GtkWidget *widget, |
1032 |
GParamSpec *pspec, |
GParamSpec *pspec, |
1033 |
jobject peer); |
jobject peer); |
1040 |
static gboolean window_window_state_cb (GtkWidget *widget, |
static gboolean window_window_state_cb (GtkWidget *widget, |
1041 |
GdkEvent *event, |
GdkEvent *event, |
1042 |
jobject peer); |
jobject peer); |
|
static jint window_get_new_state (GtkWidget *widget); |
|
1043 |
static gboolean window_property_changed_cb (GtkWidget *widget, |
static gboolean window_property_changed_cb (GtkWidget *widget, |
1044 |
GdkEventProperty *event, |
GdkEventProperty *event, |
1045 |
jobject peer); |
jobject peer); |
1274 |
g_signal_connect (G_OBJECT (ptr), "show", |
g_signal_connect (G_OBJECT (ptr), "show", |
1275 |
G_CALLBACK (window_show_cb), *gref); |
G_CALLBACK (window_show_cb), *gref); |
1276 |
|
|
|
g_signal_connect (G_OBJECT (ptr), "notify::is-active", |
|
|
G_CALLBACK (window_active_state_change_cb), *gref); |
|
|
|
|
1277 |
g_signal_connect (G_OBJECT (ptr), "notify::has-toplevel-focus", |
g_signal_connect (G_OBJECT (ptr), "notify::has-toplevel-focus", |
1278 |
G_CALLBACK (window_focus_state_change_cb), *gref); |
G_CALLBACK (window_focus_state_change_cb), *gref); |
1279 |
|
|
1585 |
} |
} |
1586 |
|
|
1587 |
static void |
static void |
|
window_active_state_change_cb (GtkWidget *widget __attribute__((unused)), |
|
|
GParamSpec *pspec __attribute__((unused)), |
|
|
jobject peer __attribute__((unused))) |
|
|
{ |
|
|
/* FIXME: not sure if this is needed or not. */ |
|
|
/* Remove the unused attributes if you fix the below. */ |
|
|
#if 0 |
|
|
gdk_threads_leave (); |
|
|
|
|
|
if (GTK_WINDOW (widget)->is_active) |
|
|
(*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, |
|
|
postWindowEventID, |
|
|
(jint) AWT_WINDOW_GAINED_FOCUS, |
|
|
(jobject) NULL, (jint) 0); |
|
|
else |
|
|
(*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, |
|
|
postWindowEventID, |
|
|
(jint) AWT_WINDOW_DEACTIVATED, |
|
|
(jobject) NULL, (jint) 0); |
|
|
|
|
|
gdk_threads_enter (); |
|
|
#endif |
|
|
} |
|
|
|
|
|
static void |
|
1588 |
window_focus_state_change_cb (GtkWidget *widget, |
window_focus_state_change_cb (GtkWidget *widget, |
1589 |
GParamSpec *pspec __attribute__((unused)), |
GParamSpec *pspec __attribute__((unused)), |
1590 |
jobject peer) |
jobject peer) |
1628 |
} |
} |
1629 |
|
|
1630 |
static gboolean |
static gboolean |
1631 |
window_window_state_cb (GtkWidget *widget, |
window_window_state_cb (GtkWidget *widget __attribute__((unused)), |
1632 |
GdkEvent *event, |
GdkEvent *event, |
1633 |
jobject peer) |
jobject peer) |
1634 |
{ |
{ |
1663 |
if (event->window_state.new_window_state & GDK_WINDOW_STATE_ICONIFIED) |
if (event->window_state.new_window_state & GDK_WINDOW_STATE_ICONIFIED) |
1664 |
new_state |= AWT_FRAME_STATE_ICONIFIED; |
new_state |= AWT_FRAME_STATE_ICONIFIED; |
1665 |
|
|
|
new_state |= window_get_new_state (widget); |
|
|
|
|
1666 |
(*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, |
(*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, |
1667 |
postWindowEventID, |
postWindowEventID, |
1668 |
(jint) AWT_WINDOW_STATE_CHANGED, |
(jint) AWT_WINDOW_STATE_CHANGED, |
1671 |
return TRUE; |
return TRUE; |
1672 |
} |
} |
1673 |
|
|
|
static jint |
|
|
window_get_new_state (GtkWidget *widget) |
|
|
{ |
|
|
GdkDisplay *display = gtk_widget_get_display(widget); |
|
|
jint new_state = AWT_FRAME_STATE_NORMAL; |
|
|
Atom type; |
|
|
gint format; |
|
|
gulong atom_count; |
|
|
gulong bytes_after; |
|
|
Atom *atom_list = NULL; |
|
|
union atom_list_union alu; |
|
|
gulong i; |
|
|
|
|
|
alu.atom_list = &atom_list; |
|
|
XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), |
|
|
GDK_WINDOW_XID (widget->window), |
|
|
gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE"), |
|
|
0, G_MAXLONG, False, XA_ATOM, &type, &format, &atom_count, |
|
|
&bytes_after, alu.gu_extents); |
|
|
|
|
|
if (type != None) |
|
|
{ |
|
|
Atom maxvert = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE_MAXIMIZED_VERT"); |
|
|
Atom maxhorz = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE_MAXIMIZED_HORZ"); |
|
|
|
|
|
i = 0; |
|
|
while (i < atom_count) |
|
|
{ |
|
|
if (atom_list[i] == maxhorz) |
|
|
new_state |= AWT_FRAME_STATE_MAXIMIZED_HORIZ; |
|
|
else if (atom_list[i] == maxvert) |
|
|
new_state |= AWT_FRAME_STATE_MAXIMIZED_VERT; |
|
|
|
|
|
++i; |
|
|
} |
|
|
|
|
|
XFree (atom_list); |
|
|
} |
|
|
return new_state; |
|
|
} |
|
|
|
|
1674 |
static gboolean |
static gboolean |
1675 |
window_property_changed_cb (GtkWidget *widget __attribute__((unused)), |
window_property_changed_cb (GtkWidget *widget __attribute__((unused)), |
1676 |
GdkEventProperty *event, |
GdkEventProperty *event, |