• jan@cosmigo.com

Enable consistent canceling of drawing operations


#1

If all tools requiring multiple clicks (or even just one click and drag) uniformly allowed us to cancel the drawing operation without requiring the final click, it could mean an increase in user friendliness, especially for new users. Unfortunately, how and when you can cancel different tools’ drawing operations is inconsistent. I suggest the ESC key be honored as the universal cancel key every time.

example:
Rotated Oval tool doesn’t allow canceling when choosing rotation, after dragging out an oval. Neither ESC key or RMB will cancel.
Filled Rotated Oval tool allows canceling with ESC key while choosing rotation.
Why are they different? I often misremember how each tool behaves since some are seemingly random

example:
Similarly, the Curve tool allows canceling with ESC while RMB (if you used LMB for first click) behaves like LMB after the first click, but Polygonal Line tool does not allow canceling with ESC, but does cancel if you use RMB (assuming you used LMB to start drawing). Why can’t they behave the same way so you don’t have to memorize every tool’s behavior?

Yes, switching tools or pressing the current tool’s keyboard shortcut will usually cancel the current operation, but now that each tool can have its own keyboard shortcut, regardless of which tool group they’re grouped into, this doesn’t work as well as it used to. Though I’ve set a shortcut for every tool, I don’t have them all memorized and I never will, since some are pretty obtuse (and used rarely). Being required to press a different specific key to cancel the current drawing operation depending on which tool I’m using is unnecessarily cumbersome.

Seems like the best solution is simply letting ESC kill the current drawing operation, no matter what it is. Single click/drag operations included (such as Line tool and Rectangle tool).
Let ESC be the reliable way to cancel any drawing operation whenever possible. Photoshop uses ESC for its universal cancel key - even for single click+drag+release operations like drawing a rectangle.


sidenote: I think it’s these little quirks and inconsistencies that are partly to blame for so many users shying away from using Pro Motion seriously when they’re new to it - unnecessarily increasing the learning curve. In my opinion PMNG simply doesn’t behave like you expect it to, at many ways. I would like to see PMNG become the #1 used pixel art tool because it’s the best out there, but silly ux stuff like this may be holding it back.


#2

Mathias, I can agree but let’s take it a step further and make it so when you draw a line and cancel in the middle of it it cancels the current operation not the operation before it. Man that’s a pain and I seriously don’t know why The greatest Pixel program in the world acts like that. But let’s give credit it’s due and say at the same time Jan@cosmigo has done an phenomenal job in making this the incredible program that it is!


#3

Hi there,

thanks for your thoughts. With 7.3 all tools are coded from scratch and there I have the chance make things more consistent. I’m not sure if I understood all the problems, so let’s define the final behavior.

Questions:
Do simple, single step drawing tools (continuous, single dot, single drag like line rectangle…) to be cancelled while you still holding mouse down?

What if the tool isn’t a drawing tool but one that picks up or (see below) transforms the brush? Such tools jump to the last drawing tool when they finished normally.

Things I would do (and already did in part)…
ESC is the default key to cancel a multi step tool or to make it go back one step if possible. This key can be changed.
“opposite mouse button” ends certain multi step operations that have already defined parts. Actually this can make sense for polygon tools:

  • don’t add a new line with polygon line
  • execute fill with filled polygon tool or polygon brush pick up

With multi process tools ESC will go back one step, when possible. Examples:
The new multi transform for brushes has several steps like:

  • place the brush
  • transform

When you are in transform mode you go back to place mode. When you are in place mode then the previous drawing tool is selected,
Same will do with new tools for: brush rotate, shear, bend
See the new transform tool in action here:


You transform the brush, not the floating selection in this case. And you can stamp the brush while transforming.

The rotated ellipse tool (and new rotated ellipse selection tool) will be changed to work like the transformation tool. You first define the ellipse or circle. Then you can change size and rotation with such onscreen handles. This allows for better control instead of using extra keys to fiddle around when you want to change the size although you are in rotation step.
Although this is a multi-step tool, ESC would not be able to go back one step because the first step (defining the initial circle/oval) is a drag operation that requires mouse button being down.
So, ESC would reset the tool completely.

Floating selection transforming tools will start on a defined selection and should work like this:
If transformation has started then transformation is reset, but tool is still active.
If no transformation done then ESC will go to the tool previously used, cancelling the transformation tool.
Do you agree?

To me this makes ESC work like going stepwise backward where possible which should be intuitive?

Any thoughts welcome. I’m on this topic at the moment (concerning programming), so NOW is the right time to define how it will be working so that I can do it the right way.

-Jan


#4

Hello Jan@cosmigo thank you for getting back with us. ESC key would be nice to cancel an operation half way in the middle of it. It would be nice if you could press either ESC or , key to go back to single pixel. I’m not going to lie to you I do mostly 3d artwork and I like it that when an operation is over when changing the delta it goes back to the previous delta very convient. However it would be nice to have a the current delta that you are working on over ride the previous delta by pressing a key. I don’t know if all operations should go back to the previous operation when you are done with the last one but I know it helps in 3d.I think when you press the esc key it should cancel the operation your working on period. but that may just be just me.Please don’t make it go back one step please let Undo do that.Thank you for all your help.


#5

This one’s not so easy is it. Hmm let’s see . . .

Do simple, single step drawing tools (continuous, single dot, single drag like line rectangle…) to be cancelled while you still holding mouse down?

Yes. (cool idea)
Not even Photoshop does this for drawn strokes.
If you’re drawing a big stroke but before you even finish it, and you know you’re going to hit ctrl+z afterward (for whatever reason) - being able to instead cancel it before you even complete the stroke seems pretty intuitive and useful.
If cancelled mid-stroke, it would be like the stroke never happened. While still pressing your stylus or holding LMB, ESC would kill the stroke, then you’d lift your stylus/release LMB and nothing happens - the stroke is gone.

What if the tool isn’t a drawing tool but one that picks up or (see below) transforms the brush? Such tools jump to the last drawing tool when they finished normally.

I’m a huge fan of jumping back to the last drawing tool used. Seems prudent to go ahead and jump back if the user voluntarily cancelled the operation. If they want to re-try, they can manually switch tools and try again.

“opposite mouse button” ends certain multi-step operations that have already defined parts. Actually this can make sense for polygon tools:

  • don’t add a new line with polygon line
  • execute fill with filled polygon tool or polygon brush pick up

Opposite mouse button (OMB) canceling is very useful and convenient.
If OMB cancels something, then ESC could as well, BUT we could consider it a more powerful way to cancel an operation, like it does for the Filled Polygon/Contour tool - OMB will finish the shape but ESC will totally cancel it.
In the case of the Polygon Line tool, I view drawing each line as a separate operation with it’s own undo state. So, if I select the Polygon Line tool and click only once, I start a line and the other end of the line is actively drawn to my cursor as PMNG waits for me to click again to complete that first line. During this, it seems best if OMB and ESC cancel the operation altogether, leaving nothing behind - including the first click.
BUT, if I’m in the process of drawing lots of lines with the Polygon Line tool, clicking many times drawing numerous lines, then while I’m doing that - pressing OMB could cancel only the current line drawn to my cursor and all the others remain (OMB currently already does this) and the operation is complete. Alternatively, if I want to cancel AND undo all the lines I just drew then why not have ESC do exactly that - undo everything I just did after that first click. Now there’s two different ways to cancel this multi-step operation depending on your intent.

With multi process tools ESC will go back one step, when possible. Examples:
The new multi transform for brushes has several steps like:

  • place the brush
  • transform

Perhaps two consecutive ESC presses could signal to PMNG the user wishes to do a complete cancel, while a single ESC press would undo only the most previous step, if applicable.

The rotated ellipse tool (and new rotated ellipse selection tool) will be changed to work like the transformation tool. You first define the ellipse or circle. Then you can change size and rotation with such onscreen handles. This allows for better control instead of using extra keys to fiddle around when you want to change the size although you are in rotation step.
Although this is a multi-step tool, ESC would not be able to go back one step because the first step (defining the initial circle/oval) is a drag operation that requires mouse button being down.
So, ESC would reset the tool completely.

Understood. Sounds perfect.
These are multi-step operations in that they require multiple clicks, but unless you complete the whole operation the first click doesn’t really matter, so canceling the whole thing with either OMB or ESC seems right.

Floating selection transforming tools will start on a defined selection and should work like this:
If transformation has started then transformation is reset, but tool is still active.
If no transformation done then ESC will go to the tool previously used, canceling the transformation tool.
Do you agree?

Yes, I believe so.

To me this makes ESC work like going stepwise backward where possible which should be intuitive?

The Filled Polygon/Contour tool is an interesting case. I use this tool a lot (often with Selection mode because it turns it into a powerful selection tool but you’ve replaced that with the new upcoming Free Form/Polygon selection tool so that’s great) and it uses multiple steps.
How this particular tool works right now, in the current stable build, is pretty ideal - ESC will cancel it altogether while OMB finalizes it. This is great.
But we can learn one additional convenient gimmick from Photoshop to further enhance convenience - double-clicking. This can place the last point AND finalize the shape.
Demonstrated in this GIF, using Photoshop’s polygonal lasso tool: https://i.imgur.com/zcjOmrH.gif
Just one more thing to ponder when offering intuitive ways to cancel or complete multi step drawing operations. In the current PMNG, you can get the same effect by clicking once then OMB clicking on the same pixel to finalize.


While testing tools I found some oddity in the Curve line tool’s behavior - if you just single click without click dragging - PMNG will start a line but only draw the line halfway to your cursor then finalize a straight line if you click again, not ever allowing you the opportunity to define its curve.
Seems like one click could start the line and a second click create a straight line, then where you click a third time define the curvature.
I mean in addition to being able to click and drag out a line, then release mouse, then click once to define the curve like we do now.