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:
@@ -3426,6 +3426,6 @@
|
|||||||
|
|
||||||
<stripTrailingSpacesFilterFactory implementation="org.jetbrains.kotlin.idea.editor.KotlinStripTrailingSpacesFilterFactory"/>
|
<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>
|
</extensions>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
@@ -9,16 +9,20 @@ import com.intellij.ide.navigationToolbar.AbstractNavBarModelExtension
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.asJava.toLightClass
|
import org.jetbrains.kotlin.asJava.toLightClass
|
||||||
import org.jetbrains.kotlin.idea.KotlinIconProvider
|
import org.jetbrains.kotlin.idea.KotlinIconProvider
|
||||||
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
|
||||||
class KotlinNavBarModelExtension : AbstractNavBarModelExtension() {
|
class KotlinNavBarModelExtension : AbstractNavBarModelExtension() {
|
||||||
override fun getPresentableText(`object`: Any?): String? {
|
override fun getPresentableText(item: Any?): String? {
|
||||||
return null
|
return when (item) {
|
||||||
|
is KtClassOrObject -> item.name ?: "unknown"
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun adjustElement(psiElement: PsiElement?): PsiElement? {
|
override fun adjustElement(psiElement: PsiElement?): PsiElement? {
|
||||||
val containingFile = psiElement?.containingFile as? KtFile ?: return psiElement
|
val containingFile = psiElement?.containingFile as? KtFile ?: return psiElement
|
||||||
if (containingFile.isScript()) return psiElement
|
if (containingFile.isScript()) return psiElement
|
||||||
return KotlinIconProvider.getSingleClass(containingFile)?.toLightClass() ?: psiElement
|
return KotlinIconProvider.getSingleClass(containingFile) ?: psiElement
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user