mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-10-23 05:31:02 +00:00
Merge remote-tracking branch
'origin/GP-4297_fix_screen_reader_duplicate_line_reading--SQUASHED' into patch (Closes #6177)
This commit is contained in:
commit
19812a1ecb
|
@ -18,6 +18,7 @@ package ghidra.app.util.viewer.field;
|
|||
import docking.widgets.fieldpanel.FieldDescriptionProvider;
|
||||
import docking.widgets.fieldpanel.field.Field;
|
||||
import docking.widgets.fieldpanel.support.FieldLocation;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.util.ProgramLocation;
|
||||
|
||||
public class ListingFieldDescriptionProvider implements FieldDescriptionProvider {
|
||||
|
@ -27,8 +28,9 @@ public class ListingFieldDescriptionProvider implements FieldDescriptionProvider
|
|||
if (field instanceof ListingField listingField) {
|
||||
FieldFactory fieldFactory = listingField.getFieldFactory();
|
||||
ProgramLocation location = fieldFactory.getProgramLocation(0, 0, listingField);
|
||||
return fieldFactory.getFieldName() + " Field at Address " + location.getAddress() +
|
||||
" text = " + field.getText();
|
||||
Address address = location.getAddress();
|
||||
String addressString = address.toString(address.getAddressSpace().showSpaceName(), 1);
|
||||
return fieldFactory.getFieldName() + " Field at Address " + addressString;
|
||||
}
|
||||
return "Unknown Field";
|
||||
}
|
||||
|
|
|
@ -102,13 +102,22 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene
|
|||
ByteBlockInfo info = indexMap.getBlockInfo(fieldLoc.getIndex(), fieldLoc.getFieldNum());
|
||||
if (info != null) {
|
||||
String modelName = model.getName();
|
||||
return modelName + " format at " +
|
||||
info.getBlock().getLocationRepresentation(info.getOffset()) + ", value = " +
|
||||
field.getText();
|
||||
String location = getAccessibleLocationInfo(info.getBlock(), info.getOffset());
|
||||
return modelName + " format at " + location;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getAccessibleLocationInfo(ByteBlock block, BigInteger offset) {
|
||||
if (block instanceof MemoryByteBlock memBlock) {
|
||||
// location represents an address, remove leading zeros to make screen reading concise
|
||||
Address address = memBlock.getAddress(offset);
|
||||
return address.toString(address.getAddressSpace().showSpaceName(), 1);
|
||||
}
|
||||
// otherwise use generic location representation
|
||||
return block.getLocationRepresentation(offset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void buttonPressed(FieldLocation fieldLocation, Field field, MouseEvent mouseEvent) {
|
||||
if (fieldLocation == null || field == null) {
|
||||
|
|
|
@ -16,9 +16,7 @@
|
|||
package ghidra.app.decompiler.component;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.ComponentAdapter;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.*;
|
||||
import java.math.BigInteger;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
|
@ -45,7 +43,6 @@ import ghidra.app.decompiler.component.hover.DecompilerHoverService;
|
|||
import ghidra.app.decompiler.component.margin.*;
|
||||
import ghidra.app.plugin.core.decompile.DecompilerClipboardProvider;
|
||||
import ghidra.app.plugin.core.decompile.actions.FieldBasedSearchLocation;
|
||||
import ghidra.app.util.viewer.listingpanel.MarginProvider;
|
||||
import ghidra.app.util.viewer.util.ScrollpaneAlignedHorizontalLayout;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.listing.Function;
|
||||
|
@ -128,7 +125,7 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
|
|||
fieldPanel.addFieldMouseListener(this);
|
||||
fieldPanel.addFieldLocationListener(this);
|
||||
fieldPanel.addLayoutListener(this);
|
||||
|
||||
|
||||
fieldPanel.addComponentListener(new ComponentAdapter() {
|
||||
@Override
|
||||
public void componentResized(ComponentEvent e) {
|
||||
|
@ -1317,7 +1314,7 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
|
|||
if (f == null) {
|
||||
return null;
|
||||
}
|
||||
return "line " + (l.getIndex().intValue() + 1) + ", " + f.getText();
|
||||
return "line " + (l.getIndex().intValue() + 1);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user