1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
Problem:
When working with the transform tool, the user performs many adjustments.
These adjustments should be aggregated into one transform, and always
performed from the original state of the image, as it was before the
first transformation adjustment was applied -- because otherwise
the quality degradation becomes too bad.
That means that all work with the transform tool should eventually
result in one transform command. However, when working with the transform
tool, the user expects to be able to undo various stages of his transform
actions. And undo should not undo to the original state, but to the previous
state.
When the user selects another tool, the definitive transform is applied.
This happens because selecting another tool calls the clear function of
the transform tool. One transform command should end up on the undo
stack.
When the user selects an action from the menu, like a filter,
the definitive transform should also be applied, and only
then the action from the menu.
Thus, we have two problems:
* Transforms should always be done from the original image, but undoing
the transform command should unto to the previous state.
* Pending transforms should be committed before a menu action is taken.
These problems can be solved in one go, without any of the complications
I created yesterday by always committing the transform to the undo history
in the transform() method, but by performing the transform from the original
paint device, as it was when the tool got activated.
Menu actions should reset the tool: for this we will need my complicated hack,
I propose resetting the transform tool after a command is added.
|