static void data_delete_dialog_response (GtkWidget *dialog, gint response_id, DataDeleteDialog *delete_data) { gtk_widget_destroy (dialog); if (response_id == GTK_RESPONSE_OK) { GimpDataFactory *factory = delete_data->factory; GimpData *data = delete_data->data; GimpContainer *container; GimpObject *new_active = NULL; GError *error = NULL; container = gimp_data_factory_get_container (factory); if (delete_data->context && GIMP_OBJECT (data) == gimp_context_get_by_type (delete_data->context, gimp_container_get_children_type (container))) { new_active = gimp_container_get_neighbor_of (container, GIMP_OBJECT (data)); } if (! gimp_data_factory_data_delete (factory, data, TRUE, &error)) { gimp_message (gimp_data_factory_get_gimp (factory), G_OBJECT (delete_data->parent), GIMP_MESSAGE_ERROR, "%s", error->message); g_clear_error (&error); } if (new_active) gimp_context_set_by_type (delete_data->context, gimp_container_get_children_type (container), new_active); } g_slice_free (DataDeleteDialog, delete_data); }
static void gimp_data_editor_save_dirty (GimpDataEditor *editor) { GimpData *data = editor->data; if (data && gimp_data_is_dirty (data) && gimp_data_is_writable (data)) { GError *error = NULL; if (! gimp_data_factory_data_save_single (editor->data_factory, data, &error)) { gimp_message_literal (gimp_data_factory_get_gimp (editor->data_factory), G_OBJECT (editor), GIMP_MESSAGE_ERROR, error->message); g_clear_error (&error); } } }