From 03871352b541060d5da2a6aabd8d002eef35e4ca Mon Sep 17 00:00:00 2001 From: Patrick Chuong Date: Mon, 20 Dec 2010 15:37:43 +0000 Subject: [PATCH] Bug 315443 - [disassembly] Not possible to remove breakpoint in disassembly view with double clicks --- .../model/DisassemblyDocument.java | 3 ++- .../provisional/DisassemblySelection.java | 23 ++++++++++++++++++- .../provisional/IDisassemblySelection.java | 8 +++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java index 38ee003f7ea..09d29a9c411 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java @@ -7,6 +7,7 @@ * * Contributors: * Wind River Systems - initial API and implementation + * Patrick Chuong (Texas Instruments) - Bug 315443 *******************************************************************************/ package org.eclipse.cdt.dsf.debug.internal.ui.disassembly.model; @@ -1169,7 +1170,7 @@ public class DisassemblyDocument extends REDDocument implements IDisassemblyDocu } return pos; } - labelPos = new LabelPosition(0, labelLine.length(), address, null); + labelPos = new LabelPosition(0, labelLine.length(), address, label); pos = insertAddressRange(pos, labelPos, labelLine, true); addLabelPosition(labelPos); return pos; diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/DisassemblySelection.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/DisassemblySelection.java index 5fd760e5b74..cde2fdf39e4 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/DisassemblySelection.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/DisassemblySelection.java @@ -7,6 +7,7 @@ * * Contributors: * Wind River Systems - initial API and implementation + * Patrick Chuong (Texas Instruments) - Bug 315443 *******************************************************************************/ package org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional; @@ -16,6 +17,7 @@ import java.net.URI; import org.eclipse.cdt.core.IAddress; import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.AddressRangePosition; import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.DisassemblyPosition; +import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.LabelPosition; import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.SourcePosition; import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.model.DisassemblyDocument; import org.eclipse.cdt.utils.Addr64; @@ -26,6 +28,7 @@ import org.eclipse.core.resources.IStorage; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.ITextSelection; +import org.eclipse.jface.text.Position; /** * Default implementation of {@link IDisassemblySelection}. @@ -39,6 +42,7 @@ public class DisassemblySelection implements IDisassemblySelection { private IStorage fSourceFile; private int fSourceLine; private IAddress fStartAddress; + private String fLabel; /** * Create a disassembly selection from a normal text selection and a disassembly part. @@ -80,6 +84,17 @@ public class DisassemblySelection implements IDisassemblySelection { fStartAddress = null; } } + + try { + Position labelPosition = document.getPosition(DisassemblyDocument.CATEGORY_LABELS, offset, true); + if (labelPosition != null) { + if (labelPosition instanceof LabelPosition) { + fLabel = ((LabelPosition) labelPosition).fLabel; + } + } + } catch (Exception e) { + fLabel = null; + } } /* @@ -171,5 +186,11 @@ public class DisassemblySelection implements IDisassemblySelection { public IAddress getStartAddress() { return fStartAddress; } - + + /** + * @since 2.2 + */ + public String getLabel() { + return fLabel; + } } \ No newline at end of file diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/IDisassemblySelection.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/IDisassemblySelection.java index 06531ad14f1..0974e3d426d 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/IDisassemblySelection.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/IDisassemblySelection.java @@ -7,6 +7,7 @@ * * Contributors: * Wind River Systems - initial API and implementation + * Patrick Chuong (Texas Instruments) - Bug 315443 *******************************************************************************/ package org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional; @@ -46,4 +47,11 @@ public interface IDisassemblySelection extends ITextSelection { * @return the 0-based line number of the source file associated with the selection, -1 if not available */ int getSourceLine(); + + /** + * @return the label, may be null + * + * @since 2.2 + */ + String getLabel(); }