+ (P)CE could be thrown from computeInNonCancelableSection() -- this is not an error if the (P)CE is initiated by the callee itself, not by cancellation request
+ Cancellation.checkCancelled() honor isInNonCancelableSection() -- somehow it was missed before
GitOrigin-RevId: aa8ca6d49a8bbad54328356e0c590737b52f2a8d
ProjectLifecycleUiCustomization service is introduced to allow always opening projects in a new window without modifying the option. This way we ensure that users won't be able to change the value of this option manually after it set in code in remote dev mode. Also, running the IDE in remote dev mode won't affect settings for monolith (full) IDE.
GitOrigin-RevId: 794486d9146a616277933585ab9cc32485414bcc
IdeLifecycleUiCustomization service is introduced to allow suppressing the default dialog asking for confirmation on exit without modifying the option. This way we ensure that users won't be able to change the value of this option manually after it set in code in remote dev mode. Also, running the IDE in remote dev mode won't affect settings for monolith (full) IDE.
GitOrigin-RevId: 051e8a20151e0bb584c5435b87640920121f100a
`EdtDataRule` becomes `UiDataRule`. As previously, the name now reflects the data it operates on. It makes the fact rules are called in EDT and BGT less confusing
GitOrigin-RevId: 68f0f3451053ff387f90394872606434852aa32b
Initially, persistent state components were not registered under remote clientId. It is not correct, though, because a non-per-client component may be loaded for the first time under a remote clientId, and it must be registered properly. This commit adds an explicit marker for per-client components to correctly implement this behavior.
IJ-MR-130819
GitOrigin-RevId: d170176f400902616e1448b0ecdf73a4c4918e8d
Every PersistentStateComponent that overrides some meaningful `loadState(state)` method must override `noStateLoaded()` method as well, because it is called when no settings are changes, resulting in an empty settings state. If `noStateLoaded()` is not overloaded properly, then returning of all values of some settings component to the default values will not be synchronized.
IJ-MR-130819
GitOrigin-RevId: ce8f8290484135b195852d5bdcd0890e1c8c28bc
There are only a handful of PersistentStateComponent that we want to synchronize. After a discussion with @develar, we decided not to have an extension point and special annotations in the platform, but to list all of such components in our code.
Components' names will not be changed to keep backward compatibility for XML settings, so it is a safe approach. In the future, we will sunset PSC anyway and migrate them to the new SettingsController API.
IJ-MR-130819
GitOrigin-RevId: 7c9b974d406f8f4179d671f6483fd7143b6618d9
`Update`s should be decoupled from the calling code, otherwise the context of the caller would prevent the updates from merging.
GitOrigin-RevId: dae65fc3f0604d08f0dcb8427788e1886fe6605d
The `subscribe` function may be unstable in case of incrementation computations. The `eventLog` is stable and fulfills all requirements
GitOrigin-RevId: 17bbbb71995b224d1f3b44fee1afaa0e86ce7e94
If we mark these methods as 'public,' they will be exposed in all implementations. So it's better to keep them 'protected' and call them via additional public @Internal accessor methods to avoid 'IllegalAccessError' if different modules are loaded by different classloaders.
GitOrigin-RevId: f50f83d38fd735440000a19e17bdaedbfaacb257