From 7b5257f7f39bc9adba16d0c63a8f70904fe0fff9 Mon Sep 17 00:00:00 2001 From: Julian Burner Date: Wed, 30 Aug 2023 16:48:47 +0200 Subject: Fix renaming classes via their constructor (#520) * Fix `Reset to obfuscated` on constructors * Fix renaming classes via their constructor * Fix `Reset to obfuscated` not getting updated on constructors * Fix checkstyle * Remove unnecessary cast--- enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java | 2 +- .../java/cuchaz/enigma/gui/elements/EditorPopupMenu.java | 11 +++++++---- .../java/cuchaz/enigma/gui/panels/IdentifierPanel.java | 15 ++++++++++++--- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java index 4c108cd..1101315 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java @@ -418,7 +418,7 @@ public class Gui { return; } - Entry obfEntry = cursorReference.entry; + Entry obfEntry = cursorReference.getNameableEntry(); toggleMappingFromEntry(obfEntry); } diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorPopupMenu.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorPopupMenu.java index 2882218..dd37798 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorPopupMenu.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorPopupMenu.java @@ -176,11 +176,14 @@ public class EditorPopupMenu { this.openNextItem.setEnabled(controller.hasNextReference()); this.toggleMappingItem.setEnabled(isRenamable && (type != null && this.gui.isEditable(type))); - if (referenceEntry != null && this.gui.getController().project.getMapper().extendedDeobfuscate(referenceEntry).isDeobfuscated()) { - this.toggleMappingItem.setText(I18n.translate("popup_menu.reset_obfuscated")); - } else { - this.toggleMappingItem.setText(I18n.translate("popup_menu.mark_deobfuscated")); + boolean isDeobfuscated = false; + + if (referenceEntry != null) { + Entry entryToCheck = !isConstructorEntry ? referenceEntry : referenceEntry.getContainingClass(); + isDeobfuscated = this.gui.getController().project.getMapper().extendedDeobfuscate(entryToCheck).isDeobfuscated(); } + + this.toggleMappingItem.setText(I18n.translate("popup_menu." + (isDeobfuscated ? "reset_obfuscated" : "mark_deobfuscated"))); } public void retranslateUi() { diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/IdentifierPanel.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/IdentifierPanel.java index 7ba0376..8384cb7 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/IdentifierPanel.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/IdentifierPanel.java @@ -191,12 +191,21 @@ public class IdentifierPanel { } private void validateRename(String newName) { - gui.getController().validateChange(vc, EntryChange.modify(entry).withDeobfName(newName)); + gui.getController().validateChange(vc, withDeobfName(newName)); } private void doRename(String newName) { - EntryChange> change = EntryChange.modify(entry).withDeobfName(newName); - gui.getController().applyChange(vc, change); + gui.getController().applyChange(vc, withDeobfName(newName)); + } + + private EntryChange> withDeobfName(String newName) { + Entry entryToRename = entry; + + if (entryToRename instanceof MethodEntry methodEntry && methodEntry.isConstructor()) { + entryToRename = methodEntry.getContainingClass(); + } + + return EntryChange.modify(entryToRename).withDeobfName(newName); } public void retranslateUi() { -- cgit v1.2.3