diff --git a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java index 78f3a604e46c..a4b6cf60c1a2 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java @@ -33,6 +33,7 @@ import com.intellij.openapi.util.ActionCallback; import com.intellij.ui.JBColor; import com.intellij.ui.RelativeFont; import com.intellij.ui.components.labels.LinkLabel; +import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.update.MergingUpdateQueue; import com.intellij.util.ui.update.Update; @@ -149,7 +150,7 @@ class ConfigurableEditor extends AbstractEditor implements AnActionListener, AWT case MouseEvent.MOUSE_RELEASED: case MouseEvent.MOUSE_DRAGGED: MouseEvent me = (MouseEvent)event; - if (isDescendingFrom(me.getComponent(), this)) { + if (isDescendingFrom(me.getComponent(), this) || isPopupOverEditor(me.getComponent())) { requestUpdate(); } break; @@ -178,6 +179,21 @@ class ConfigurableEditor extends AbstractEditor implements AnActionListener, AWT }); } + private boolean isPopupOverEditor(Component component) { + Window editor = UIUtil.getWindow(this); + if (editor != null) { + Window popup = UIUtil.getWindow(component); + if (popup != null && editor == popup.getParent()) { + if (popup instanceof JDialog) { + JDialog dialog = (JDialog)popup; + return Dialog.ModalityType.MODELESS == dialog.getModalityType(); + } + return popup instanceof JWindow; + } + } + return false; + } + void updateCurrent(Configurable configurable, boolean reset) { boolean modified = configurable != null && configurable.isModified(); myApplyAction.setEnabled(modified);