[gimp] Bug 598523 - Protect hidden layers from editing
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Bug 598523 - Protect hidden layers from editing
- Date: Mon, 13 May 2013 21:31:14 +0000 (UTC)
commit ac5428787e238282fdbf1359ebfd4445cb0fcec8
Author: darkraid1 <darkraid1 gmail com>
Date: Wed Apr 24 16:27:12 2013 +0200
Bug 598523 - Protect hidden layers from editing
Don't allow tool operations on invisible items, just like we do for
group layers or locked items.
Cleaned up and enhanced the patch a bit --Mitch
app/tools/gimpblendtool.c | 10 +++++++++-
app/tools/gimpbucketfilltool.c | 10 +++++++++-
app/tools/gimpimagemaptool.c | 7 +++++++
app/tools/gimppainttool.c | 10 +++++++++-
app/tools/gimptransformtool.c | 12 ++++++++++--
5 files changed, 44 insertions(+), 5 deletions(-)
---
diff --git a/app/tools/gimpblendtool.c b/app/tools/gimpblendtool.c
index 5a64a43..0232147 100644
--- a/app/tools/gimpblendtool.c
+++ b/app/tools/gimpblendtool.c
@@ -174,6 +174,13 @@ gimp_blend_tool_initialize (GimpTool *tool,
return FALSE;
}
+ if (! gimp_item_is_visible (GIMP_ITEM (drawable)))
+ {
+ g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED,
+ _("The active layer is not visible."));
+ return FALSE;
+ }
+
if (! gimp_context_get_gradient (GIMP_CONTEXT (options)))
{
g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED,
@@ -363,7 +370,8 @@ gimp_blend_tool_cursor_update (GimpTool *tool,
GimpCursorModifier modifier = GIMP_CURSOR_MODIFIER_NONE;
if (gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) ||
- gimp_item_is_content_locked (GIMP_ITEM (drawable)))
+ gimp_item_is_content_locked (GIMP_ITEM (drawable)) ||
+ ! gimp_item_is_visible (GIMP_ITEM (drawable)))
{
modifier = GIMP_CURSOR_MODIFIER_BAD;
}
diff --git a/app/tools/gimpbucketfilltool.c b/app/tools/gimpbucketfilltool.c
index 894f132..e077f22 100644
--- a/app/tools/gimpbucketfilltool.c
+++ b/app/tools/gimpbucketfilltool.c
@@ -145,6 +145,13 @@ gimp_bucket_fill_tool_initialize (GimpTool *tool,
return FALSE;
}
+ if (! gimp_item_is_visible (GIMP_ITEM (drawable)))
+ {
+ g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED,
+ _("The active layer is not visible."));
+ return FALSE;
+ }
+
return TRUE;
}
@@ -284,7 +291,8 @@ gimp_bucket_fill_tool_cursor_update (GimpTool *tool,
GimpDrawable *drawable = gimp_image_get_active_drawable (image);
if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
- ! gimp_item_is_content_locked (GIMP_ITEM (drawable)))
+ ! gimp_item_is_content_locked (GIMP_ITEM (drawable)) &&
+ gimp_item_is_visible (GIMP_ITEM (drawable)))
{
switch (options->fill_mode)
{
diff --git a/app/tools/gimpimagemaptool.c b/app/tools/gimpimagemaptool.c
index 88f9e8a..fa71a34 100644
--- a/app/tools/gimpimagemaptool.c
+++ b/app/tools/gimpimagemaptool.c
@@ -290,6 +290,13 @@ gimp_image_map_tool_initialize (GimpTool *tool,
return FALSE;
}
+ if (! gimp_item_is_visible (GIMP_ITEM (drawable)))
+ {
+ g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED,
+ _("The active layer is not visible."));
+ return FALSE;
+ }
+
if (image_map_tool->active_picker)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_map_tool->active_picker),
FALSE);
diff --git a/app/tools/gimppainttool.c b/app/tools/gimppainttool.c
index 5f4879a..8263356 100644
--- a/app/tools/gimppainttool.c
+++ b/app/tools/gimppainttool.c
@@ -266,6 +266,13 @@ gimp_paint_tool_button_press (GimpTool *tool,
return;
}
+ if (! gimp_item_is_visible (GIMP_ITEM (drawable)))
+ {
+ gimp_tool_message_literal (tool, display,
+ _("The active layer is not visible."));
+ return;
+ }
+
curr_coords = *coords;
gimp_item_get_offset (GIMP_ITEM (drawable), &off_x, &off_y);
@@ -522,7 +529,8 @@ gimp_paint_tool_cursor_update (GimpTool *tool,
GimpDrawable *drawable = gimp_image_get_active_drawable (image);
if (gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) ||
- gimp_item_is_content_locked (GIMP_ITEM (drawable)))
+ gimp_item_is_content_locked (GIMP_ITEM (drawable)) ||
+ ! gimp_item_is_visible (GIMP_ITEM (drawable)))
{
modifier = GIMP_CURSOR_MODIFIER_BAD;
toggle_modifier = GIMP_CURSOR_MODIFIER_BAD;
diff --git a/app/tools/gimptransformtool.c b/app/tools/gimptransformtool.c
index 7e1d72b..30bb64d 100644
--- a/app/tools/gimptransformtool.c
+++ b/app/tools/gimptransformtool.c
@@ -271,6 +271,13 @@ gimp_transform_tool_initialize (GimpTool *tool,
return FALSE;
}
+ if (! gimp_item_is_visible (GIMP_ITEM (drawable)))
+ {
+ g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED,
+ _("The active layer is not visible."));
+ return FALSE;
+ }
+
if (display != tool->display)
{
gint i;
@@ -741,8 +748,9 @@ gimp_transform_tool_cursor_update (GimpTool *tool,
case GIMP_TRANSFORM_TYPE_LAYER:
drawable = gimp_image_get_active_drawable (image);
- if (gimp_item_is_content_locked (GIMP_ITEM (drawable)) ||
- gimp_item_is_position_locked (GIMP_ITEM (drawable)))
+ if (gimp_item_is_content_locked (GIMP_ITEM (drawable)) ||
+ gimp_item_is_position_locked (GIMP_ITEM (drawable)) ||
+ ! gimp_item_is_visible (GIMP_ITEM (drawable)))
modifier = GIMP_CURSOR_MODIFIER_BAD;
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]