diff --git a/HISTORY.md b/HISTORY.md
index a05221a7..39464c25 100755
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -89,6 +89,7 @@
### 2019-06-03
* Threads: fixed #2249, predicates inside generic WHEN hats should be able to pass upvars
* Blocks: fixed #1740
+* Blocks: fixed #670 and #1804
### 2019-06-02
* Objects, Store: made "pen down?" and "shown?" attributes watchable onstage
diff --git a/snap.html b/snap.html
index 186b6dec..1fd74d92 100755
--- a/snap.html
+++ b/snap.html
@@ -6,7 +6,7 @@
-
+
diff --git a/src/blocks.js b/src/blocks.js
index b0491eae..0b3c7358 100644
--- a/src/blocks.js
+++ b/src/blocks.js
@@ -12447,7 +12447,23 @@ CommentMorph.prototype.userMenu = function () {
menu.addItem(
"duplicate",
function () {
- myself.fullCopy().pickUp(myself.world());
+ var dup = myself.fullCopy(),
+ ide = myself.parentThatIsA(IDE_Morph),
+ blockEditor = myself.parentThatIsA(BlockEditorMorph),
+ world = myself.world();
+ dup.pickUp(world);
+ // register the drop-origin, so the comment can
+ // slide back to its former situation if dropped
+ // somewhere where it gets rejected
+ if (!ide && blockEditor) {
+ ide = blockEditor.target.parentThatIsA(IDE_Morph);
+ }
+ if (ide) {
+ world.hand.grabOrigin = {
+ origin: ide.palette,
+ position: ide.palette.center()
+ };
+ }
},
'make a copy\nand pick it up'
);