When the current tool cannot be used because the current layer is locked or invisible, let the user know by changing the cursor shape. e.g. simply add an easily recogniseable symbol such as the prohibition sign to the current cursor. At the moment, nothing happens when the user tries to paint on a locked layer. It can take a little while to work out why (Is the opacity zero? Am I set to erase something I haven't drawn yet?, is the brush too small?...). Reproducible: Always Would also (more or less) solve bug 299553.
Right now, we show a message popup when trying to paint on a locked layer. It's not always in the right location, and users might miss it. I'm not sure how easy on the fly cursor modification is going to be.
On the fly updating the cursor isn't hard, but it's very easy to introduce bugs elsewhere. :) I submitted a patch proposal (in review).
Thanks for the patch! It's going to need a bit of user testing before I dare to push it out, but it looks sane enough to me.
Git commit ea270cc15914463d445c63ddf85d1fa0f62ec4ea by Victor Wåhlström. Committed on 09/06/2015 at 12:37. Pushed by victorw into branch 'calligra/2.9'. REVIEW:123958 M +2 -0 krita/plugins/tools/defaulttools/kis_tool_brush.cc M +7 -0 krita/plugins/tools/defaulttools/kis_tool_ellipse.cc M +3 -0 krita/plugins/tools/defaulttools/kis_tool_ellipse.h M +7 -0 krita/plugins/tools/defaulttools/kis_tool_fill.cc M +2 -1 krita/plugins/tools/defaulttools/kis_tool_fill.h M +7 -0 krita/plugins/tools/defaulttools/kis_tool_gradient.cc M +3 -0 krita/plugins/tools/defaulttools/kis_tool_gradient.h M +6 -0 krita/plugins/tools/defaulttools/kis_tool_line.cc M +3 -0 krita/plugins/tools/defaulttools/kis_tool_line.h M +7 -0 krita/plugins/tools/defaulttools/kis_tool_move.cc M +3 -0 krita/plugins/tools/defaulttools/kis_tool_move.h M +6 -0 krita/plugins/tools/defaulttools/kis_tool_path.cc M +3 -0 krita/plugins/tools/defaulttools/kis_tool_path.h M +6 -0 krita/plugins/tools/defaulttools/kis_tool_pencil.cc M +3 -0 krita/plugins/tools/defaulttools/kis_tool_pencil.h M +6 -0 krita/plugins/tools/defaulttools/kis_tool_rectangle.cc M +3 -0 krita/plugins/tools/defaulttools/kis_tool_rectangle.h M +7 -0 krita/plugins/tools/tool_dyna/kis_tool_dyna.cpp M +3 -0 krita/plugins/tools/tool_dyna/kis_tool_dyna.h M +6 -0 krita/plugins/tools/tool_polygon/kis_tool_polygon.cc M +2 -0 krita/plugins/tools/tool_polygon/kis_tool_polygon.h M +6 -0 krita/plugins/tools/tool_polyline/kis_tool_polyline.cc M +3 -0 krita/plugins/tools/tool_polyline/kis_tool_polyline.h M +11 -11 krita/plugins/tools/tool_transform2/kis_tool_transform.cc M +3 -6 krita/plugins/tools/tool_transform2/kis_tool_transform.h M +33 -3 krita/ui/tool/kis_tool.cc M +11 -1 krita/ui/tool/kis_tool.h M +3 -1 krita/ui/tool/kis_tool_paint.cc M +0 -1 krita/ui/tool/kis_tool_paint.h http://commits.kde.org/calligra/ea270cc15914463d445c63ddf85d1fa0f62ec4ea