Skip to content

Commit 3aa6ea1

Browse files
committed
suppress keyboard-initiated firefox builtin context menu in power_tree.js
change tabulator context menu mixin to listen to contextmenu event instead of keydown suppress keyboard-initiated context menu in tabulator context menu mixin
1 parent 2857be3 commit 3aa6ea1

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

pgmanage/app/static/pgmanage_frontend/src/components/DataEditorTab.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
</div>
2828
</div>
2929

30-
<div ref="tabulator" class="tabulator-custom data-grid grid-height" @keydown.delete="clearSelectedData">
30+
<div ref="tabulator" class="tabulator-custom data-grid grid-height" @keydown.delete="clearSelectedData">
31+
<!-- tabulator placeholder -->
3132
</div>
3233

3334
<div ref="bottomToolbar" class="data-editor__footer d-flex align-items-center justify-content-end p-2">

pgmanage/app/static/pgmanage_frontend/src/mixins/power_tree.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export default {
7272
});
7373
const treeEl = document.getElementById(`${this.workspaceId}_tree`);
7474
if (treeEl) {
75+
treeEl.addEventListener("contextmenu", (e) => { e.preventDefault(); return false; });
7576
treeEl.addEventListener('keydown', this.handleTreeKeyboardNavigation);
7677
}
7778
},

pgmanage/app/static/pgmanage_frontend/src/mixins/tabulator_context_menu_mixin.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,20 @@ export default {
22
watch: {
33
tabulator: {
44
handler() {
5-
this.tabulator.element.addEventListener("keydown", (e) => {
6-
if (e.key === "ContextMenu" || (e.shiftKey && e.code === "F10")) {
7-
e.preventDefault();
5+
this.tabulator.element.addEventListener("contextmenu", (e) => {
6+
e.preventDefault();
7+
// this means that is a keyboard event
8+
if(e.buttons === 0 ) {
9+
e.stopPropagation();
810
let selectedRange = this.tabulator.getRanges()[0];
911
let selectedCell = selectedRange.getCells()[0][0];
1012
let cellElement = selectedCell.getElement();
1113
const rect = cellElement.getBoundingClientRect();
1214
const event = new MouseEvent("contextmenu", {
1315
bubbles: true,
16+
// button flags make this look like a real mouse event
17+
button: 2,
18+
buttons: 2,
1419
clientX: rect.left + rect.width / 2,
1520
clientY: rect.top + rect.height / 2,
1621
});

0 commit comments

Comments
 (0)