Spaces:
Build error
Build error
Commit ·
4bea2a3
1
Parent(s): c10cf61
Refine 3Dmol.js interactions: avoid duplicate listeners and improve click handling
Browse files
app.py
CHANGED
|
@@ -361,6 +361,9 @@ THREEDMOL_HEAD = """
|
|
| 361 |
else {
|
| 362 |
_viewer = $3Dmol.createViewer(el, {backgroundColor: '0xffffff'});
|
| 363 |
_viewer.setClickable(true);
|
|
|
|
|
|
|
|
|
|
| 364 |
}
|
| 365 |
}
|
| 366 |
|
|
@@ -479,18 +482,16 @@ THREEDMOL_HEAD = """
|
|
| 479 |
model.setHoverable(true);
|
| 480 |
}
|
| 481 |
|
| 482 |
-
_viewer.on('click', function(atom, event) {
|
| 483 |
-
if (atom) handleAtomClick(atom, event);
|
| 484 |
-
});
|
| 485 |
-
|
| 486 |
// Disable context menu on the viewer to allow right-click deselection
|
| 487 |
var el = document.getElementById('mol3d-container');
|
| 488 |
el.oncontextmenu = function(e) {
|
| 489 |
e.preventDefault();
|
| 490 |
-
// If we didn't hit an atom (handled by handleAtomClick), we clear all
|
| 491 |
if (_selectedAtoms.length > 0) {
|
| 492 |
-
//
|
| 493 |
-
//
|
|
|
|
|
|
|
|
|
|
| 494 |
}
|
| 495 |
return false;
|
| 496 |
};
|
|
|
|
| 361 |
else {
|
| 362 |
_viewer = $3Dmol.createViewer(el, {backgroundColor: '0xffffff'});
|
| 363 |
_viewer.setClickable(true);
|
| 364 |
+
_viewer.on('click', function(atom, event) {
|
| 365 |
+
if (atom && atom.index !== undefined) handleAtomClick(atom, event);
|
| 366 |
+
});
|
| 367 |
}
|
| 368 |
}
|
| 369 |
|
|
|
|
| 482 |
model.setHoverable(true);
|
| 483 |
}
|
| 484 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 485 |
// Disable context menu on the viewer to allow right-click deselection
|
| 486 |
var el = document.getElementById('mol3d-container');
|
| 487 |
el.oncontextmenu = function(e) {
|
| 488 |
e.preventDefault();
|
|
|
|
| 489 |
if (_selectedAtoms.length > 0) {
|
| 490 |
+
// If we right-clicked but handleAtomClick didn't catch an atom, clear all
|
| 491 |
+
// We use a small delay to see if handleAtomClick triggers first
|
| 492 |
+
setTimeout(() => {
|
| 493 |
+
if (_selectedAtoms.length > 0) clearSelections();
|
| 494 |
+
}, 50);
|
| 495 |
}
|
| 496 |
return false;
|
| 497 |
};
|