more changes

This commit is contained in:
ghidravore
2019-11-01 14:19:54 -04:00
parent e32da55cca
commit d4afc4a3f1
2 changed files with 25 additions and 24 deletions
@@ -463,17 +463,20 @@ public class ListingPanel extends JPanel implements FieldMouseListener, FieldLoc
for (MarginProvider element : marginProviders) {
element.setPixelMap(pixmap);
}
if (!displayListeners.isEmpty()) {
AddressSetView displayAddresses = pixmap.getAddressSet();
for (ListingDisplayListener listener : displayListeners) {
try {
listener.visibleAddressesChanged(displayAddresses);
}
catch (Throwable t) {
Msg.showError(this, fieldPanel, "ListingDisplayListener Error",
"Error occurred in calling client's ListingDisplayListener", t);
}
}
for (ListingDisplayListener listener : displayListeners) {
notifyDisplayListener(listener);
}
}
private void notifyDisplayListener(ListingDisplayListener listener) {
AddressSetView displayAddresses = pixmap.getAddressSet();
try {
listener.visibleAddressesChanged(displayAddresses);
}
catch (Throwable t) {
Msg.showError(this, fieldPanel, "Error in Display Listener",
"Execption encountered in client callback", t);
}
}
@@ -18,6 +18,7 @@ package ghidra.app.util.viewer.listingpanel;
import static org.junit.Assert.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import org.junit.*;
@@ -50,11 +51,6 @@ public class ListingPanelTest extends AbstractGhidraHeadedIntegrationTest {
private Program program;
private AddressFactory addrFactory;
private AddressSpace space;
private AddressSetView addresses = null;
public ListingPanelTest() {
super();
}
@Before
public void setUp() throws Exception {
@@ -309,24 +305,26 @@ public class ListingPanelTest extends AbstractGhidraHeadedIntegrationTest {
@Test
public void testListingDisplayListener() {
showTool(tool);
AtomicReference<AddressSetView> addresses = new AtomicReference<>();
CodeViewerService cvs = tool.getService(CodeViewerService.class);
cvs.addListingDisplayListener(new ListingDisplayListener() {
@Override
public void visibleAddressesChanged(AddressSetView visibleAddresses) {
addresses = visibleAddresses;
addresses.set(visibleAddresses);
}
});
assertNull(addresses);
assertNull(addresses.get());
cvs.goTo(new ProgramLocation(program, addr(0x1008000)), false);
assertNotNull(addresses);
assertTrue(addresses.contains(addr(0x1008000)));
assertFalse(addresses.contains(addr(0x1001000)));
assertNotNull(addresses.get());
assertTrue(addresses.get().contains(addr(0x1008000)));
assertFalse(addresses.get().contains(addr(0x1001000)));
cvs.goTo(new ProgramLocation(program, addr(0x1001000)), false);
assertNotNull(addresses);
assertFalse(addresses.contains(addr(0x1008000)));
assertTrue(addresses.contains(addr(0x1001000)));
assertNotNull(addresses.get());
assertFalse(addresses.get().contains(addr(0x1008000)));
assertTrue(addresses.get().contains(addr(0x1001000)));
}