diff --git a/src/becca/entities/note.js b/src/becca/entities/note.js index 75e4c30f7..4e2593c48 100644 --- a/src/becca/entities/note.js +++ b/src/becca/entities/note.js @@ -1332,6 +1332,10 @@ class Note extends AbstractEntity { return this.type === 'launcher' || ['lbRoot', 'lbAvailableShortcuts', 'lbVisibleShortcuts']; } + isOptions() { + return this.noteId.startsWith("options"); + } + get isDeleted() { return !(this.noteId in this.becca.notes) || this.isBeingDeleted; } diff --git a/src/public/app/entities/note_short.js b/src/public/app/entities/note_short.js index fda1b5453..3f42c1c23 100644 --- a/src/public/app/entities/note_short.js +++ b/src/public/app/entities/note_short.js @@ -830,6 +830,10 @@ class NoteShort { isLaunchBarConfig() { return this.type === 'launcher' || ['lbRoot', 'lbAvailableShortcuts', 'lbVisibleShortcuts'].includes(this.noteId); } + + isOptions() { + return this.noteId.startsWith("options"); + } } export default NoteShort; diff --git a/src/public/app/widgets/note_tree.js b/src/public/app/widgets/note_tree.js index b27d58e90..350431efc 100644 --- a/src/public/app/widgets/note_tree.js +++ b/src/public/app/widgets/note_tree.js @@ -398,7 +398,8 @@ export default class NoteTreeWidget extends NoteContextAwareWidget { autoExpandMS: 600, preventLazyParents: false, dragStart: (node, data) => { - if (['root', 'hidden', 'lbRoot', 'lbAvailableLaunchers', 'lbVisibleLaunchers'].includes(node.data.noteId)) { + if (['root', 'hidden', 'lbRoot', 'lbAvailableLaunchers', 'lbVisibleLaunchers'].includes(node.data.noteId) + || node.data.noteId.startsWith("options")) { return false; } @@ -428,6 +429,8 @@ export default class NoteTreeWidget extends NoteContextAwareWidget { return false; } else if (node.data.noteId === 'lbRoot') { return false; + } else if (node.data.noteId.startsWith('options')) { + return false; } else if (node.data.noteType === 'launcher') { return ['before', 'after']; } else { @@ -565,7 +568,7 @@ export default class NoteTreeWidget extends NoteContextAwareWidget { $span.append($refreshSearchButton); } - if (!['search', 'launcher'].includes(note.type)) { + if (!['search', 'launcher'].includes(note.type) && !note.isOptions()) { const $createChildNoteButton = $(''); $span.append($createChildNoteButton); diff --git a/src/services/notes.js b/src/services/notes.js index d5111b82c..462e22910 100644 --- a/src/services/notes.js +++ b/src/services/notes.js @@ -114,14 +114,10 @@ function getAndValidateParent(params) { throw new Error(`Launchers should not have child notes.`); } - if (!params.ignoreForbiddenParents && ['lbRoot'].includes(parentNote.noteId)) { + if (!params.ignoreForbiddenParents && (parentNote.isLaunchBarConfig() || parentNote.isOptions())) { throw new Error(`Creating child notes into '${parentNote.noteId}' is not allowed.`); } - if (['lbAvailableLaunchers', 'lbVisibleLaunchers'].includes(parentNote.noteId) && params.type !== 'launcher') { - throw new Error(`Creating child notes into '${parentNote.noteId}' is only possible for type 'launcher'.`); - } - return parentNote; }