From 32d7265139ac6f4c7bc1cbadcb4997b5b9b38da2 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Thu, 19 Jul 2018 16:32:54 +0200 Subject: [PATCH] use classloader instead of class as requestor for editor color schemes --- .../configuration-store-impl/src/SchemeManagerImpl.kt | 2 ++ .../openapi/application/ex/DecodeDefaultsUtil.java | 8 ++++---- .../editor/colors/impl/EditorColorsManagerImpl.java | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/platform/configuration-store-impl/src/SchemeManagerImpl.kt b/platform/configuration-store-impl/src/SchemeManagerImpl.kt index 23a179713cb8..5b7136e0ae9f 100644 --- a/platform/configuration-store-impl/src/SchemeManagerImpl.kt +++ b/platform/configuration-store-impl/src/SchemeManagerImpl.kt @@ -3,6 +3,7 @@ package com.intellij.configurationStore import com.intellij.concurrency.ConcurrentCollectionFactory import com.intellij.configurationStore.schemeManager.* +import com.intellij.ide.ui.UITheme import com.intellij.openapi.application.ex.DecodeDefaultsUtil import com.intellij.openapi.application.runUndoTransparentWriteAction import com.intellij.openapi.components.RoamingType @@ -111,6 +112,7 @@ class SchemeManagerImpl(val fileSpec: String, try { val url = when (requestor) { is AbstractExtensionPointBean -> requestor.loaderForClass.getResource(resourceName) + is UITheme -> DecodeDefaultsUtil.getDefaults(requestor.providerClassLoader, resourceName) else -> DecodeDefaultsUtil.getDefaults(requestor, resourceName) } diff --git a/platform/platform-impl/src/com/intellij/openapi/application/ex/DecodeDefaultsUtil.java b/platform/platform-impl/src/com/intellij/openapi/application/ex/DecodeDefaultsUtil.java index dfa6a42994a8..77cee101c31e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/ex/DecodeDefaultsUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/ex/DecodeDefaultsUtil.java @@ -36,14 +36,14 @@ public class DecodeDefaultsUtil { public static URL getDefaults(Object requestor, @NotNull String componentResourcePath) { URL url = RESOURCE_CACHE.get(componentResourcePath); if (url == null) { - Class requestorClass = requestor instanceof Class ? (Class)requestor : requestor.getClass(); + ClassLoader loader = requestor instanceof ClassLoader ? (ClassLoader)requestor : requestor.getClass().getClassLoader(); if (StringUtil.startsWithChar(componentResourcePath, '/')) { - url = requestorClass.getResource(appendExt(componentResourcePath)); + url = loader.getResource(appendExt(componentResourcePath)); } else { - url = requestorClass.getResource(appendExt('/' + ApplicationManagerEx.getApplicationEx().getName() + '/' + componentResourcePath)); + url = loader.getResource(appendExt('/' + ApplicationManagerEx.getApplicationEx().getName() + '/' + componentResourcePath)); if (url == null) { - url = requestorClass.getResource(appendExt('/' + componentResourcePath)); + url = loader.getResource(appendExt('/' + componentResourcePath)); } } RESOURCE_CACHE.put(componentResourcePath, url); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java index ee251b24d997..b8c71dde28f2 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java @@ -185,7 +185,7 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Pers UITheme theme = ((UIThemeBasedLookAndFeelInfo)laf).getTheme(); String path = theme.getEditorScheme(); if (path != null) { - mySchemeManager.loadBundledScheme(path, theme.getProviderClassLoader()); + mySchemeManager.loadBundledScheme(path, theme); } } }