From 053ae92c1674c51201600e7e54b1d8763e8210fa Mon Sep 17 00:00:00 2001 From: SooStrator <49093091+SooStrator1136@users.noreply.github.com> Date: Tue, 26 May 2026 00:14:04 +0200 Subject: [PATCH 1/2] Account for renamed classes when counting mapped members --- .../recaf/ui/pane/MappingProgressPane.java | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/recaf-ui/src/main/java/software/coley/recaf/ui/pane/MappingProgressPane.java b/recaf-ui/src/main/java/software/coley/recaf/ui/pane/MappingProgressPane.java index bc53c68d1..c30c3bf80 100644 --- a/recaf-ui/src/main/java/software/coley/recaf/ui/pane/MappingProgressPane.java +++ b/recaf-ui/src/main/java/software/coley/recaf/ui/pane/MappingProgressPane.java @@ -448,19 +448,37 @@ public Node getNode() { wrapper.setOnMouseExited(e -> wrapper.setEffect(null)); // Track number of mapped members - int fields = 0; + + // Aggregate mappings are keyed by original class names -> resolve the original name in case a class was renamed + String mappingOwner = OriginalClassNameProperty.map(classInfo); + + List classFields = classInfo.getFields(); + int fields = classFields.size(); int mappedFields = 0; - for (FieldMember field : classInfo.getFields()) { - fields++; - if (mappings != null && mappings.getMappedFieldName(classInfo, field) != null) - mappedFields++; + if (mappings != null) { + for (var fieldMapping : mappings.getClassFieldMappings(mappingOwner)) { + // The workspace has the renamed member names but the key is the original name, so instead match against newName + for (var field : classFields) { + if (fieldMapping.getNewName().equals(field.getName()) && (fieldMapping.getDesc() == null || fieldMapping.getDesc().equals(field.getDescriptor()))) { + mappedFields++; + break; + } + } + } } - int methods = 0; + + List classMethods = classInfo.getMethods(); + int methods = classMethods.size(); int mappedMethods = 0; - for (MethodMember method : classInfo.getMethods()) { - methods++; - if (mappings != null && mappings.getMappedMethodName(classInfo, method) != null) - mappedMethods++; + if (mappings != null) { + for (var methodMapping : mappings.getClassMethodMappings(mappingOwner)) { + for (var method : classMethods) { + if (methodMapping.getNewName().equals(method.getName()) && methodMapping.getDesc().equals(method.getDescriptor())) { + mappedMethods++; + break; + } + } + } } boolean hasMappedRefs = HasMappedReferenceProperty.get(classInfo); From e6049c6525426d5ef31c0ca83a0584792acce65f Mon Sep 17 00:00:00 2001 From: SooStrator <49093091+SooStrator1136@users.noreply.github.com> Date: Tue, 26 May 2026 00:20:04 +0200 Subject: [PATCH 2/2] Add missing null check --- .../java/software/coley/recaf/ui/pane/MappingProgressPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recaf-ui/src/main/java/software/coley/recaf/ui/pane/MappingProgressPane.java b/recaf-ui/src/main/java/software/coley/recaf/ui/pane/MappingProgressPane.java index c30c3bf80..7887517ab 100644 --- a/recaf-ui/src/main/java/software/coley/recaf/ui/pane/MappingProgressPane.java +++ b/recaf-ui/src/main/java/software/coley/recaf/ui/pane/MappingProgressPane.java @@ -473,7 +473,7 @@ public Node getNode() { if (mappings != null) { for (var methodMapping : mappings.getClassMethodMappings(mappingOwner)) { for (var method : classMethods) { - if (methodMapping.getNewName().equals(method.getName()) && methodMapping.getDesc().equals(method.getDescriptor())) { + if (methodMapping.getNewName().equals(method.getName()) && (methodMapping.getDesc() == null || methodMapping.getDesc().equals(method.getDescriptor()))) { mappedMethods++; break; }