Context
When text widgets are created rapidly from the Widgets menu, their default positions are not offset. Newly created widgets are placed at the same location and overlap each other.
Requested behavior
Each newly created text widget should use the following default positioning sequence:
- First widget: 20% from the left and 20% from the top
- Each subsequent creation: increase both coordinates by 5%
- After the ten-position sequence: restart at 20% / 20%
- If more than two minutes have elapsed since the previous creation: restart at 20% / 20%
The behavior must also work when widgets are created several times in rapid succession from the Widgets menu.
Acceptance criteria
- Rapidly creating four text widgets produces four distinct positions.
- The first widget starts at 20% / 20%.
- Each following widget is offset by 5% horizontally and vertically.
- The sequence restarts at 20% / 20% after ten creations.
- The sequence restarts at 20% / 20% after two minutes without a text widget creation.
- Existing widgets retain their saved positions when rendered again.
Use case to reproduce the error
- Action performed: Open the Widgets menu and create a text widget four times in rapid succession.
- Expected result: Each widget is positioned with the next 5% offset.
- Actual result: All widgets are created at the same position and overlap.
- Reproducibility: Reproducible when creating widgets rapidly from the Widgets menu.
Technical notes
The issue appears to be related to the dynamic rendering path used by the Widgets menu. A subsequent render can overwrite the position properties assigned during widget creation.
Context
When text widgets are created rapidly from the Widgets menu, their default positions are not offset. Newly created widgets are placed at the same location and overlap each other.
Requested behavior
Each newly created text widget should use the following default positioning sequence:
The behavior must also work when widgets are created several times in rapid succession from the Widgets menu.
Acceptance criteria
Use case to reproduce the error
Technical notes
The issue appears to be related to the dynamic rendering path used by the Widgets menu. A subsequent render can overwrite the position properties assigned during widget creation.