diff --git a/app/display/gimptoolpath.c b/app/display/gimptoolpath.c index 027ef9486e..276057c601 100644 --- a/app/display/gimptoolpath.c +++ b/app/display/gimptoolpath.c @@ -37,6 +37,8 @@ #include "widgets/gimpwidgets-utils.h" +#include "tools/gimptools-utils.h" + #include "gimpcanvashandle.h" #include "gimpcanvasitem-utils.h" #include "gimpcanvasline.h" @@ -492,6 +494,8 @@ static gboolean gimp_tool_path_check_writable (GimpToolPath *path) { GimpToolPathPrivate *private = path->private; + GimpToolWidget *widget = GIMP_TOOL_WIDGET (path); + GimpDisplayShell *shell = gimp_tool_widget_get_shell (widget); if (gimp_item_is_content_locked (GIMP_ITEM (private->vectors)) || gimp_item_is_position_locked (GIMP_ITEM (private->vectors))) @@ -499,6 +503,10 @@ gimp_tool_path_check_writable (GimpToolPath *path) gimp_tool_widget_set_status (GIMP_TOOL_WIDGET (path), _("The active path is locked.")); + /* FIXME: this should really be done by the tool */ + gimp_tools_blink_lock_box (shell->display->gimp, + GIMP_ITEM (private->vectors)); + private->function = VECTORS_FINISHED; return FALSE; diff --git a/app/tools/gimpbucketfilltool.c b/app/tools/gimpbucketfilltool.c index 31955f417f..bf0f0f243f 100644 --- a/app/tools/gimpbucketfilltool.c +++ b/app/tools/gimpbucketfilltool.c @@ -55,6 +55,7 @@ #include "gimpbucketfilltool.h" #include "gimpcoloroptions.h" #include "gimptoolcontrol.h" +#include "gimptools-utils.h" #include "gimp-intl.h" @@ -292,6 +293,8 @@ gimp_bucket_fill_tool_initialize (GimpTool *tool, { g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED, _("The active layer's pixels are locked.")); + if (error) + gimp_tools_blink_lock_box (display->gimp, GIMP_ITEM (drawable)); return FALSE; } diff --git a/app/tools/gimpcagetool.c b/app/tools/gimpcagetool.c index c1065f5c39..9ebb124663 100644 --- a/app/tools/gimpcagetool.c +++ b/app/tools/gimpcagetool.c @@ -50,6 +50,7 @@ #include "gimpcagetool.h" #include "gimpcageoptions.h" #include "gimptoolcontrol.h" +#include "gimptools-utils.h" #include "gimp-intl.h" @@ -225,6 +226,8 @@ gimp_cage_tool_initialize (GimpTool *tool, { g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED, _("The active layer's pixels are locked.")); + if (error) + gimp_tools_blink_lock_box (display->gimp, GIMP_ITEM (drawable)); return FALSE; } diff --git a/app/tools/gimpcroptool.c b/app/tools/gimpcroptool.c index bfb233b69d..40863f22f1 100644 --- a/app/tools/gimpcroptool.c +++ b/app/tools/gimpcroptool.c @@ -40,6 +40,7 @@ #include "gimpcroptool.h" #include "gimprectangleoptions.h" #include "gimptoolcontrol.h" +#include "gimptools-utils.h" #include "gimp-intl.h" @@ -458,6 +459,8 @@ gimp_crop_tool_commit (GimpCropTool *crop_tool) { gimp_tool_message_literal (tool, tool->display, _("The active layer's pixels are locked.")); + gimp_tools_blink_lock_box (tool->display->gimp, + GIMP_ITEM (layer)); return; } diff --git a/app/tools/gimpeditselectiontool.c b/app/tools/gimpeditselectiontool.c index 3a5c0f33e4..a58a197e2c 100644 --- a/app/tools/gimpeditselectiontool.c +++ b/app/tools/gimpeditselectiontool.c @@ -56,6 +56,7 @@ #include "gimpdrawtool.h" #include "gimpeditselectiontool.h" #include "gimptoolcontrol.h" +#include "gimptools-utils.h" #include "tool_manager.h" #include "gimp-intl.h" @@ -1196,6 +1197,7 @@ gimp_edit_selection_tool_translate (GimpTool *tool, else if (locked_message) { gimp_tool_message_literal (tool, display, locked_message); + gimp_tools_blink_lock_box (display->gimp, item); return TRUE; } diff --git a/app/tools/gimpfiltertool.c b/app/tools/gimpfiltertool.c index 068954b8b4..1b86469137 100644 --- a/app/tools/gimpfiltertool.c +++ b/app/tools/gimpfiltertool.c @@ -72,6 +72,7 @@ #include "gimpfiltertool-widgets.h" #include "gimpguidetool.h" #include "gimptoolcontrol.h" +#include "gimptools-utils.h" #include "tool_manager.h" #include "gimp-intl.h" @@ -273,6 +274,8 @@ gimp_filter_tool_initialize (GimpTool *tool, { g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED, _("The active layer's pixels are locked.")); + if (error) + gimp_tools_blink_lock_box (display->gimp, GIMP_ITEM (drawable)); return FALSE; } diff --git a/app/tools/gimpgradienttool.c b/app/tools/gimpgradienttool.c index c3050ba2ad..741a68e22d 100644 --- a/app/tools/gimpgradienttool.c +++ b/app/tools/gimpgradienttool.c @@ -51,6 +51,7 @@ #include "gimpgradienttool.h" #include "gimpgradienttool-editor.h" #include "gimptoolcontrol.h" +#include "gimptools-utils.h" #include "gimp-intl.h" @@ -252,6 +253,8 @@ gimp_gradient_tool_initialize (GimpTool *tool, { g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED, _("The active layer's pixels are locked.")); + if (error) + gimp_tools_blink_lock_box (display->gimp, GIMP_ITEM (drawable)); return FALSE; } diff --git a/app/tools/gimpmovetool.c b/app/tools/gimpmovetool.c index 393d51f903..afd2666c8b 100644 --- a/app/tools/gimpmovetool.c +++ b/app/tools/gimpmovetool.c @@ -56,6 +56,7 @@ #include "gimpmoveoptions.h" #include "gimpmovetool.h" #include "gimptoolcontrol.h" +#include "gimptools-utils.h" #include "gimp-intl.h" @@ -336,6 +337,7 @@ gimp_move_tool_button_press (GimpTool *tool, else if (locked_message) { gimp_tool_message_literal (tool, display, locked_message); + gimp_tools_blink_lock_box (display->gimp, active_item); gimp_tool_control (tool, GIMP_TOOL_ACTION_HALT, display); return; } diff --git a/app/tools/gimppainttool.c b/app/tools/gimppainttool.c index 3b37769505..b303831019 100644 --- a/app/tools/gimppainttool.c +++ b/app/tools/gimppainttool.c @@ -53,6 +53,7 @@ #include "gimppainttool.h" #include "gimppainttool-paint.h" #include "gimptoolcontrol.h" +#include "gimptools-utils.h" #include "gimp-intl.h" @@ -105,6 +106,7 @@ static GimpCanvasItem * static gboolean gimp_paint_tool_check_alpha (GimpPaintTool *paint_tool, GimpDrawable *drawable, + GimpDisplay *display, GError **error); static void gimp_paint_tool_hard_notify (GimpPaintOptions *options, @@ -282,10 +284,11 @@ gimp_paint_tool_button_press (GimpTool *tool, { gimp_tool_message_literal (tool, display, _("The active layer's pixels are locked.")); + gimp_tools_blink_lock_box (display->gimp, GIMP_ITEM (drawable)); return; } - if (! gimp_paint_tool_check_alpha (paint_tool, drawable, &error)) + if (! gimp_paint_tool_check_alpha (paint_tool, drawable, display, &error)) { GtkWidget *options_gui; GtkWidget *mode_box; @@ -485,9 +488,9 @@ gimp_paint_tool_cursor_update (GimpTool *tool, GimpImage *image = gimp_display_get_image (display); 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_paint_tool_check_alpha (paint_tool, drawable, NULL) || + if (gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) || + gimp_item_is_content_locked (GIMP_ITEM (drawable)) || + ! gimp_paint_tool_check_alpha (paint_tool, drawable, display, NULL) || ! gimp_item_is_visible (GIMP_ITEM (drawable))) { modifier = GIMP_CURSOR_MODIFIER_BAD; @@ -821,6 +824,7 @@ gimp_paint_tool_get_outline (GimpPaintTool *paint_tool, static gboolean gimp_paint_tool_check_alpha (GimpPaintTool *paint_tool, GimpDrawable *drawable, + GimpDisplay *display, GError **error) { GimpPaintToolClass *klass = GIMP_PAINT_TOOL_GET_CLASS (paint_tool); @@ -843,6 +847,9 @@ gimp_paint_tool_check_alpha (GimpPaintTool *paint_tool, error, GIMP_ERROR, GIMP_FAILED, _("The active layer's alpha channel is locked.")); + if (error) + gimp_tools_blink_lock_box (display->gimp, GIMP_ITEM (drawable)); + return FALSE; } } diff --git a/app/tools/gimpselectiontool.c b/app/tools/gimpselectiontool.c index bf75d9769f..96396091bd 100644 --- a/app/tools/gimpselectiontool.c +++ b/app/tools/gimpselectiontool.c @@ -38,6 +38,7 @@ #include "gimpselectiontool.h" #include "gimpselectionoptions.h" #include "gimptoolcontrol.h" +#include "gimptools-utils.h" #include "gimp-intl.h" @@ -451,6 +452,9 @@ gimp_selection_tool_check (GimpSelectionTool *sel_tool, g_set_error (error, GIMP_ERROR, GIMP_FAILED, _("The active layer's pixels are locked.")); + if (error) + gimp_tools_blink_lock_box (display->gimp, GIMP_ITEM (drawable)); + return FALSE; } break; diff --git a/app/tools/gimptransformtool.c b/app/tools/gimptransformtool.c index 01237bad69..1f1744a6aa 100644 --- a/app/tools/gimptransformtool.c +++ b/app/tools/gimptransformtool.c @@ -46,6 +46,7 @@ #include "widgets/gimpwidgets-utils.h" #include "gimptoolcontrol.h" +#include "gimptools-utils.h" #include "gimptransformoptions.h" #include "gimptransformtool.h" @@ -572,6 +573,8 @@ gimp_transform_tool_check_active_item (GimpTransformTool *tr_tool, if (locked_message) { g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED, locked_message); + if (error) + gimp_tools_blink_lock_box (display->gimp, item); return NULL; } diff --git a/app/tools/gimpwarptool.c b/app/tools/gimpwarptool.c index 513d60f2ff..e0f1e4e7fa 100644 --- a/app/tools/gimpwarptool.c +++ b/app/tools/gimpwarptool.c @@ -48,6 +48,7 @@ #include "gimpwarptool.h" #include "gimpwarpoptions.h" #include "gimptoolcontrol.h" +#include "gimptools-utils.h" #include "gimp-intl.h" @@ -629,6 +630,8 @@ gimp_warp_tool_can_stroke (GimpWarpTool *wt, { gimp_tool_message_literal (tool, display, _("The active layer's pixels are locked.")); + + gimp_tools_blink_lock_box (display->gimp, GIMP_ITEM (drawable)); } return FALSE;