Don't use light classes for navigation element (KT-10215)

Place KotlinNavBarModelExtension before Java extension because it
substitutes non-java elements to files.

 #KT-10215 Fixed
This commit is contained in:
Nikolay Krasko
2019-05-17 18:13:38 +03:00
parent 0a4d21c51f
commit ef70e9db19
2 changed files with 8 additions and 4 deletions
+1 -1
View File
@@ -3426,6 +3426,6 @@
<stripTrailingSpacesFilterFactory implementation="org.jetbrains.kotlin.idea.editor.KotlinStripTrailingSpacesFilterFactory"/>
<navbar implementation="org.jetbrains.kotlin.idea.navigationToolbar.KotlinNavBarModelExtension"/>
<navbar implementation="org.jetbrains.kotlin.idea.navigationToolbar.KotlinNavBarModelExtension" order="first"/>
</extensions>
</idea-plugin>
@@ -9,16 +9,20 @@ import com.intellij.ide.navigationToolbar.AbstractNavBarModelExtension
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.idea.KotlinIconProvider
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtFile
class KotlinNavBarModelExtension : AbstractNavBarModelExtension() {
override fun getPresentableText(`object`: Any?): String? {
return null
override fun getPresentableText(item: Any?): String? {
return when (item) {
is KtClassOrObject -> item.name ?: "unknown"
else -> null
}
}
override fun adjustElement(psiElement: PsiElement?): PsiElement? {
val containingFile = psiElement?.containingFile as? KtFile ?: return psiElement
if (containingFile.isScript()) return psiElement
return KotlinIconProvider.getSingleClass(containingFile)?.toLightClass() ?: psiElement
return KotlinIconProvider.getSingleClass(containingFile) ?: psiElement
}
}