From 0aa18fd466dbadf040152965781ae5033f4a26af Mon Sep 17 00:00:00 2001 From: Aditya Toshniwal Date: Thu, 4 Jul 2019 14:49:09 +0100 Subject: [PATCH] Ensure drag/drop from the treeview works as expected on Firefox. Fixes #4429 --- docs/en_US/release_notes_4_11.rst | 1 + web/pgadmin/static/js/tree/tree.js | 4 ++++ web/pgadmin/tools/sqleditor/static/js/sqleditor.js | 8 +++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/en_US/release_notes_4_11.rst b/docs/en_US/release_notes_4_11.rst index 3b38ceaff..3ec511f40 100644 --- a/docs/en_US/release_notes_4_11.rst +++ b/docs/en_US/release_notes_4_11.rst @@ -18,4 +18,5 @@ Bug fixes | `Bug #4224 `_ - Prevent flickering of large tooltips on the Graphical EXPLAIN canvas. | `Bug #4395 `_ - EXPLAIN options should be Query Tool instance-specific. +| `Bug #4429 `_ - Ensure drag/drop from the treeview works as expected on Firefox. | `Bug #4437 `_ - Fix table icon issue when updating any existing field. \ No newline at end of file diff --git a/web/pgadmin/static/js/tree/tree.js b/web/pgadmin/static/js/tree/tree.js index 7e8ba3208..f0388f7e9 100644 --- a/web/pgadmin/static/js/tree/tree.js +++ b/web/pgadmin/static/js/tree/tree.js @@ -161,6 +161,10 @@ export class Tree { } origEvent.dataTransfer.setData('text', JSON.stringify(dropDetails)); + /* Required by Firefox */ + if(origEvent.dataTransfer.dropEffect) { + origEvent.dataTransfer.dropEffect = 'move'; + } /* setDragImage is not supported in IE. We leave it to * its default look and feel diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js index f7f6f8977..36f245d08 100644 --- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js +++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js @@ -366,13 +366,19 @@ define('tools.querytool', [ if(self.handler.is_query_tool) { self.query_tool_obj.setOption('dragDrop', true); self.query_tool_obj.on('drop', (editor, e) => { + /* Stop firefox from redirecting */ + if(e.preventDefault) { + e.preventDefault(); + } + if (e.stopPropagation) { + e.stopPropagation(); + } var cursor = editor.coordsChar({ left: e.x, top: e.y, }); var dropDetails = JSON.parse(e.dataTransfer.getData('text')); e.codemirrorIgnore = true; - e.dataTransfer.clearData('text'); editor.replaceRange(dropDetails.text, cursor); editor.focus(); editor.setSelection({