Skip to content
Snippets Groups Projects
Commit c1627292 authored by David Sehnal's avatar David Sehnal
Browse files

mol-plugin: clear selection on Ctrl + right on nothing

parent c87af170
No related branches found
No related tags found
No related merge requests found
......@@ -73,7 +73,13 @@ export const SelectLoci = PluginBehavior.create({
this.subscribeObservable(this.ctx.events.canvas3d.click, ({ current, buttons, modifiers }) => {
if (!this.ctx.canvas3d) return;
if (StructureElement.isLoci(current.loci)) {
if (current.loci.kind === 'empty-loci') {
if (modifiers.control && buttons === ButtonsType.Flag.Secondary) {
// clear the selection on Ctrl + Right-Click on empty
const sels = sel.clear();
for (const s of sels) this.ctx.canvas3d.mark({ loci: s }, MarkerAction.Deselect);
}
} else if (StructureElement.isLoci(current.loci)) {
if (modifiers.control && buttons === ButtonsType.Flag.Secondary) {
// select only the current element on Ctrl + Right-Click
const old = sel.get(current.loci.structure);
......
......@@ -50,6 +50,19 @@ class StructureElementSelectionManager {
return entry.selection.elements.length === 0 ? EmptyLoci : entry.selection;
}
clear() {
const keys = this.entries.keys();
const selections: StructureElement.Loci[] = [];
while (true) {
const k = keys.next();
if (k.done) break;
const s = this.entries.get(k.value)!;
if (s.selection.elements.length > 0) selections.push(s.selection);
s.selection = StructureElement.Loci(s.selection.structure, []);
}
return selections;
}
get(structure: Structure) {
const entry = this.getEntry(structure);
if (!entry) return EmptyLoci;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment