From 0ce52b8f48db32a387bbf2b5189cb1bf9d5aa0f7 Mon Sep 17 00:00:00 2001 From: Kirill Kalishev Date: Wed, 25 Mar 2009 17:32:10 +0300 Subject: [PATCH] disabled any-sticky-dialogs fixes for OSs other that Linux --- .../com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java | 4 +++- util/src/com/intellij/Patches.java | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java b/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java index 368976369c..65e952c1d4 100644 --- a/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java +++ b/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java @@ -1728,6 +1728,8 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements } private void fixStickingDialogs() { + if (!Patches.STICKY_DIALOGS) return; + final KeyboardFocusManager mgr = KeyboardFocusManager.getCurrentKeyboardFocusManager(); final Window wnd = mgr.getActiveWindow(); final Container parent = wnd.getParent(); @@ -1784,7 +1786,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements } private boolean canExecuteOnInactiveApplication(FocusCommand cmd) { - return !SystemInfo.isLinux || cmd.canExecuteOnInactiveApp(); + return !Patches.REQUEST_FOCUS_MAY_ACTIVATE_APP || cmd.canExecuteOnInactiveApp(); } private void setLastEffectiveForcedRequest(FocusCommand command) { diff --git a/util/src/com/intellij/Patches.java b/util/src/com/intellij/Patches.java index 19190c16c7..6cf3a61e1a 100644 --- a/util/src/com/intellij/Patches.java +++ b/util/src/com/intellij/Patches.java @@ -134,4 +134,15 @@ public class Patches { * monitors exists */ public static final boolean SUN_BUG_ID_6209673 = SystemInfo.JAVA_RUNTIME_VERSION.startsWith("1.5") || SystemInfo.JAVA_RUNTIME_VERSION.startsWith("1.6"); + + /** + * Under Linux (Ubutnu) modal dialogs may occasinally be left as "active" even after disposal. It this happens + * it's no longer possible to focus anything in the UI. + */ + public static boolean STICKY_DIALOGS = SystemInfo.isLinux; + + /** + * Under Linux (Ubuntu) invoking "requestFocus" may (probably) activate inactive app. To investigate if it's really true. + */ + public static final boolean REQUEST_FOCUS_MAY_ACTIVATE_APP = SystemInfo.isLinux; } -- 2.11.4.GIT