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();
|
long now = System.currentTimeMillis();
|
||||||
if (now >= refreshViewScheduled) {
|
if (now >= refreshViewScheduled) {
|
||||||
if (DEBUG) System.err.println("*** refreshing view ***"); //$NON-NLS-1$
|
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;
|
int targetFrame= fTargetFrame;
|
||||||
|
BigInteger frameAddress = fFrameAddress;
|
||||||
|
BigInteger pcAddress = fPCAddress;
|
||||||
|
|
||||||
|
// clear viewer
|
||||||
resetViewer();
|
resetViewer();
|
||||||
if (fScrollPos != null) {
|
if (fScrollPos != null) {
|
||||||
fScrollPos.isDeleted = true;
|
fScrollPos.isDeleted = true;
|
||||||
}
|
}
|
||||||
gotoFrameIfActive(targetFrame);
|
|
||||||
|
// restore frame info and viewport
|
||||||
|
fPCAnnotationUpdatePending = true;
|
||||||
|
fTargetFrame = targetFrame;
|
||||||
|
fFrameAddress = frameAddress;
|
||||||
|
fPCAddress = pcAddress;
|
||||||
|
gotoAddress(topAddress);
|
||||||
} else {
|
} else {
|
||||||
refreshView((int)(refreshViewScheduled - now));
|
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() {
|
private void resetViewer() {
|
||||||
// clear all state and cache
|
// clear all state and cache
|
||||||
fPCAnnotationUpdatePending = false;
|
fPCAnnotationUpdatePending = false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue