Disable writing keystrokes for readonly tags (imported)

This commit is contained in:
Jindra Petřík
2022-12-10 16:34:12 +01:00
parent a9522363f9
commit 8bbc35e516
2 changed files with 33 additions and 2 deletions

View File

@@ -469,6 +469,14 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
return;
}
TreeItem item = (TreeItem) paths[0].getLastPathComponent();
if (item instanceof Tag) {
if (((Tag)item).isReadOnly()) {
return;
}
}
if (e.getKeyCode() == KeyEvent.VK_UP) {
contextPopupMenu.moveUpDown(item, true);
}
@@ -564,6 +572,14 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
tagItems.add((Tag) item);
}
}
boolean allWritable = true;
for (TreeItem item:tagItems) {
if (((Tag)item).isReadOnly()) {
allWritable = false;
break;
}
}
if (e.getKeyCode() == 'C') {
if (e.isShiftDown()) {
contextPopupMenu.copyTagToClipboardWithDependenciesActionPerformed(null, tagItems);
@@ -571,7 +587,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
contextPopupMenu.copyTagToClipboardActionPerformed(null, tagItems);
}
}
if (e.getKeyCode() == 'X') {
if (e.getKeyCode() == 'X' && allWritable) {
contextPopupMenu.update(tagItems);
if (e.isShiftDown()) {
contextPopupMenu.cutTagToClipboardWithDependenciesActionPerformed(null);

View File

@@ -626,8 +626,23 @@ public class TagTreeContextMenu extends JPopupMenu {
public boolean canRemove(final List<TreeItem> items) {
for (TreeItem item : items) {
if (!(item instanceof Tag) && !(item instanceof Frame)) {
if (item instanceof Tag)
{
if (((Tag)item).isReadOnly()) {
return false;
}
} else if (item instanceof Frame) {
Frame frame = (Frame) item;
if (frame.timeline.timelined instanceof DefineSpriteTag) {
if (((Tag)frame.timeline.timelined).isReadOnly()) {
return false;
}
}
} else {
if (item instanceof TagScript) {
if (((TagScript)item).getTag().isReadOnly()) {
return false;
}
continue;
}