void edit_redo_cmd_callback (GtkAction *action, gpointer data) { GimpImage *image; return_if_no_image (image, data); if (gimp_image_redo (image)) gimp_image_flush (image); }
void edit_redo_cmd_callback (GtkAction *action, gpointer data) { GimpImage *image; GimpDisplay *display; return_if_no_image (image, data); return_if_no_display (display, data); if (tool_manager_redo_active (image->gimp, display) || gimp_image_redo (image)) { gimp_image_flush (image); } }
static void gimp_rectangle_select_tool_button_release (GimpTool *tool, const GimpCoords *coords, guint32 time, GdkModifierType state, GimpButtonReleaseType release_type, GimpDisplay *display) { GimpRectangleSelectTool *rect_sel_tool; GimpRectangleSelectToolPrivate *priv; GimpImage *image; rect_sel_tool = GIMP_RECTANGLE_SELECT_TOOL (tool); priv = GIMP_RECTANGLE_SELECT_TOOL_GET_PRIVATE (rect_sel_tool); image = gimp_display_get_image (tool->display); gimp_tool_control_halt (tool->control); gimp_tool_pop_status (tool, display); gimp_display_shell_set_show_selection (gimp_display_get_shell (display), priv->saved_show_selection); /* * if the user has not moved the mouse, we need to redo the operation * that was undone on button press. */ if (release_type == GIMP_BUTTON_RELEASE_CLICK) { GimpUndoStack *redo_stack = gimp_image_get_redo_stack (image); GimpUndo *redo = gimp_undo_stack_peek (redo_stack); if (redo && priv->redo == redo) { /* prevent this from halting the tool */ gimp_tool_control_push_preserve (tool->control, TRUE); gimp_image_redo (image); priv->redo = NULL; gimp_tool_control_pop_preserve (tool->control); } } gimp_rectangle_tool_button_release (tool, coords, time, state, release_type, display); if (release_type == GIMP_BUTTON_RELEASE_CANCEL) { if (priv->redo) { /* prevent this from halting the tool */ gimp_tool_control_push_preserve (tool->control, TRUE); gimp_image_redo (image); gimp_tool_control_pop_preserve (tool->control); } priv->use_saved_op = TRUE; /* is this correct? */ } priv->redo = NULL; }