diff options
author | Anton Leherbauer | 2009-12-14 07:50:51 +0000 |
---|---|---|
committer | Anton Leherbauer | 2009-12-14 07:50:51 +0000 |
commit | a326de8cbd92a925dfee4071b6c156a942e9766a (patch) | |
tree | 7b76b4cf4cf0b3909ca14ba7eb066e547541371e | |
parent | 1a64d13fda67e02a939cc012b9df632b709ef619 (diff) | |
download | org.eclipse.cdt-a326de8cbd92a925dfee4071b6c156a942e9766a.tar.gz org.eclipse.cdt-a326de8cbd92a925dfee4071b6c156a942e9766a.tar.xz org.eclipse.cdt-a326de8cbd92a925dfee4071b6c156a942e9766a.zip |
[297387] [disassembly] When location combo box has focus, 'Home' key shouldn't jump to PC address
Patch from Navid Mehregani
3 files changed, 36 insertions, 8 deletions
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 15d6001330d..88b54aa83e9 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 @@ -223,7 +223,7 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem // private static final String COMMAND_ID_RUN_TO_LINE = "org.eclipse.debug.ui.commands.RunToLine"; //$NON-NLS-1$ // private static final String COMMAND_ID_TOGGLE_STEPPING_MODE = "org.eclipse.cdt.dsf.debug.ui.debug.ui.menu.showDisassemblyAction"; //$NON-NLS-1$ - private static final String KEY_BINDING_CONTEXT_DISASSEMBLY = "org.eclipse.cdt.dsf.debug.ui.disassembly.context"; //$NON-NLS-1$ + public static final String KEY_BINDING_CONTEXT_DISASSEMBLY = "org.eclipse.cdt.dsf.debug.ui.disassembly.context"; //$NON-NLS-1$ protected DisassemblyViewer fViewer; @@ -749,10 +749,9 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem handlerService.deactivateHandlers(fHandlerActivations); fHandlerActivations = null; } - if (fContextActivation != null) { - IContextService ctxService = (IContextService)site.getService(IContextService.class); - ctxService.deactivateContext(fContextActivation); - } + + deactivateDisassemblyContext(); + fViewer = null; setDebugContext(null); DsfSession.removeSessionEndedListener(this); @@ -1187,8 +1186,7 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem private void contributeToActionBars() { IWorkbenchPartSite site = getSite(); site.setSelectionProvider(new DisassemblySelectionProvider(this)); - IContextService ctxService = (IContextService)site.getService(IContextService.class); - fContextActivation = ctxService.activateContext(KEY_BINDING_CONTEXT_DISASSEMBLY); + activateDisassemblyContext(); contributeToActionBars(getActionBars()); } @@ -3409,5 +3407,17 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem MessageDialog messageDialog = new MessageDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(), DisassemblyMessages.Disassembly_Error_Dialog_title, null, message, MessageDialog.ERROR, new String[]{DisassemblyMessages.Disassembly_Error_Dialog_ok_button}, 0); messageDialog.open(); } - + + public void activateDisassemblyContext() { + IContextService ctxService = (IContextService)getSite().getService(IContextService.class); + if (ctxService!=null) + fContextActivation = ctxService.activateContext(KEY_BINDING_CONTEXT_DISASSEMBLY); + } + + public void deactivateDisassemblyContext() { + if (fContextActivation != null) { + IContextService ctxService = (IContextService)getSite().getService(IContextService.class); + ctxService.deactivateContext(fContextActivation); + } + } } diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/AddressBarContributionItem.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/AddressBarContributionItem.java index 965c0dfbfec..2dd75cce187 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/AddressBarContributionItem.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/AddressBarContributionItem.java @@ -232,6 +232,11 @@ public class AddressBarContributionItem extends ContributionItem { }; public void focusGained(FocusEvent e) { + // [nmehregani] bugzilla 297387: 'Home' shouldn't jump to PC address when focus is on location combo box + if (action instanceof JumpToAddressAction) + ((JumpToAddressAction)action).deactivateDisassemblyContext(); + // end 297387 + // Erase the guide text when the focus is gained. if (addressBox.getText().trim().equals(initialText)) addressBox.setText(""); //$NON-NLS-1$ @@ -241,6 +246,11 @@ public class AddressBarContributionItem extends ContributionItem { } public void focusLost(FocusEvent e) { + // [nmehregani] bugzilla 297387: 'Home' shouldn't jump to PC address when focus is on location combo box + if (action instanceof JumpToAddressAction) + ((JumpToAddressAction)action).activateDisassemblyContext(); + // end 297387 + // Re-insert the guide text when the focus is lost and the text // field is empty. if (addressBox.getText().trim().length() == 0) diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/JumpToAddressAction.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/JumpToAddressAction.java index a5196d7dec4..372977be8cc 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/JumpToAddressAction.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/JumpToAddressAction.java @@ -61,4 +61,12 @@ public class JumpToAddressAction extends Action { } } } + + protected void activateDisassemblyContext() { + fDisassemblyPart.activateDisassemblyContext(); + } + + protected void deactivateDisassemblyContext() { + fDisassemblyPart.deactivateDisassemblyContext(); + } } |