These functions are for limited interacting with widgets.
#define mt_is_widget(widget) ((widget) && *(widget)) typedef void *MT_WIDGET; typedef void (*mt_destroy_func)(void *data); MT_WIDGET *mt_widget_ref(MT_WIDGET *widget); void mt_widget_unref(MT_WIDGET *widget); MT_WIDGET *mt_widget_get_parent(MT_WIDGET *widget, MT_WIDGET *result); void mt_widget_set_data(MT_WIDGET *widget, void *data, mt_destroy_func data_dispose); void *mt_widget_get_data(MT_WIDGET *widget);