RutClosure * rut_sizable_add_preferred_size_callback (RutObject *object, RutSizablePreferredSizeCallback cb, void *user_data, RutClosureDestroyCallback destroy_cb) { RutSizableVTable *sizable = rut_object_get_vtable (object, RUT_INTERFACE_ID_SIZABLE); /* If the object has no implementation for the needs layout callback * then we'll assume its preferred size never changes. We'll return * a dummy closure object that will never be invoked so that the * rest of the code doesn't need to handle this specially */ if (sizable->add_preferred_size_callback == NULL) { RutList dummy_list; RutClosure *closure; rut_list_init (&dummy_list); closure = rut_closure_list_add (&dummy_list, cb, user_data, destroy_cb); rut_list_init (&closure->list_node); return closure; } else return sizable->add_preferred_size_callback (object, cb, user_data, destroy_cb); }
RutClosure * rig_transition_add_operation_callback (RigTransition *transition, RigTransitionOperationCallback callback, void *user_data, RutClosureDestroyCallback destroy_cb) { return rut_closure_list_add (&transition->operation_cb_list, callback, user_data, destroy_cb); }
RutClosure * rig_selection_tool_add_event_callback (RigSelectionTool *tool, RigSelectionToolEventCallback callback, void *user_data, RutClosureDestroyCallback destroy_cb) { return rut_closure_list_add (&tool->selection_event_cb_list, callback, user_data, destroy_cb); }
RutClosure * rut_shape_add_reshaped_callback (RutShape *shape, RutShapeReShapedCallback callback, void *user_data, RutClosureDestroyCallback destroy_cb) { g_return_val_if_fail (callback != NULL, NULL); return rut_closure_list_add (&shape->reshaped_cb_list, callback, user_data, destroy_cb); }
RutClosure * rut_pointalism_grid_add_update_callback (RutPointalismGrid *grid, RutPointalismGridUpdateCallback callback, void *user_data, RutClosureDestroyCallback destroy_cb) { g_return_val_if_fail (callback != NULL, NULL); return rut_closure_list_add (&grid->updated_cb_list, callback, user_data, destroy_cb); }
RutClosure * rut_icon_button_add_on_click_callback (RutIconButton *button, RutIconButtonClickCallback callback, void *user_data, RutClosureDestroyCallback destroy_cb) { g_return_val_if_fail (callback != NULL, NULL); return rut_closure_list_add (&button->on_click_cb_list, callback, user_data, destroy_cb); }
static RutClosure * rut_bin_add_preferred_size_callback (void *object, RutSizablePreferredSizeCallback cb, void *user_data, RutClosureDestroyCallback destroy) { RutBin *bin = object; return rut_closure_list_add (&bin->preferred_size_cb_list, cb, user_data, destroy); }