mirror of https://github.com/GNOME/gimp.git
Bill Skaggs <weskaggs@primate.ucdavis.edu>
* app/core/core-enums.[ch] * app/core/gimpimage-undo-push.[ch] * app/core/gimplayermask.[ch]: * app/pdb/pdb_glue.h * app/actions/layers-commands.c: try again from clean tree; hopefully will work this time. (bug #148852)
This commit is contained in:
parent
afb6274e51
commit
b5f1ae88e2
|
@ -1,3 +1,12 @@
|
|||
2005-03-24 Bill Skaggs <weskaggs@primate.ucdavis.edu>
|
||||
|
||||
* app/core/core-enums.[ch]
|
||||
* app/core/gimpimage-undo-push.[ch]
|
||||
* app/core/gimplayermask.[ch]:
|
||||
* app/pdb/pdb_glue.h
|
||||
* app/actions/layers-commands.c: try again from clean tree;
|
||||
hopefully will work this time. (bug #148852)
|
||||
|
||||
2005-03-24 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* plug-ins/script-fu/scripts/*.scm: don't mark menu branches for
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include "core/gimpimage.h"
|
||||
#include "core/gimpimage-merge.h"
|
||||
#include "core/gimpimage-undo.h"
|
||||
#include "core/gimpimage-undo-push.h"
|
||||
#include "core/gimpitemundo.h"
|
||||
#include "core/gimplayer.h"
|
||||
#include "core/gimplayer-floating-sel.h"
|
||||
|
@ -610,7 +611,7 @@ layers_mask_edit_cmd_callback (GtkAction *action,
|
|||
|
||||
active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
|
||||
|
||||
gimp_layer_mask_set_edit (mask, active);
|
||||
gimp_layer_mask_set_edit (mask, active, TRUE);
|
||||
gimp_image_flush (gimage);
|
||||
}
|
||||
}
|
||||
|
@ -632,7 +633,7 @@ layers_mask_show_cmd_callback (GtkAction *action,
|
|||
|
||||
active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
|
||||
|
||||
gimp_layer_mask_set_show (mask, active);
|
||||
gimp_layer_mask_set_show (mask, active, TRUE);
|
||||
gimp_image_flush (gimage);
|
||||
}
|
||||
}
|
||||
|
@ -654,8 +655,12 @@ layers_mask_disable_cmd_callback (GtkAction *action,
|
|||
|
||||
active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
|
||||
|
||||
gimp_layer_mask_set_apply (mask, ! active);
|
||||
gimp_image_flush (gimage);
|
||||
if (active == gimp_layer_mask_get_apply (mask))
|
||||
{
|
||||
gimp_layer_mask_set_apply (mask, ! active, TRUE);
|
||||
|
||||
gimp_image_flush (gimage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -734,6 +734,9 @@ gimp_undo_type_get_type (void)
|
|||
{ GIMP_UNDO_LAYER_REMOVE, "GIMP_UNDO_LAYER_REMOVE", "layer-remove" },
|
||||
{ GIMP_UNDO_LAYER_MASK_ADD, "GIMP_UNDO_LAYER_MASK_ADD", "layer-mask-add" },
|
||||
{ GIMP_UNDO_LAYER_MASK_REMOVE, "GIMP_UNDO_LAYER_MASK_REMOVE", "layer-mask-remove" },
|
||||
{ GIMP_UNDO_LAYER_MASK_APPLY, "GIMP_UNDO_LAYER_MASK_APPLY", "layer-mask-apply" },
|
||||
{ GIMP_UNDO_LAYER_MASK_EDIT, "GIMP_UNDO_LAYER_MASK_EDIT", "layer-mask-edit" },
|
||||
{ GIMP_UNDO_LAYER_MASK_SHOW, "GIMP_UNDO_LAYER_MASK_SHOW", "layer-mask-show" },
|
||||
{ GIMP_UNDO_LAYER_REPOSITION, "GIMP_UNDO_LAYER_REPOSITION", "layer-reposition" },
|
||||
{ GIMP_UNDO_LAYER_MODE, "GIMP_UNDO_LAYER_MODE", "layer-mode" },
|
||||
{ GIMP_UNDO_LAYER_OPACITY, "GIMP_UNDO_LAYER_OPACITY", "layer-opacity" },
|
||||
|
@ -817,6 +820,9 @@ gimp_undo_type_get_type (void)
|
|||
{ GIMP_UNDO_LAYER_REMOVE, N_("Delete layer"), NULL },
|
||||
{ GIMP_UNDO_LAYER_MASK_ADD, N_("Add layer mask"), NULL },
|
||||
{ GIMP_UNDO_LAYER_MASK_REMOVE, N_("Delete layer mask"), NULL },
|
||||
{ GIMP_UNDO_LAYER_MASK_APPLY, N_("Apply layer mask"), NULL },
|
||||
{ GIMP_UNDO_LAYER_MASK_EDIT, N_("Edit layer mask"), NULL },
|
||||
{ GIMP_UNDO_LAYER_MASK_SHOW, N_("Show layer mask"), NULL },
|
||||
{ GIMP_UNDO_LAYER_REPOSITION, N_("Reposition layer"), NULL },
|
||||
{ GIMP_UNDO_LAYER_MODE, N_("Set layer mode"), NULL },
|
||||
{ GIMP_UNDO_LAYER_OPACITY, N_("Set layer opacity"), NULL },
|
||||
|
|
|
@ -384,6 +384,9 @@ typedef enum /*< pdb-skip >*/
|
|||
GIMP_UNDO_LAYER_REMOVE, /*< desc="Delete layer" >*/
|
||||
GIMP_UNDO_LAYER_MASK_ADD, /*< desc="Add layer mask" >*/
|
||||
GIMP_UNDO_LAYER_MASK_REMOVE, /*< desc="Delete layer mask" >*/
|
||||
GIMP_UNDO_LAYER_MASK_APPLY, /*< desc="Apply layer mask" >*/
|
||||
GIMP_UNDO_LAYER_MASK_EDIT, /*< desc="Edit layer mask" >*/
|
||||
GIMP_UNDO_LAYER_MASK_SHOW, /*< desc="Show layer mask" >*/
|
||||
GIMP_UNDO_LAYER_REPOSITION, /*< desc="Reposition layer" >*/
|
||||
GIMP_UNDO_LAYER_MODE, /*< desc="Set layer mode" >*/
|
||||
GIMP_UNDO_LAYER_OPACITY, /*< desc="Set layer opacity" >*/
|
||||
|
|
|
@ -1626,6 +1626,7 @@ gimp_image_undo_push_layer_mask_remove (GimpImage *gimage,
|
|||
layer, mask);
|
||||
}
|
||||
|
||||
|
||||
static gboolean
|
||||
undo_push_layer_mask (GimpImage *gimage,
|
||||
const gchar *undo_desc,
|
||||
|
@ -1703,6 +1704,98 @@ undo_free_layer_mask (GimpUndo *undo,
|
|||
g_free (lmu);
|
||||
}
|
||||
|
||||
/********************************/
|
||||
/* Layer Mask Property Undo */
|
||||
/********************************/
|
||||
|
||||
typedef struct _LayerMaskPropertyUndo LayerMaskPropertyUndo;
|
||||
|
||||
struct _LayerMaskPropertyUndo
|
||||
{
|
||||
GimpLayerMask *mask;
|
||||
gboolean apply;
|
||||
gboolean edit;
|
||||
gboolean show;
|
||||
};
|
||||
|
||||
static gboolean undo_pop_layer_mask_properties (GimpUndo *undo,
|
||||
GimpUndoMode undo_mode,
|
||||
GimpUndoAccumulator *accum);
|
||||
|
||||
|
||||
|
||||
gboolean
|
||||
gimp_image_undo_push_layer_mask_properties (GimpImage *gimage,
|
||||
const gchar *undo_desc,
|
||||
GimpUndoType type,
|
||||
GimpLayer *layer,
|
||||
GimpLayerMask *mask)
|
||||
{
|
||||
GimpUndo *new;
|
||||
gint64 size;
|
||||
|
||||
size = sizeof (LayerMaskPropertyUndo);
|
||||
|
||||
if ((new = gimp_image_undo_push (gimage, GIMP_TYPE_ITEM_UNDO,
|
||||
size, sizeof (LayerMaskPropertyUndo),
|
||||
type, undo_desc,
|
||||
GIMP_DIRTY_ITEM_META,
|
||||
undo_pop_layer_mask_properties,
|
||||
undo_free_layer_mask,
|
||||
"item", layer,
|
||||
NULL)))
|
||||
{
|
||||
LayerMaskPropertyUndo *lmp_undo = new->data;
|
||||
|
||||
lmp_undo->mask = g_object_ref (mask);
|
||||
lmp_undo->apply = mask->apply_mask;
|
||||
lmp_undo->edit = mask->edit_mask;
|
||||
lmp_undo->show = mask->show_mask;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
undo_pop_layer_mask_properties (GimpUndo *undo,
|
||||
GimpUndoMode undo_mode,
|
||||
GimpUndoAccumulator *accum)
|
||||
{
|
||||
LayerMaskPropertyUndo *lmp_undo = undo->data;
|
||||
GimpLayer *layer = GIMP_LAYER (GIMP_ITEM_UNDO (undo)->item);
|
||||
GimpLayerMask *mask;
|
||||
gboolean val;
|
||||
mask = lmp_undo->mask;
|
||||
|
||||
switch (undo->undo_type)
|
||||
{
|
||||
case GIMP_UNDO_LAYER_MASK_APPLY:
|
||||
val = (undo_mode == GIMP_UNDO_MODE_UNDO) ?
|
||||
lmp_undo->apply : ! lmp_undo->apply;
|
||||
gimp_layer_mask_set_apply (mask, val, FALSE);
|
||||
break;
|
||||
|
||||
case GIMP_UNDO_LAYER_MASK_EDIT:
|
||||
val = (undo_mode == GIMP_UNDO_MODE_UNDO) ?
|
||||
lmp_undo->edit : ! lmp_undo->edit;
|
||||
gimp_layer_mask_set_edit (mask, val, FALSE);
|
||||
break;
|
||||
|
||||
case GIMP_UNDO_LAYER_MASK_SHOW:
|
||||
val = (undo_mode == GIMP_UNDO_MODE_UNDO) ?
|
||||
lmp_undo->show : ! lmp_undo->show;
|
||||
gimp_layer_mask_set_show (mask, val, FALSE);
|
||||
break;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/***************************/
|
||||
/* Layer re-position Undo */
|
||||
|
|
|
@ -100,6 +100,10 @@ gboolean gimp_image_undo_push_layer_mask_remove (GimpImage *gimage,
|
|||
const gchar *undo_desc,
|
||||
GimpLayer *layer,
|
||||
GimpLayerMask *mask);
|
||||
gboolean gimp_image_undo_push_layer_mask_properties (GimpImage *gimage,
|
||||
const gchar *undo_desc,
|
||||
GimpLayer *layer,
|
||||
GimpLayerMask *mask);
|
||||
gboolean gimp_image_undo_push_layer_reposition (GimpImage *gimage,
|
||||
const gchar *undo_desc,
|
||||
GimpLayer *layer);
|
||||
|
|
|
@ -250,12 +250,22 @@ gimp_layer_mask_get_layer (const GimpLayerMask *layer_mask)
|
|||
|
||||
void
|
||||
gimp_layer_mask_set_apply (GimpLayerMask *layer_mask,
|
||||
gboolean apply)
|
||||
gboolean apply,
|
||||
gboolean push_undo)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_LAYER_MASK (layer_mask));
|
||||
|
||||
if (layer_mask->apply_mask != apply)
|
||||
{
|
||||
GimpImage *gimage = GIMP_ITEM (layer_mask)->gimage;
|
||||
|
||||
if (push_undo)
|
||||
gimp_image_undo_push_layer_mask_properties (gimage,
|
||||
_("Apply Layer Mask"),
|
||||
GIMP_UNDO_LAYER_MASK_APPLY,
|
||||
layer_mask->layer,
|
||||
layer_mask);
|
||||
|
||||
layer_mask->apply_mask = apply ? TRUE : FALSE;
|
||||
|
||||
if (layer_mask->layer)
|
||||
|
@ -282,12 +292,22 @@ gimp_layer_mask_get_apply (const GimpLayerMask *layer_mask)
|
|||
|
||||
void
|
||||
gimp_layer_mask_set_edit (GimpLayerMask *layer_mask,
|
||||
gboolean edit)
|
||||
gboolean edit,
|
||||
gboolean push_undo)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_LAYER_MASK (layer_mask));
|
||||
|
||||
if (layer_mask->edit_mask != edit)
|
||||
{
|
||||
GimpImage *gimage = GIMP_ITEM (layer_mask)->gimage;
|
||||
|
||||
if (push_undo)
|
||||
gimp_image_undo_push_layer_mask_properties (gimage,
|
||||
_("Edit Layer Mask"),
|
||||
GIMP_UNDO_LAYER_MASK_EDIT,
|
||||
layer_mask->layer,
|
||||
layer_mask);
|
||||
|
||||
layer_mask->edit_mask = edit ? TRUE : FALSE;
|
||||
|
||||
g_signal_emit (layer_mask, layer_mask_signals[EDIT_CHANGED], 0);
|
||||
|
@ -304,12 +324,22 @@ gimp_layer_mask_get_edit (const GimpLayerMask *layer_mask)
|
|||
|
||||
void
|
||||
gimp_layer_mask_set_show (GimpLayerMask *layer_mask,
|
||||
gboolean show)
|
||||
gboolean show,
|
||||
gboolean push_undo)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_LAYER_MASK (layer_mask));
|
||||
|
||||
if (layer_mask->show_mask != show)
|
||||
{
|
||||
GimpImage *gimage = GIMP_ITEM (layer_mask)->gimage;
|
||||
|
||||
if (push_undo)
|
||||
gimp_image_undo_push_layer_mask_properties (gimage,
|
||||
_("Show Layer Mask"),
|
||||
GIMP_UNDO_LAYER_MASK_SHOW,
|
||||
layer_mask->layer,
|
||||
layer_mask);
|
||||
|
||||
layer_mask->show_mask = show ? TRUE : FALSE;
|
||||
|
||||
if (layer_mask->layer)
|
||||
|
|
|
@ -69,15 +69,18 @@ void gimp_layer_mask_set_layer (GimpLayerMask *layer_mask,
|
|||
GimpLayer * gimp_layer_mask_get_layer (const GimpLayerMask *layer_mask);
|
||||
|
||||
void gimp_layer_mask_set_apply (GimpLayerMask *layer_mask,
|
||||
gboolean apply);
|
||||
gboolean apply,
|
||||
gboolean push_undo);
|
||||
gboolean gimp_layer_mask_get_apply (const GimpLayerMask *layer_mask);
|
||||
|
||||
void gimp_layer_mask_set_edit (GimpLayerMask *layer_mask,
|
||||
gboolean apply);
|
||||
gboolean apply,
|
||||
gboolean push_undo);
|
||||
gboolean gimp_layer_mask_get_edit (const GimpLayerMask *layer_mask);
|
||||
|
||||
void gimp_layer_mask_set_show (GimpLayerMask *layer_mask,
|
||||
gboolean show);
|
||||
gboolean show,
|
||||
gboolean push_undo);
|
||||
gboolean gimp_layer_mask_get_show (const GimpLayerMask *layer_mask);
|
||||
|
||||
|
||||
|
|
|
@ -24,9 +24,9 @@
|
|||
#define gimp_layer_get_show_mask(l) (l)->mask ? gimp_layer_mask_get_show((l)->mask) : FALSE;
|
||||
#define gimp_layer_get_edit_mask(l) (l)->mask ? gimp_layer_mask_get_edit((l)->mask) : FALSE;
|
||||
|
||||
#define gimp_layer_set_apply_mask(l,a) { if((l)->mask) gimp_layer_mask_set_apply((l)->mask,(a)); else success = FALSE; }
|
||||
#define gimp_layer_set_show_mask(l,s) { if((l)->mask) gimp_layer_mask_set_show((l)->mask,(s)); else success = FALSE; }
|
||||
#define gimp_layer_set_edit_mask(l,e) { if((l)->mask) gimp_layer_mask_set_edit((l)->mask,(e)); else success = FALSE; }
|
||||
#define gimp_layer_set_apply_mask(l,a) { if((l)->mask) gimp_layer_mask_set_apply((l)->mask,(a), TRUE); else success = FALSE; }
|
||||
#define gimp_layer_set_show_mask(l,s) { if((l)->mask) gimp_layer_mask_set_show((l)->mask,(s), TRUE); else success = FALSE; }
|
||||
#define gimp_layer_set_edit_mask(l,e) { if((l)->mask) gimp_layer_mask_set_edit((l)->mask,(e), TRUE); else success = FALSE; }
|
||||
|
||||
|
||||
#endif /* __PDB_GLUE_H__ */
|
||||
|
|
Loading…
Reference in New Issue