• jan@cosmigo.com

Cursor position drawing error (cannot undo!)


(Ok, this is a fun one. And it’s a little hard to describe. I could make a screen recording of it happening but it’s hard to follow what I’m doing with without keys pressed being recorded and displayed on screen.)

The issue is basically that when deleting or merging down a layer (with keyboard shortcuts), if the mouse cursor with a brush is hovering above the layers being changed then a hole at the cursor’s location is permanently cut into the layer being merged into OR the layer below the layer being deleted.

Once this happens, it’s permanent - you can undo the layer merge or deletion but strangely this unwanted hole will remain. I guess PMNG can’t track that it happened so it’s not included in the undo buffer . . . or something like that.

For me, the solution is to ALWAYS be sure I move my mouse off of the canvas when deleting or merging layers (which I do frequently). I learned this the hard way after losing a bunch of detaily stuff I drew that got knocked out because my cursor had a large brush docked to it and I didn’t realize until I had already saved. Good times good times.

I’ll TRY to give some visuals, but honestly this bug is very easy to reproduce on your own.

^ Note the layer setup. IMPORTANT: the green circle is my brush docked to my cursor, IT IS NOT on a layer. Both layers labelled as blank are actually blank in this screenshot.

^ Here is what it looks like after merging “blank layer 1” down into “grey box”. An irreparable hole has been cut into “grey box” the same size as the bounding box of my green circle brush because I was hovering my cursor there at the time of merging.

^ Finally, this is what I get if i try to undo (looks like the first image but it’s not). This time the green circle IS actually in the file, it’s on the layer called “blank layer 1”, DESPITE having not clicked.
So, PMNG has not only cut a hole into “grey box” without realizing it (hence it cannot be undone) but it’s also stamped down the green circle brush on my top layer even though I never clicked.



More tests.

I was wrong - merging layers and deleting layers do cause different bugs, they’re not the same.

While hovering a brush over the canvas:

-Merging will knock a hole in the merge result layer but it CAN be undone, while the merged layer does get permanent damage because you CANNOT undo the brush stamp that happens where the cursor is.

-Deleting does both though - after trying to undo you’re left with permanent damage to both layers.

So you’ll wind up with something like is:

At this point, if I do it again with my cursor moved a little bit down and to the left of where it happened the first time and delete the “green oval” layer then I get this:

Must be something to do with the cursor getting included in the undo state snapshot saved to PMNG’s undo buffer.

The workaround for now is to just remember to move your cursor out of the canvas when merging or deleting.


This will all be fixed with 7.3 because I re-coded the whole canvas rendering.
In the current version the brush is directly rendered into the frame bitmap. This has historical reasons rooting back to a time when CPU and memory resources where not as good as they are today.
With 7.3 everything is rendered on the canvas(es) only and the brush shape (or rulers etc.) can not bake into the frame bitmap anymore.