Diffusion Krita a49ec4b07465

Implement a feedback for barrier blocking when doing some actions

Authored by dkazakov on Nov 22 2016, 8:59 AM.

Description

Implement a feedback for barrier blocking when doing some actions

Summary:
Some actions should not be started before all the previous actions
are finished. That is especially true for the actions that work
with layers stack, like "Merge Down" and "Flatten".

Now KisDelayedSaveDialog is used not only for saving, but also for
waiting before doing usual actions. It also has a busy-loop timeout of
1 second before showing up, for not distracting painters from their
workflow when the action is postponed only a little bit.

BUG:372724
Fixes T4593

Test Plan:
Basically, the steps like in bug 372724.

  1. Select multiple layers
  2. Start a long stroke (1000px colorsmudge brush is a good example)
  3. Press Ctrl+E *multiple* times quickly
  4. After all the background work is finished, press Ctrl+Z

There should be no crash, and the result should be somewhat expected.

Repeat the same for:

  1. Merge down
  2. Flatten Image
  3. Flatten Layer
  4. Transform a layer using "Layers" menu(?)

Reviewers: Krita, timotheegiet, scottpetrovic

Maniphest Tasks: T4593

Differential Revision: https://phabricator.kde.org/D3449