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:
parent
ecac1992cc
commit
74a81d3e32
1 changed files with 22 additions and 2 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue