diff --git a/platform/icons/src/debugger/question_badge.png b/platform/icons/src/debugger/question_badge.png new file mode 100644 index 000000000000..f66e51ad598f Binary files /dev/null and b/platform/icons/src/debugger/question_badge.png differ diff --git a/platform/icons/src/debugger/question_badge@2x.png b/platform/icons/src/debugger/question_badge@2x.png new file mode 100644 index 000000000000..09442e4de70a Binary files /dev/null and b/platform/icons/src/debugger/question_badge@2x.png differ diff --git a/platform/icons/src/debugger/question_badge@2x_dark.png b/platform/icons/src/debugger/question_badge@2x_dark.png new file mode 100644 index 000000000000..f8a298ba930c Binary files /dev/null and b/platform/icons/src/debugger/question_badge@2x_dark.png differ diff --git a/platform/icons/src/debugger/question_badge_dark.png b/platform/icons/src/debugger/question_badge_dark.png new file mode 100644 index 000000000000..03d25c629244 Binary files /dev/null and b/platform/icons/src/debugger/question_badge_dark.png differ diff --git a/platform/util/src/com/intellij/icons/AllIcons.java b/platform/util/src/com/intellij/icons/AllIcons.java index d139c7d991bc..b24f4acdf8b8 100644 --- a/platform/util/src/com/intellij/icons/AllIcons.java +++ b/platform/util/src/com/intellij/icons/AllIcons.java @@ -277,6 +277,7 @@ public class AllIcons { public static final Icon KillProcess = IconLoader.getIcon("/debugger/killProcess.png"); // 16x16 public static final Icon MuteBreakpoints = IconLoader.getIcon("/debugger/muteBreakpoints.png"); // 16x16 public static final Icon NewWatch = IconLoader.getIcon("/debugger/newWatch.png"); // 16x16 + public static final Icon Question_badge = IconLoader.getIcon("/debugger/question_badge.png"); // 6x9 public static final Icon RestoreLayout = IconLoader.getIcon("/debugger/restoreLayout.png"); // 16x16 public static final Icon ShowCurrentFrame = IconLoader.getIcon("/debugger/showCurrentFrame.png"); // 16x16 public static final Icon SmartStepInto = IconLoader.getIcon("/debugger/smartStepInto.png"); // 16x16 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 c6bed4e65eef..32293e336bd0 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 @@ -15,6 +15,7 @@ */ package com.intellij.xdebugger.impl.breakpoints; +import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.ActionGroup; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.components.ComponentSerializationUtil; @@ -29,6 +30,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.pom.Navigatable; import com.intellij.ui.ColorUtil; import com.intellij.ui.JBColor; +import com.intellij.ui.LayeredIcon; import com.intellij.util.StringBuilderSpinAllocator; import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters; import com.intellij.util.xmlb.XmlSerializer; @@ -43,6 +45,7 @@ import com.intellij.xdebugger.breakpoints.XBreakpointType; import com.intellij.xdebugger.impl.DebuggerSupport; import com.intellij.xdebugger.impl.XDebugSessionImpl; import com.intellij.xdebugger.impl.XDebuggerSupport; +import com.intellij.xdebugger.impl.XDebuggerUtilImpl; import com.intellij.xdebugger.impl.actions.EditBreakpointAction; import com.intellij.xml.CommonXmlStrings; import com.intellij.xml.util.XmlStringUtil; @@ -393,11 +396,19 @@ public class XBreakpointBase, P extends XBreakpointP protected void updateIcon() { final Icon icon = calculateSpecialIcon(); - myIcon = icon != null ? icon : getType().getEnabledIcon(); + setIcon(icon != null ? icon : getType().getEnabledIcon()); } protected void setIcon(Icon icon) { - myIcon = icon; + if (!XDebuggerUtilImpl.isEmptyExpression(getConditionExpression())) { + LayeredIcon newIcon = new LayeredIcon(2); + newIcon.setIcon(icon, 0); + newIcon.setIcon(AllIcons.Debugger.Question_badge, 1, 10, 6); + myIcon = newIcon; + } + else { + myIcon = icon; + } } @Nullable 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 0985daa20b6b..a848d77d8722 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 @@ -293,12 +293,11 @@ public class XLineBreakpointImpl

extends XBreak @Override protected void updateIcon() { - final Icon icon = calculateSpecialIcon(); - if (icon != null) { - setIcon(icon); - return; + Icon icon = calculateSpecialIcon(); + if (icon == null) { + icon = isTemporary() ? myType.getTemporaryIcon() : myType.getEnabledIcon(); } - setIcon(isTemporary() ? myType.getTemporaryIcon() : myType.getEnabledIcon()); + setIcon(icon); } @Override