2 * Acess2 Window Manager v3
3 * - By John Hodge (thePowersGang)
5 * renderer/widget/common.h
6 * - Widget common definitions
8 #ifndef _RENDERER_WIDGET_COMMON_H
9 #define _RENDERER_WIDGET_COMMON_H
11 #include <renderer_widget.h> // Widget types
13 typedef struct sWidgetDef tWidgetDef;
15 #define WIDGETTYPE_FLAG_NOCHILDREN 0x001
21 void (*Init)(tElement *Ele);
22 void (*Delete)(tElement *Ele);
24 void (*Render)(tWindow *Window, tElement *Ele);
26 void (*UpdateFlags)(tElement *Ele);
27 void (*UpdateSize)(tElement *Ele);
28 void (*UpdateText)(tElement *Ele, const char *Text); // This should update Ele->Text
31 * \name Input handlers
32 * \note Returns boolean unhandled
35 int (*MouseButton)(tElement *Ele, int X, int Y, int Button, int bPressed);
36 int (*MouseMove)(tElement *Ele, int X, int Y);
37 int (*KeyDown)(tElement *Ele, int KeySym, int Character);
38 int (*KeyUp)(tElement *Ele, int KeySym);
39 int (*KeyFire)(tElement *Ele, int KeySym, int Character);
45 extern void Widget_int_SetTypeDef(int Type, tWidgetDef *Def);
46 extern void Widget_UpdateMinDims(tElement *Element);
47 extern void Widget_Fire(tElement *Element);
49 #define DEFWIDGETTYPE(_type, _name, _flags, _attribs...) \
50 tWidgetDef _widget_typedef_##_type = {.Name=_name,.Flags=(_flags),_attribs};\
51 void _widget_set_##_type(void) __attribute__((constructor));\
52 void _widget_set_##_type(void) { _SysDebug("hai!\n"); Widget_int_SetTypeDef(_type, &_widget_typedef_##_type);}