示例#1
0
文件: rut-interfaces.c 项目: cee1/rig
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);
}
示例#2
0
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);
}
示例#3
0
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);
}
示例#4
0
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);
}
示例#5
0
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);
}
示例#6
0
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);
}
示例#7
0
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);
}