


# gtk-event.pkg
# Compiled by:
# src/lib/std/standard.libpackage gtk_event {
#
exception GTK_ERROR String;
Widget = Int;
Modifier
= SHIFT_MODIFIER
| LOCK_MODIFIER
| CONTROL_MODIFIER
| MOD1_MODIFIER
| MOD2_MODIFIER
| MOD3_MODIFIER
| MOD4_MODIFIER
| MOD5_MODIFIER
| BUTTON1_MODIFIER
| BUTTON2_MODIFIER
| BUTTON3_MODIFIER
| BUTTON4_MODIFIER
| BUTTON5_MODIFIER
| SUPER_MODIFIER
| HYPER_MODIFIER
| META_MODIFIER
;
Motion_Event # http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventMotion
=
{ window: Widget,
time: Int,
x: Float,
y: Float,
modifiers: List( Modifier ),
is_hint: Bool
};
Button_Event # http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventButton
=
{ window: Widget,
button: Int,
x: Float,
y: Float,
time: Int,
modifiers: List( Modifier )
};
Key_Event # http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventKey
=
{ key: Int,
keycode: Int,
time: Int,
modifiers: List( Modifier )
};
Expose_Event # http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventExpose
=
{ window: Widget,
count: Int,
x: Int,
y: Int,
wide: Int,
high: Int
};
Configure_Event # http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventConfigure
=
{ window: Widget,
x: Int,
y: Int,
wide: Int,
high: Int
};
Allocation
=
{ x: Int,
y: Int,
wide: Int,
high: Int
};
# Break out a C-style GdkModifierType bitbag http://library.gnome.org/devel/gdk/stable/gdk-Windows.html#GdkModifierType
# into a more Mythryl-ish list:
#
fun int_to_modifier_list bits
=
{ fun bit n
=
(bits & (1 << n)) != 0;
result = [];
result = bit 28 ?? META_MODIFIER ! result :: result;
result = bit 27 ?? HYPER_MODIFIER ! result :: result;
result = bit 26 ?? SUPER_MODIFIER ! result :: result;
result = bit 12 ?? BUTTON5_MODIFIER ! result :: result;
result = bit 11 ?? BUTTON4_MODIFIER ! result :: result;
result = bit 10 ?? BUTTON3_MODIFIER ! result :: result;
result = bit 9 ?? BUTTON2_MODIFIER ! result :: result;
result = bit 8 ?? BUTTON1_MODIFIER ! result :: result;
result = bit 7 ?? MOD5_MODIFIER ! result :: result;
result = bit 6 ?? MOD4_MODIFIER ! result :: result;
result = bit 5 ?? MOD3_MODIFIER ! result :: result;
result = bit 4 ?? MOD2_MODIFIER ! result :: result;
result = bit 3 ?? MOD1_MODIFIER ! result :: result;
result = bit 2 ?? CONTROL_MODIFIER ! result :: result;
result = bit 1 ?? LOCK_MODIFIER ! result :: result;
result = bit 0 ?? SHIFT_MODIFIER ! result :: result;
result;
};
};


