From 3e528ebafe873722a83c3bd379afcd2cab2e997f Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Tue, 5 Nov 2013 15:00:51 +0100 Subject: [PATCH] Bug 420604 - Disassembly view tends to scroll upwards on refresh --- .../dsf/debug/internal/ui/disassembly/DisassemblyPart.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java index 104da9d347c..6290d34ba5c 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java @@ -278,6 +278,7 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem private volatile int fUpdateCount; private BigInteger fPCAddress; private BigInteger fGotoAddressPending= PC_UNKNOWN; + private boolean fGotoAddressOnTop; private BigInteger fFocusAddress= PC_UNKNOWN; private int fBufferZone; private String fDebugSessionId; @@ -1414,10 +1415,13 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem AddressRangePosition pos = getPositionOfAddress(address); if (pos != null) { if (pos.fValid) { + boolean onTop = false; if (fGotoAddressPending.equals(address)) { fGotoAddressPending = PC_UNKNOWN; + onTop = fGotoAddressOnTop; + fGotoAddressOnTop = false; } - gotoPosition(pos, false); + gotoPosition(pos, onTop); } else { int lines = fBufferZone+3; BigInteger endAddress = pos.fAddressOffset.add(pos.fAddressLength).min( @@ -2034,6 +2038,7 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem fTargetFrame = targetFrame; fFrameAddress = frameAddress; fPCAddress = pcAddress; + fGotoAddressOnTop = true; gotoAddress(topAddress); } else { refreshView((int)(refreshViewScheduled - now));