mirror of https://github.com/GNOME/gimp.git
Finished the opaque-move stuff... hopefully. Float and selection-mask
Sat Apr 24 21:50:58 BST 1999 Adam D. Moss <adam@gimp.org> * app/edit_selection.c: Finished the opaque-move stuff... hopefully. Float and selection-mask movement behaviour repaired, etc.
This commit is contained in:
parent
107038e5dc
commit
e247b49e5f
|
@ -1,3 +1,9 @@
|
|||
Sat Apr 24 21:50:58 BST 1999 Adam D. Moss <adam@gimp.org>
|
||||
|
||||
* app/edit_selection.c: Finished the opaque-move stuff...
|
||||
hopefully. Float and selection-mask movement behaviour
|
||||
repaired, etc.
|
||||
|
||||
Sat Apr 24 13:28:13 PDT 1999 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* app/layer_cmds.[ch]: pdbgened, header file removed
|
||||
|
|
|
@ -285,6 +285,25 @@ edit_selection_button_release (Tool *tool,
|
|||
|
||||
#else
|
||||
|
||||
if (edit_select.cumlx == 0 && edit_select.cumly == 0)
|
||||
{
|
||||
/* The user either didn't actually move the selection,
|
||||
or moved it around and eventually just put it back in
|
||||
exactly the same spot. */
|
||||
|
||||
if ((edit_select.edit_type == MaskTranslate) ||
|
||||
(edit_select.edit_type == MaskToLayerTranslate))
|
||||
gimage_mask_clear (gdisp->gimage);
|
||||
/* if no movement occured and the type is LayerTranslate,
|
||||
check if the layer is a floating selection. If so, anchor. */
|
||||
else if (edit_select.edit_type == FloatingSelTranslate)
|
||||
{
|
||||
layer = gimage_get_active_layer (gdisp->gimage);
|
||||
if (layer_is_floating_sel (layer))
|
||||
floating_sel_anchor (layer);
|
||||
}
|
||||
}
|
||||
|
||||
undo_push_group_end (gdisp->gimage);
|
||||
|
||||
if (bevent->state & GDK_BUTTON2_MASK) /* OPERATION CANCELLED */
|
||||
|
@ -351,11 +370,15 @@ edit_selection_motion (Tool *tool,
|
|||
case MaskTranslate:
|
||||
/* translate the selection */
|
||||
gimage_mask_translate (gdisp->gimage, xoffset, yoffset);
|
||||
break;
|
||||
|
||||
case MaskToLayerTranslate:
|
||||
gimage_mask_float (gdisp->gimage, gimage_active_drawable (gdisp->gimage),
|
||||
xoffset, yoffset);
|
||||
/*g_warning("%d,%d %d,%d %d,%d %d,%d %d,%d %d,%d",
|
||||
edit_select.origx,edit_select.origy,
|
||||
edit_select.cumlx,edit_select.cumly,
|
||||
xoffset,yoffset,
|
||||
x,y,
|
||||
edit_select.x1,edit_select.y1,
|
||||
edit_select.x2,edit_select.y2);*/
|
||||
edit_select.origx = x;
|
||||
edit_select.origy = y;
|
||||
break;
|
||||
|
||||
case LayerTranslate:
|
||||
|
@ -378,6 +401,15 @@ edit_selection_motion (Tool *tool,
|
|||
if (floating_layer)
|
||||
floating_sel_rigor (floating_layer, TRUE);
|
||||
break;
|
||||
|
||||
case MaskToLayerTranslate:
|
||||
gimage_mask_float (gdisp->gimage, gimage_active_drawable (gdisp->gimage),
|
||||
0, 0);
|
||||
edit_select.edit_type = FloatingSelTranslate;
|
||||
|
||||
edit_select.origx -= edit_select.x1;
|
||||
edit_select.origy -= edit_select.y1;
|
||||
break;
|
||||
|
||||
case FloatingSelTranslate:
|
||||
layer = gimage_get_active_layer (gdisp->gimage);
|
||||
|
@ -447,7 +479,8 @@ edit_selection_draw (Tool *tool)
|
|||
gdisp = (GDisplay *) tool->gdisp_ptr;
|
||||
select = gdisp->select;
|
||||
|
||||
if (edit_select.edit_type == FloatingSelTranslate)
|
||||
if (edit_select.edit_type == FloatingSelTranslate ||
|
||||
edit_select.edit_type == MaskTranslate)
|
||||
{
|
||||
diff_x = SCALEX (gdisp, edit_select.cumlx);
|
||||
diff_y = SCALEY (gdisp, edit_select.cumly);
|
||||
|
|
|
@ -285,6 +285,25 @@ edit_selection_button_release (Tool *tool,
|
|||
|
||||
#else
|
||||
|
||||
if (edit_select.cumlx == 0 && edit_select.cumly == 0)
|
||||
{
|
||||
/* The user either didn't actually move the selection,
|
||||
or moved it around and eventually just put it back in
|
||||
exactly the same spot. */
|
||||
|
||||
if ((edit_select.edit_type == MaskTranslate) ||
|
||||
(edit_select.edit_type == MaskToLayerTranslate))
|
||||
gimage_mask_clear (gdisp->gimage);
|
||||
/* if no movement occured and the type is LayerTranslate,
|
||||
check if the layer is a floating selection. If so, anchor. */
|
||||
else if (edit_select.edit_type == FloatingSelTranslate)
|
||||
{
|
||||
layer = gimage_get_active_layer (gdisp->gimage);
|
||||
if (layer_is_floating_sel (layer))
|
||||
floating_sel_anchor (layer);
|
||||
}
|
||||
}
|
||||
|
||||
undo_push_group_end (gdisp->gimage);
|
||||
|
||||
if (bevent->state & GDK_BUTTON2_MASK) /* OPERATION CANCELLED */
|
||||
|
@ -351,11 +370,15 @@ edit_selection_motion (Tool *tool,
|
|||
case MaskTranslate:
|
||||
/* translate the selection */
|
||||
gimage_mask_translate (gdisp->gimage, xoffset, yoffset);
|
||||
break;
|
||||
|
||||
case MaskToLayerTranslate:
|
||||
gimage_mask_float (gdisp->gimage, gimage_active_drawable (gdisp->gimage),
|
||||
xoffset, yoffset);
|
||||
/*g_warning("%d,%d %d,%d %d,%d %d,%d %d,%d %d,%d",
|
||||
edit_select.origx,edit_select.origy,
|
||||
edit_select.cumlx,edit_select.cumly,
|
||||
xoffset,yoffset,
|
||||
x,y,
|
||||
edit_select.x1,edit_select.y1,
|
||||
edit_select.x2,edit_select.y2);*/
|
||||
edit_select.origx = x;
|
||||
edit_select.origy = y;
|
||||
break;
|
||||
|
||||
case LayerTranslate:
|
||||
|
@ -378,6 +401,15 @@ edit_selection_motion (Tool *tool,
|
|||
if (floating_layer)
|
||||
floating_sel_rigor (floating_layer, TRUE);
|
||||
break;
|
||||
|
||||
case MaskToLayerTranslate:
|
||||
gimage_mask_float (gdisp->gimage, gimage_active_drawable (gdisp->gimage),
|
||||
0, 0);
|
||||
edit_select.edit_type = FloatingSelTranslate;
|
||||
|
||||
edit_select.origx -= edit_select.x1;
|
||||
edit_select.origy -= edit_select.y1;
|
||||
break;
|
||||
|
||||
case FloatingSelTranslate:
|
||||
layer = gimage_get_active_layer (gdisp->gimage);
|
||||
|
@ -447,7 +479,8 @@ edit_selection_draw (Tool *tool)
|
|||
gdisp = (GDisplay *) tool->gdisp_ptr;
|
||||
select = gdisp->select;
|
||||
|
||||
if (edit_select.edit_type == FloatingSelTranslate)
|
||||
if (edit_select.edit_type == FloatingSelTranslate ||
|
||||
edit_select.edit_type == MaskTranslate)
|
||||
{
|
||||
diff_x = SCALEX (gdisp, edit_select.cumlx);
|
||||
diff_y = SCALEY (gdisp, edit_select.cumly);
|
||||
|
|
|
@ -285,6 +285,25 @@ edit_selection_button_release (Tool *tool,
|
|||
|
||||
#else
|
||||
|
||||
if (edit_select.cumlx == 0 && edit_select.cumly == 0)
|
||||
{
|
||||
/* The user either didn't actually move the selection,
|
||||
or moved it around and eventually just put it back in
|
||||
exactly the same spot. */
|
||||
|
||||
if ((edit_select.edit_type == MaskTranslate) ||
|
||||
(edit_select.edit_type == MaskToLayerTranslate))
|
||||
gimage_mask_clear (gdisp->gimage);
|
||||
/* if no movement occured and the type is LayerTranslate,
|
||||
check if the layer is a floating selection. If so, anchor. */
|
||||
else if (edit_select.edit_type == FloatingSelTranslate)
|
||||
{
|
||||
layer = gimage_get_active_layer (gdisp->gimage);
|
||||
if (layer_is_floating_sel (layer))
|
||||
floating_sel_anchor (layer);
|
||||
}
|
||||
}
|
||||
|
||||
undo_push_group_end (gdisp->gimage);
|
||||
|
||||
if (bevent->state & GDK_BUTTON2_MASK) /* OPERATION CANCELLED */
|
||||
|
@ -351,11 +370,15 @@ edit_selection_motion (Tool *tool,
|
|||
case MaskTranslate:
|
||||
/* translate the selection */
|
||||
gimage_mask_translate (gdisp->gimage, xoffset, yoffset);
|
||||
break;
|
||||
|
||||
case MaskToLayerTranslate:
|
||||
gimage_mask_float (gdisp->gimage, gimage_active_drawable (gdisp->gimage),
|
||||
xoffset, yoffset);
|
||||
/*g_warning("%d,%d %d,%d %d,%d %d,%d %d,%d %d,%d",
|
||||
edit_select.origx,edit_select.origy,
|
||||
edit_select.cumlx,edit_select.cumly,
|
||||
xoffset,yoffset,
|
||||
x,y,
|
||||
edit_select.x1,edit_select.y1,
|
||||
edit_select.x2,edit_select.y2);*/
|
||||
edit_select.origx = x;
|
||||
edit_select.origy = y;
|
||||
break;
|
||||
|
||||
case LayerTranslate:
|
||||
|
@ -378,6 +401,15 @@ edit_selection_motion (Tool *tool,
|
|||
if (floating_layer)
|
||||
floating_sel_rigor (floating_layer, TRUE);
|
||||
break;
|
||||
|
||||
case MaskToLayerTranslate:
|
||||
gimage_mask_float (gdisp->gimage, gimage_active_drawable (gdisp->gimage),
|
||||
0, 0);
|
||||
edit_select.edit_type = FloatingSelTranslate;
|
||||
|
||||
edit_select.origx -= edit_select.x1;
|
||||
edit_select.origy -= edit_select.y1;
|
||||
break;
|
||||
|
||||
case FloatingSelTranslate:
|
||||
layer = gimage_get_active_layer (gdisp->gimage);
|
||||
|
@ -447,7 +479,8 @@ edit_selection_draw (Tool *tool)
|
|||
gdisp = (GDisplay *) tool->gdisp_ptr;
|
||||
select = gdisp->select;
|
||||
|
||||
if (edit_select.edit_type == FloatingSelTranslate)
|
||||
if (edit_select.edit_type == FloatingSelTranslate ||
|
||||
edit_select.edit_type == MaskTranslate)
|
||||
{
|
||||
diff_x = SCALEX (gdisp, edit_select.cumlx);
|
||||
diff_y = SCALEY (gdisp, edit_select.cumly);
|
||||
|
|
Loading…
Reference in New Issue