diff options
Diffstat (limited to 'platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints')
6 files changed, 24 insertions, 19 deletions
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/BreakpointState.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/BreakpointState.java index 8631b8fc901b..364353c2ac63 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/BreakpointState.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/BreakpointState.java @@ -156,11 +156,11 @@ public class BreakpointState<B extends XBreakpoint<P>, P extends XBreakpointProp } public boolean isLogExpressionEnabled() { - return myLogExpression == null || !myLogExpression.myDisabled; + return myLogExpression != null && !myLogExpression.myDisabled; } public boolean isConditionEnabled() { - return myCondition == null || !myCondition.myDisabled; + return myCondition != null && !myCondition.myDisabled; } @Property(surroundWithTag = false) diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java index 6184ad9857b3..ddf673fe2504 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java @@ -192,6 +192,7 @@ public class XBreakpointBase<Self extends XBreakpoint<P>, P extends XBreakpointP @Override public void setLogExpression(@Nullable final String expression) { + setLogExpressionEnabled(true); if (!Comparing.equal(getLogExpression(), expression)) { myLogExpression = XExpressionImpl.fromText(expression); fireBreakpointChanged(); @@ -210,6 +211,7 @@ public class XBreakpointBase<Self extends XBreakpoint<P>, P extends XBreakpointP @Override public void setLogExpressionObject(@Nullable XExpression expression) { + setLogExpressionEnabled(true); if (!Comparing.equal(myLogExpression, expression)) { myLogExpression = expression; fireBreakpointChanged(); @@ -224,6 +226,7 @@ public class XBreakpointBase<Self extends XBreakpoint<P>, P extends XBreakpointP @Override public void setCondition(@Nullable final String condition) { + setConditionEnabled(true); if (!Comparing.equal(condition, getCondition())) { myCondition = XExpressionImpl.fromText(condition); fireBreakpointChanged(); @@ -242,6 +245,7 @@ public class XBreakpointBase<Self extends XBreakpoint<P>, P extends XBreakpointP @Override public void setConditionExpression(@Nullable XExpression condition) { + setConditionEnabled(true); if (!Comparing.equal(condition, myCondition)) { myCondition = condition; fireBreakpointChanged(); @@ -387,13 +391,18 @@ public class XBreakpointBase<Self extends XBreakpoint<P>, P extends XBreakpointP @Nullable protected final Icon calculateSpecialIcon() { + XDebugSessionImpl session = getBreakpointManager().getDebuggerManager().getCurrentSession(); if (!isEnabled()) { // disabled icon takes precedence to other to visually distinguish it and provide feedback then it is enabled/disabled // (e.g. in case of mute-mode we would like to differentiate muted but enabled breakpoints from simply disabled ones) - return getType().getDisabledIcon(); + if (session == null || !session.areBreakpointsMuted()) { + return getType().getDisabledIcon(); + } + else { + return getType().getMutedDisabledIcon(); + } } - XDebugSessionImpl session = getBreakpointManager().getDebuggerManager().getCurrentSession(); if (session == null) { if (getBreakpointManager().getDependentBreakpointManager().getMasterBreakpoint(this) != null) { return getType().getInactiveDependentIcon(); @@ -401,7 +410,7 @@ public class XBreakpointBase<Self extends XBreakpoint<P>, P extends XBreakpointP } else { if (session.areBreakpointsMuted()) { - return AllIcons.Debugger.Db_muted_breakpoint; + return getType().getMutedEnabledIcon(); } if (session.isInactiveSlaveBreakpoint(this)) { return getType().getInactiveDependentIcon(); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java index d86970b463f4..e2ce9ca7c63d 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java @@ -90,8 +90,9 @@ public class XLineBreakpointImpl<P extends XBreakpointProperties> extends XBreak RangeHighlighterEx highlighter = myHighlighter; if (highlighter != null && - (!highlighter.isValid() || - highlighter.getStartOffset() >= document.getTextLength() + (!highlighter.isValid() + || highlighter.getStartOffset() >= document.getTextLength() + || !Comparing.equal(highlighter.getTextAttributes(), attributes) // it seems that this check is not needed - we always update line number from the highlighter // and highlighter is removed on line and file change anyway /*|| document.getLineNumber(highlighter.getStartOffset()) != getLine()*/)) { diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java index e2252ea642a9..098b64052284 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java @@ -118,14 +118,7 @@ public class XLineBreakpointManager { // Update breakpoints colors if global color schema was changed final EditorColorsManager colorsManager = EditorColorsManager.getInstance(); if (colorsManager != null) { // in some debugger tests EditorColorsManager component isn't loaded - final MyEditorColorsListener myColorsSchemeListener = new MyEditorColorsListener(); - Disposer.register(project, new Disposable() { - @Override - public void dispose() { - colorsManager.removeEditorColorsListener(myColorsSchemeListener); - } - }); - colorsManager.addEditorColorsListener(myColorsSchemeListener); + colorsManager.addEditorColorsListener(new MyEditorColorsListener(), project); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointActionsPanel.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointActionsPanel.java index 0f98bce57af0..6ee8eadbe0ad 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointActionsPanel.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointActionsPanel.java @@ -114,9 +114,10 @@ public class XBreakpointActionsPanel<B extends XBreakpointBase<?,?,?>> extends X } if (myLogExpressionComboBox != null) { - myBreakpoint.setLogExpressionEnabled(myLogExpressionCheckBox.isSelected()); XExpression expression = myLogExpressionComboBox.getExpression(); - myBreakpoint.setLogExpressionObject(!XDebuggerUtilImpl.isEmptyExpression(expression) ? expression : null); + XExpression logExpression = !XDebuggerUtilImpl.isEmptyExpression(expression) ? expression : null; + myBreakpoint.setLogExpressionEnabled(myLogExpressionCheckBox.isSelected() && logExpression != null); + myBreakpoint.setLogExpressionObject(logExpression); myLogExpressionComboBox.saveTextInHistory(); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java index 9f869ac25def..0e847d7db05d 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java @@ -206,9 +206,10 @@ public class XLightBreakpointPropertiesPanel<B extends XBreakpointBase<?,?,?>> i } if (myConditionComboBox != null) { - myBreakpoint.setConditionEnabled(myConditionEnabledCheckbox.isSelected()); XExpression expression = myConditionComboBox.getExpression(); - myBreakpoint.setConditionExpression(!XDebuggerUtilImpl.isEmptyExpression(expression) ? expression : null); + XExpression condition = !XDebuggerUtilImpl.isEmptyExpression(expression) ? expression : null; + myBreakpoint.setConditionEnabled(myConditionEnabledCheckbox.isSelected() && condition != null); + myBreakpoint.setConditionExpression(condition); myConditionComboBox.saveTextInHistory(); } |