#include "background_layer.h"
#include "undo_history.h"
-// TODO(#1012): UndoHistory is not support in BackgroundLayer
BackgroundLayer create_background_layer(Color color)
{
return 0;
}
+typedef struct {
+ BackgroundLayer *layer;
+ Color color;
+} UndoContext;
+
static
-void background_undo_color(void *layer, Context context)
+void background_undo_color(void *context, size_t context_size)
{
- trace_assert(layer);
- BackgroundLayer *background_layer = layer;
+ trace_assert(context);
+ trace_assert(sizeof(UndoContext) == context_size);
- trace_assert(sizeof(Color) < CONTEXT_SIZE);
- Color *color = (Color *)context.data;
+ UndoContext *undo_context = context;
+ BackgroundLayer *background_layer = undo_context->layer;
- background_layer->color_picker = create_color_picker_from_rgba(*color);
+ background_layer->color_picker = create_color_picker_from_rgba(undo_context->color);
}
int background_layer_event(BackgroundLayer *layer,
}
if (selected && !color_picker_drag(&layer->color_picker)) {
+ UndoContext context = {
+ .layer = layer,
+ .color = layer->prev_color
+ };
+
undo_history_push(
undo_history,
- create_action(
- layer,
- background_undo_color,
- &layer->prev_color, sizeof(layer->prev_color)));
+ background_undo_color,
+ &context, sizeof(context));
layer->prev_color = color_picker_rgba(&layer->color_picker);
}
color_picker_rgba(&layer->color_picker),
stream);
- return fprintf(stream, "\n");;
+ return fprintf(stream, "\n");
}