diff --git a/platform/platform-impl/api-dump-unreviewed.txt b/platform/platform-impl/api-dump-unreviewed.txt index ea6230c43b25..0176f7a6d01c 100644 --- a/platform/platform-impl/api-dump-unreviewed.txt +++ b/platform/platform-impl/api-dump-unreviewed.txt @@ -14876,10 +14876,6 @@ c:com.intellij.ui.TreeTableSpeedSearch - p:isSpeedSearchEnabled():Z - p:selectElement(java.lang.Object,java.lang.String):V - setCanExpand(Z):V -f:com.intellij.ui.WinFocusStealer -- java.awt.event.AWTEventListener -- eventDispatched(java.awt.AWTEvent):V -- s:setFocusStealingEnabled(Z):V c:com.intellij.ui.WindowMoveListener - java.awt.event.MouseAdapter - javax.swing.event.MouseInputListener diff --git a/platform/platform-impl/bootstrap/intellij.platform.ide.bootstrap.iml b/platform/platform-impl/bootstrap/intellij.platform.ide.bootstrap.iml index 2a631b4fd19f..e7196b9197bd 100644 --- a/platform/platform-impl/bootstrap/intellij.platform.ide.bootstrap.iml +++ b/platform/platform-impl/bootstrap/intellij.platform.ide.bootstrap.iml @@ -26,6 +26,7 @@ + diff --git a/platform/platform-impl/bootstrap/src/com/intellij/platform/ide/bootstrap/DirectoryLock.java b/platform/platform-impl/bootstrap/src/com/intellij/platform/ide/bootstrap/DirectoryLock.java index 5a8d0ef927e0..04f19cce0eda 100644 --- a/platform/platform-impl/bootstrap/src/com/intellij/platform/ide/bootstrap/DirectoryLock.java +++ b/platform/platform-impl/bootstrap/src/com/intellij/platform/ide/bootstrap/DirectoryLock.java @@ -13,8 +13,8 @@ import com.intellij.openapi.diagnostic.LogLevel; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.SystemInfoRt; import com.intellij.openapi.util.io.NioFiles; +import com.intellij.ui.User32Ex; import com.intellij.util.Suppressions; -import com.intellij.util.User32Ex; import com.sun.jna.platform.win32.WinDef; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -39,7 +39,7 @@ import static java.util.Objects.requireNonNullElseGet; /** * The class ensures that only one IDE instance is running on the given pair of configuration/cache directories - * and participates in the CLI by passing arguments and relaying back exit codes and error messages. + * and participates in the CLI bypassing arguments and relaying back exit codes and error messages. */ final class DirectoryLock { static final class CannotActivateException extends Exception { diff --git a/platform/platform-impl/src/com/intellij/accessibility/AccessibilityUtils.kt b/platform/platform-impl/src/com/intellij/accessibility/AccessibilityUtils.kt index 89973c25eb01..11e18a28ae72 100644 --- a/platform/platform-impl/src/com/intellij/accessibility/AccessibilityUtils.kt +++ b/platform/platform-impl/src/com/intellij/accessibility/AccessibilityUtils.kt @@ -11,10 +11,10 @@ import com.intellij.openapi.components.serviceAsync import com.intellij.openapi.ui.MessageDialogBuilder import com.intellij.openapi.ui.Messages import com.intellij.openapi.util.SystemInfoRt +import com.intellij.ui.User32Ex import com.intellij.ui.mac.foundation.Foundation import com.intellij.ui.mac.foundation.Foundation.NSAutoreleasePool import com.intellij.ui.mac.foundation.ID -import com.intellij.util.User32Ex import com.sun.jna.platform.win32.WinDef import kotlinx.coroutines.withContext import org.jetbrains.annotations.ApiStatus diff --git a/platform/platform-impl/src/com/intellij/execution/process/window/to/foreground/WinBringProcessWindowToForegroundSupport.kt b/platform/platform-impl/src/com/intellij/execution/process/window/to/foreground/WinBringProcessWindowToForegroundSupport.kt index dc3420e56571..6acc0ca12d4e 100644 --- a/platform/platform-impl/src/com/intellij/execution/process/window/to/foreground/WinBringProcessWindowToForegroundSupport.kt +++ b/platform/platform-impl/src/com/intellij/execution/process/window/to/foreground/WinBringProcessWindowToForegroundSupport.kt @@ -3,9 +3,8 @@ package com.intellij.execution.process.window.to.foreground import com.intellij.openapi.util.Key import com.intellij.openapi.util.UserDataHolder -import com.intellij.openapi.util.getOrCreateUserData import com.intellij.openapi.util.getOrCreateUserDataUnsafe -import com.intellij.util.User32Ex +import com.intellij.ui.User32Ex import com.intellij.util.findMainWindow import com.intellij.util.findWindowsWithText import com.jetbrains.rd.util.getLogger diff --git a/platform/platform-impl/src/com/intellij/ui/Win7TaskBar.java b/platform/platform-impl/src/com/intellij/ui/Win7TaskBar.java index 4ff7d3dfff7c..a054b8828abc 100644 --- a/platform/platform-impl/src/com/intellij/ui/Win7TaskBar.java +++ b/platform/platform-impl/src/com/intellij/ui/Win7TaskBar.java @@ -3,7 +3,6 @@ package com.intellij.ui; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.util.User32Ex; import com.intellij.util.ui.EDT; import com.sun.jna.Function; import com.sun.jna.Memory; diff --git a/platform/platform-impl/src/com/intellij/util/User32Utils.kt b/platform/platform-impl/src/com/intellij/util/User32Utils.kt index 459c2eef9de3..2d7bd0c4ad63 100644 --- a/platform/platform-impl/src/com/intellij/util/User32Utils.kt +++ b/platform/platform-impl/src/com/intellij/util/User32Utils.kt @@ -1,6 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.util +import com.intellij.ui.User32Ex import com.jetbrains.rd.util.error import com.jetbrains.rd.util.getLogger import com.jetbrains.rd.util.trace diff --git a/platform/platform-impl/ui/intellij.platform.ide.ui.iml b/platform/platform-impl/ui/intellij.platform.ide.ui.iml index ca463359d908..76cc1f61ebae 100644 --- a/platform/platform-impl/ui/intellij.platform.ide.ui.iml +++ b/platform/platform-impl/ui/intellij.platform.ide.ui.iml @@ -12,5 +12,6 @@ + \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/util/User32Ex.java b/platform/platform-impl/ui/src/com/intellij/ui/User32Ex.java similarity index 93% rename from platform/platform-impl/src/com/intellij/util/User32Ex.java rename to platform/platform-impl/ui/src/com/intellij/ui/User32Ex.java index 0973a146e6a4..2bec18d8992f 100644 --- a/platform/platform-impl/src/com/intellij/util/User32Ex.java +++ b/platform/platform-impl/ui/src/com/intellij/ui/User32Ex.java @@ -1,5 +1,5 @@ -// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.intellij.util; +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.ui; import com.sun.jna.Callback; import com.sun.jna.Memory; @@ -29,10 +29,15 @@ public interface User32Ex extends StdCallLibrary { int Flags); boolean FlashWindow(WinDef.HWND hwnd, boolean bInvert); + boolean SystemParametersInfo(WinDef.UINT uiAction, WinDef.UINT uiParam, WinDef.BOOLByReference pvParam, WinDef.UINT fWinIni); + boolean SystemParametersInfo(WinDef.UINT uiAction, WinDef.UINT uiParam, WinDef.UINTByReference pvParam, WinDef.UINT fWinIni); + boolean SystemParametersInfo(WinDef.UINT uiAction, WinDef.UINT uiParam, WinDef.UINT pvParam, WinDef.UINT fWinIni); + boolean AllowSetForegroundWindow(WinDef.DWORD pid); + boolean SetForegroundWindow(WinDef.HWND hwnd); @ApiStatus.Internal diff --git a/platform/platform-impl/src/com/intellij/ui/WinFocusStealer.java b/platform/platform-impl/ui/src/com/intellij/ui/WinFocusStealer.java similarity index 93% rename from platform/platform-impl/src/com/intellij/ui/WinFocusStealer.java rename to platform/platform-impl/ui/src/com/intellij/ui/WinFocusStealer.java index abe59a375819..336c197fd8ae 100644 --- a/platform/platform-impl/src/com/intellij/ui/WinFocusStealer.java +++ b/platform/platform-impl/ui/src/com/intellij/ui/WinFocusStealer.java @@ -1,14 +1,14 @@ -// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.ui; import com.intellij.jna.JnaLoader; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.util.User32Ex; import com.intellij.util.ui.UIUtil; import com.sun.jna.platform.win32.Advapi32Util; import com.sun.jna.platform.win32.WinDef; import com.sun.jna.platform.win32.WinReg; +import org.jetbrains.annotations.ApiStatus; import javax.swing.*; import java.awt.*; @@ -16,11 +16,12 @@ import java.awt.event.AWTEventListener; /** * This class allows to disable Windows focus stealing prevention mechanism. The changes have a system-wide effect, - * i.e. focus stealing can only be enabled for all applications in the system, not just for IDE process. + * i.e., focus stealing can only be enabled for all applications in the system, not just for an IDE process. *

* The desired effect is achieved by setting system-wide 'foreground lock timeout' value to zero. This is a duration that should pass after * user input in one window before another window is allowed to steal focus. */ +@ApiStatus.Internal public final class WinFocusStealer implements AWTEventListener { private static final Logger LOG = Logger.getInstance(WinFocusStealer.class); private static final int DEFAULT_TIMEOUT_MS = 200000; // default registry value on Windows 10 as of time this code is written @@ -30,7 +31,7 @@ public final class WinFocusStealer implements AWTEventListener { private WinFocusStealer() { if (JnaLoader.isLoaded()) { myEnabled = true; - doUpdate(false); // make sure to restore the default state if IDE crashed after enabling focus stealing + doUpdate(false); // make sure to restore the default state if the IDE crashed after enabling focus stealing SwingUtilities.invokeLater(() -> Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK | @@ -46,7 +47,7 @@ public final class WinFocusStealer implements AWTEventListener { /** * Enables or disables focus stealing globally in the system. This can only come to effect if the IDE window is currently active. - * If this is not the case, at the time this method is invoked, the actual change will be performed when next user input event is + * If this is not the case, at the time this method is invoked, the actual change will be performed when the next user input event is * received. *

* With focus stealing enabled, {@link AppIcon#requestFocus(Window)} method should bring the target IDE window into foreground, even if diff --git a/platform/remoteDev-util/intellij.remoteDev.util.iml b/platform/remoteDev-util/intellij.remoteDev.util.iml index 17fa25f76422..2abbbc07b7ae 100644 --- a/platform/remoteDev-util/intellij.remoteDev.util.iml +++ b/platform/remoteDev-util/intellij.remoteDev.util.iml @@ -65,6 +65,7 @@ + diff --git a/platform/xdebugger-impl/intellij.platform.debugger.impl.iml b/platform/xdebugger-impl/intellij.platform.debugger.impl.iml index 3deaeeab140a..1fed0318f249 100644 --- a/platform/xdebugger-impl/intellij.platform.debugger.impl.iml +++ b/platform/xdebugger-impl/intellij.platform.debugger.impl.iml @@ -55,6 +55,7 @@ +