void diagram_add_object_list(Diagram *dia, GList *list) { layer_add_objects(dia->data->active_layer, list); diagram_modified(dia); }
static void insert_objects_apply(struct InsertObjectsChange *change, Diagram *dia) { DEBUG_PRINTF(("insert_objects_apply()\n")); change->applied = 1; layer_add_objects(change->layer, g_list_copy(change->obj_list)); object_add_updates_list(change->obj_list, dia); diagram_tree_add_objects(diagram_tree(), dia, change->obj_list); }
void diagram_place_over_selected(Diagram *dia) { GList *sorted_list; GList *orig_list; if (g_list_length (dia->data->selected) == 0) return; orig_list = g_list_copy(dia->data->active_layer->objects); sorted_list = diagram_get_sorted_selected_remove(dia); object_add_updates_list(sorted_list, dia); layer_add_objects(dia->data->active_layer, sorted_list); undo_reorder_objects(dia, g_list_copy(sorted_list), orig_list); diagram_modified(dia); diagram_flush(dia); undo_set_transactionpoint(dia->undo); }
/*! * BEWARE: we need to notify the DiagramTree somehow - maybe * better make it listen to object-add signal? */ static void move_object_layer_relative(Diagram *dia, GList *objects, gint dist) { /* from the active layer to above or below */ Layer *active, *target; guint pos; g_return_if_fail(dia->data->active_layer); active = dia->data->active_layer; for (pos = 0; pos < dia->data->layers->len; ++pos) if (active == g_ptr_array_index(dia->data->layers, pos)) break; pos = (pos + dia->data->layers->len + dist) % dia->data->layers->len; target = g_ptr_array_index(dia->data->layers, pos); object_add_updates_list(objects, dia); layer_remove_objects(active, objects); diagram_tree_add_objects(diagram_tree(), dia, objects); layer_add_objects(target, g_list_copy(objects)); data_set_active_layer(dia->data, target); diagram_tree_add_objects(diagram_tree(), dia, objects); }