[platform] platform-independent backward-compatible WM class calculation

This commit is contained in:
Roman Shevchenko
2017-08-09 18:46:21 +02:00
parent 45f9ede9ac
commit 57b5166e5d
3 changed files with 18 additions and 9 deletions
@@ -1,14 +1,14 @@
<component xmlns="http://jetbrains.org/intellij/schema/application-info"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jetbrains.org/intellij/schema/application-info http://jetbrains.org/intellij/schema/ApplicationInfo.xsd">
<version codename="Community Edition" major="2017" minor="3" eap="true"/>
<version major="2017" minor="3" eap="true"/>
<company name="JetBrains s.r.o." url="https://www.jetbrains.com/?fromIDE"/>
<build number="__BUILD_NUMBER__" date="__BUILD_DATE__"/>
<logo url="/idea_community_logo.png" textcolor="e5e5e5" progressColor="ef5468" progressX="117" progressY="280" progressHeight="3" />
<about url="/idea_community_about.png" foreground="939598" copyrightForeground="939598" linkColor="095fdc" logoX="540" logoY="300" logoW="100" logoH="100"/>
<icon size32="/icon_CE.png" size16="/icon_CEsmall.png" size128="/icon_CE_128.png" ico="idea_CE.ico"/>
<package code="__PACKAGE_CODE__"/>
<names product="IDEA" fullname="IntelliJ IDEA" script="idea"/>
<names product="IDEA" fullname="IntelliJ IDEA Community Edition" script="idea"/>
<welcome-screen logo-url="/Logo_welcomeScreen.png"/>
<customize-ide-wizard provider="com.intellij.ide.customize.CustomizeIdeaWizardStepsProvider"/>
@@ -30,6 +30,5 @@
<third-party url="http://www.jetbrains.org/"/>
<jetbrains-tv url="https://www.youtube.com/user/intellijideavideo"/>
<statistics settings="https://www.jetbrains.com/idea/statistics/stat-assistant.xml" service="https://www.jetbrains.com/idea/statistics/index.jsp"/>
</component>
@@ -199,15 +199,13 @@ class LinuxDistributionBuilder extends OsSpecificDistributionBuilder {
buildContext.messages.progress("Preparing files")
def desktopTemplate = "${buildContext.paths.communityHome}/platform/platform-resources/src/entry.desktop"
def ce = buildContext.productProperties.productCode in ["IC", "PC"]
def productName = buildContext.applicationInfo.productName
if (ce && !productName.contains("Community Edition")) productName += " Community Edition" // IdeaApplicationInfo.xml//names@product
buildContext.ant.copy(file: desktopTemplate, tofile: "${snapDir}/snap/gui/${customizer.snapName}.desktop") {
filterset(begintoken: '$', endtoken: '$') {
filter(token: "NAME", value: productName)
filter(token: "ICON", value: "/bin/${buildContext.productProperties.baseFileName}.png")
filter(token: "SCRIPT", value: "/bin/${buildContext.productProperties.baseFileName}.sh")
filter(token: "WM_CLASS", value: "jetbrains-${buildContext.applicationInfo.shortProductName.toLowerCase()}${ce ? "-ce" : ""}") // AppUIUtil#getFrameClass
filter(token: "WM_CLASS", value: getFrameClass())
}
}
@@ -268,4 +266,13 @@ class LinuxDistributionBuilder extends OsSpecificDistributionBuilder {
buildContext.notifyArtifactBuilt("${buildContext.paths.artifacts}/" + snapArtifact)
}
}
// keep in sync with AppUIUtil#getFrameClass
private String getFrameClass() {
def name = buildContext.applicationInfo.productName
.toLowerCase(Locale.US)
.replace(' ', '-')
.replace("intellij-idea", "idea").replace("android-studio", "studio").replace("community-edition", "ce")
"jetbrains-" + name
}
}
@@ -144,10 +144,13 @@ public class AppUIUtil {
catch (Exception ignore) { }
}
// keep in sync with LinuxDistributionBuilder#getFrameClass
public static String getFrameClass() {
String name = ApplicationNamesInfo.getInstance().getProductName().toLowerCase(Locale.US);
String wmClass = VENDOR_PREFIX + name.replace(' ', '-');
if (PlatformUtils.isCommunityEdition()) wmClass += "-ce";
String name = ApplicationNamesInfo.getInstance().getFullProductName()
.toLowerCase(Locale.US)
.replace(' ', '-')
.replace("intellij-idea", "idea").replace("android-studio", "studio").replace("community-edition", "ce"); // backward compatibility
String wmClass = VENDOR_PREFIX + name;
if (DEBUG_MODE) wmClass += "-debug";
return wmClass;
}