SUMMARY This is seen in the 4.4.2 appinage and the latest Feb 14 4.4.3-alpha (git 212236c) and 5.0.0-prealpha (git 5d76047). The 4.4.1 and previous appimages do not have this behaviour. An animated layer can not be 'de-animated' by using Flatten Layer. STEPS TO REPRODUCE 1. Create a new image, make a transparent layer animated with content. 2. In the Layers docker, do Flatten layer on that animated layer. 3. In the Edit menu, look at the Undo action. OBSERVED RESULT 2. The layer is not converted to a static paint layer. 3. The Undo item is 'Undo Convert to a Paint Layer'. EXPECTED RESULT 2. The animated layer should be converted to a paint layer with whatever content was on the selected frame of the animation. SOFTWARE/OS VERSIONS Krita Version: 5.0.0-prealpha (git 5d76047) Languages: en_GB, en, en, en_GB, en Hidpi: false Qt Version (compiled): 5.12.9 Version (loaded): 5.12.9 OS Information Build ABI: x86_64-little_endian-lp64 Build CPU: x86_64 CPU: x86_64 Kernel Type: linux Kernel Version: 4.19.0-13-amd64 Pretty Productname: Debian GNU/Linux 10 (buster) Product Type: debian Product Version: 10 Desktop: MATE OpenGL Info Vendor: "NVIDIA Corporation" Renderer: "GeForce GTX 750 Ti/PCIe/SSE2" Version: "4.6.0 NVIDIA 450.80.02" Shading language: "4.60 NVIDIA" Requested format: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::CompatibilityProfile) Current format: QSurfaceFormat(version 4.6, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::CompatibilityProfile) Version: 4.6 Supports deprecated functions true is OpenGL ES: false QPA OpenGL Detection Info supportsDesktopGL: true supportsOpenGLES: true isQtPreferOpenGLES: false
Created attachment 135700 [details] Simple test file I'm not sure about this. Before 4.4.2, the behaviour was as follows: - if the layer has a mask, flattening will merge the masks into the layer, but won't deanimate it. - if the layer doesn't have a mask, flattening will make it into a static layer. And now the behaviour is: - flattening will merge the masks into the layer (if there are any) without deanimating it. So now it looks more consistent. However in my opinion, the context menu is confusing anyway. The user doesn't know without making the action what would be the result. The "Merge layer..." doesn't work with just a layer and its masks anymore (I think it worked at some point...), so it cannot be used for this. Please note that it's important for animation creators (or at least beginners?) to be able to merge a layer with its masks without deanimating it. This is the only way to apply a filter or "move a whole animation" (multiple frames instead of just one). Especially in case of transform mask, it's easier to paint when it's merged. Right now it can be only done with "Flatten layer" or if you add an empty layer and merge with it... So to sum up: - either the person fixing need to ensure that it won't be deanimating in case when the layer has masks (even though I'm not a fan of contextual behaviour, it should be fine enough here), - or better, figure out some way to allow the user to choose between those two behaviours and make it clear which one does what?
For 'background context', what happened was: I accidentally animated the wrong paint layer image by right-click then Duplicate layer. Then I was unable to undo this action by any means. In 4.4.1, Flatten Layer will convert it back into a paint layer but the Undo will not, which is also the case going back to 4.3.0. If you animate a layer by right-click then Create Blank Frame and paint on it, then create another blank frame and paint on it, no amount of Undo will get you back to a clean image. Is there some kind of 'disconnect' of Undo functionality with animated layers beyond a certain number of animation actions?
We've talked about this during the meeting and the verdict is that this is the desired behavior. Flattening a layer should not result in any data loss, including animated content. If you really need to keep the contents of the layer on a specific animation frame, the appropriate thing to do here would be to copy the contents of the layer using select all > copy, and then paste into a new layer. This will give you just the desired content without any other keyframe data. We can revisit the idea of completely removing a channel later, as some of that might be nice to have in the scalar channel at some point.