1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

[302875] [dis] Toggling "Show Symbols" resets viewport

[304110]  [Disassembly] Refresh button should not jump to PC address
This commit is contained in:
Anton Leherbauer 2010-03-01 14:07:52 +00:00
parent ecac1992cc
commit 74a81d3e32

View file

@ -1865,13 +1865,25 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem
long now = System.currentTimeMillis();
if (now >= refreshViewScheduled) {
if (DEBUG) System.err.println("*** refreshing view ***"); //$NON-NLS-1$
fFocusAddress = PC_UNKNOWN;
// save viewport position and frame info
BigInteger topAddress = getTopAddress();
int targetFrame= fTargetFrame;
BigInteger frameAddress = fFrameAddress;
BigInteger pcAddress = fPCAddress;
// clear viewer
resetViewer();
if (fScrollPos != null) {
fScrollPos.isDeleted = true;
}
gotoFrameIfActive(targetFrame);
// restore frame info and viewport
fPCAnnotationUpdatePending = true;
fTargetFrame = targetFrame;
fFrameAddress = frameAddress;
fPCAddress = pcAddress;
gotoAddress(topAddress);
} else {
refreshView((int)(refreshViewScheduled - now));
}
@ -1886,6 +1898,14 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem
}
}
private BigInteger getTopAddress() {
BigInteger topAddress = getAddressOfLine(fViewer.getTopIndex());
if (topAddress.equals(fStartAddress)) {
topAddress = getAddressOfLine(fViewer.getTopIndex() + 1);
}
return topAddress;
}
private void resetViewer() {
// clear all state and cache
fPCAnnotationUpdatePending = false;