static void analog_clock_destroy(Analog_Clock *analog_clock) { /* We are an animated object -- special case ! */ dynobj_list_remove_object(&analog_clock->element.object); element_destroy(&analog_clock->element); }
/*! * \brief Remove an object from a layer. * @param layer The layer to remove the object from. * @param obj The object to remove. * \memberof _Layer */ void layer_remove_object(Layer *layer, DiaObject *obj) { /* send a signal that we'll remove a object from the diagram */ data_emit (layer_get_parent_diagram(layer), layer, obj, "object_remove"); layer->objects = g_list_remove(layer->objects, obj); dynobj_list_remove_object(obj); set_parent_layer(obj, NULL); }
/*! * \brief Swaps a list of objects with a single object * * This function exchanges the given object with the list of objects. * Ownership of remove_obj and insert_list objects is swapped, too. * * \memberof _Layer */ void layer_replace_object_with_list(Layer *layer, DiaObject *remove_obj, GList *insert_list) { GList *list, *il; list = g_list_find(layer->objects, remove_obj); g_assert(list!=NULL); dynobj_list_remove_object(remove_obj); data_emit (layer_get_parent_diagram(layer), layer, remove_obj, "object_remove"); set_parent_layer(remove_obj, NULL); g_list_foreach(insert_list, set_parent_layer, layer); if (list->prev == NULL) { layer->objects = insert_list; } else { list->prev->next = insert_list; insert_list->prev = list->prev; } if (list->next != NULL) { GList *last; last = g_list_last(insert_list); last->next = list->next; list->next->prev = last; } il = insert_list; while (il) { data_emit (layer_get_parent_diagram(layer), layer, il->data, "object_add"); il = g_list_next(il); } g_list_free_1(list); /* with transformed groups the list and the single object are not necessarily * of the same size */ layer_update_extents (layer); }
static void layer_remove_dynobj(gpointer obj, gpointer userdata) { dynobj_list_remove_object((DiaObject*)obj); }