mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-09-27 04:24:13 +02:00
Paste under the cursor and let it be positioned before it lands
Ctrl+V pasted in place, which put the copy exactly on top of the original. Nothing appeared to happen: the only clue was a doubled outline, and the copy had to be dragged off the original to be seen at all. The cursor was ignored entirely. Ctrl+V now starts a placement. The items appear under the cursor and follow it until a left click or Return drops them; Escape or a right click takes them away again. That is the same interaction as placing a new element, so paste behaves like every other way of putting something on a folio, and the copy lands where the user is looking. Implemented as a DiagramEventInterface beside the existing add-element and add-macro tools. The pasted items are the real ones from the start rather than a preview: Diagram::fromXml creates them exactly as before, this class moves them, and PasteDiagramCommand is pushed only once they are dropped. PasteDiagramCommand's first redo() deliberately does not add items to the scene -- it assumes fromXml already did -- so pushing it on commit adopts them rather than duplicating them. One copy of the paste logic, and a cancelled paste leaves nothing on the undo stack. Conductors are not moved directly; they are drawn from their terminals and follow the elements they attach to. On cancel they are removed before the elements, so none is left in the scene holding a pointer to a freed terminal. Verified by counting elements in the saved file rather than by eye: 56 to start, 56 after paste-then-Escape, 57 after paste-then-drop, and 56 again after undo. Save determinism run against this build: pass, no regressions against baseline. Tests 5/5 on Qt 6. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -330,6 +330,8 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/diagramevent/diagrameventinterface.h
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddmacro.cpp
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddmacro.h
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddpaste.cpp
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddpaste.h
|
||||
|
||||
${QET_DIR}/sources/dvevent/dveventinterface.cpp
|
||||
${QET_DIR}/sources/dvevent/dveventinterface.h
|
||||
|
||||
Reference in New Issue
Block a user