diff --git a/cnd.debugger.common2/src/org/netbeans/modules/cnd/debugger/common2/debugger/WatchBag.java b/cnd.debugger.common2/src/org/netbeans/modules/cnd/debugger/common2/debugger/WatchBag.java --- a/cnd.debugger.common2/src/org/netbeans/modules/cnd/debugger/common2/debugger/WatchBag.java +++ b/cnd.debugger.common2/src/org/netbeans/modules/cnd/debugger/common2/debugger/WatchBag.java @@ -147,6 +147,7 @@ assert !watches.contains(oldWatch) : "WB.remove(): watch still there after removal"; // NOI18N // OLD manager().removeWatch(oldWatch); + oldWatch.postDelete(false); watchUpdater().treeChanged(); // causes a pull } } diff --git a/cnd.debugger.gdb2/src/org/netbeans/modules/cnd/debugger/gdb2/GdbDebuggerImpl.java b/cnd.debugger.gdb2/src/org/netbeans/modules/cnd/debugger/gdb2/GdbDebuggerImpl.java --- a/cnd.debugger.gdb2/src/org/netbeans/modules/cnd/debugger/gdb2/GdbDebuggerImpl.java +++ b/cnd.debugger.gdb2/src/org/netbeans/modules/cnd/debugger/gdb2/GdbDebuggerImpl.java @@ -46,6 +46,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.io.File; import java.io.IOException; import java.net.ConnectException; @@ -2796,7 +2798,7 @@ }); } - private static final class ModelChangeListenerTooltipImpl implements ModelListener { + private final class ModelChangeListenerTooltipImpl implements ModelListener { private AtomicBoolean isInitilaized = new AtomicBoolean(false); private JEditorPane editorPane; private Line.Part lp; @@ -2819,8 +2821,11 @@ ModelEvent.NodeChanged nodeChanged = (ModelEvent.NodeChanged) event; if (nodeChanged.getChange() != ModelEvent.NodeChanged.DISPLAY_NAME_MASK) { return;//need to update display name only + } + if (!(nodeChanged.getNode() instanceof GdbVariable) ){ + return; } - final Variable variable = ((Variable) nodeChanged.getNode()); + final GdbVariable variable = ((GdbVariable) nodeChanged.getNode()); if (!tts.isEnabled() || !tts.isToolTipVisible()) { return; } @@ -2842,6 +2847,7 @@ final String toolTip = variable.getVariableName() + "=" + variable.getAsText();//NOI18N ToolTipUI toolTipUI = ViewFactory.getDefault().createToolTip(toolTip, expandable, pinnable); ToolTipSupport tts = toolTipUI.show(editorPane); + tts.addPropertyChangeListener(new ToolTipSupportPropertyChangeListener(variable)); variable.getUpdater().removeListener(ModelChangeListenerTooltipImpl.this); //variable.getUpdater().setListener(null); } @@ -2849,7 +2855,34 @@ } } } - } + } + + private final class ToolTipSupportPropertyChangeListener implements PropertyChangeListener { + private final GdbVariable v; + + ToolTipSupportPropertyChangeListener(GdbVariable v) { + this.v = v; + } + @Override + public void propertyChange(PropertyChangeEvent evt) { + System.out.println("ToolTipSupportPropertyChangeListener.propertyChange=" + evt.getPropertyName()); + System.out.println("ToolTipSupportPropertyChangeListener.propertyChange=" + v.getMIName()); + if (!ToolTipSupport.PROP_STATUS.equals(evt.getPropertyName())) { + + return;//we are interested in status only + } + System.out.println("ToolTipSupportPropertyChangeListener.status=" + evt.getNewValue()); + if ((((Integer)evt.getNewValue()) == ToolTipSupport.STATUS_HIDDEN)){ + System.out.println("miVariableName=" + v.getMIName()); + DeleteMIVarCommand cmd = new DeleteMIVarCommand(v); + cmd.dontReportError(); + sendCommandInt(cmd); + ((ToolTipSupport)evt.getSource()).removePropertyChangeListener(this); + } + } + + } + private static final class ModelChangeListenerImpl implements ModelListener { @Override public void modelChanged(ModelEvent event) { @@ -2965,6 +2998,7 @@ ToolTipUI toolTipUI = ViewFactory.getDefault().createToolTip(toolTip, expandable, pinnable); final ToolTipSupport tts = toolTipUI.show(ep); if (tts != null) { + tts.addPropertyChangeListener(new ToolTipSupportPropertyChangeListener(watch)); mcLImpl.registerToolTip(tts, ep, lp); } @@ -2997,6 +3031,7 @@ ToolTipUI toolTipUI = ViewFactory.getDefault().createToolTip(toolTip, expandable, pinnable); final ToolTipSupport tts = toolTipUI.show(ep); if (tts != null) { + tts.addPropertyChangeListener(new ToolTipSupportPropertyChangeListener(watch)); mcLImpl.registerToolTip(tts, ep, lp); } @@ -3548,7 +3583,7 @@ gdb.sendCommand(cmd); } - private void updateMIVar() { + private void updateMIVar() { if (!peculiarity.isLldb()) { String cmdString = "-var-update --all-values * "; // NOI18N MICommand cmd =