Skip to content

Commit 8a9c6a9

Browse files
committed
fix(devti): handle LightVirtualFile in file diff sketch
- Disable hover effect and click action for LightVirtualFile instances - Open newly created files in the editor after applying patch
1 parent a7a1432 commit 8a9c6a9

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

core/src/main/kotlin/cc/unitmesh/devti/sketch/ui/patch/SingleFileDiffSketch.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,21 @@ class SingleFileDiffSketch(
104104
border = BorderFactory.createEmptyBorder(2, 4, 2, 4)
105105

106106
val originalColor = foreground
107-
val hoverColor = AutoDevColors.FILE_HOVER_COLOR // Extracted from inline JBColor definition
107+
val hoverColor = if (currentFile !is LightVirtualFile) {
108+
AutoDevColors.FILE_HOVER_COLOR
109+
} else {
110+
foreground
111+
}
108112

109113
addMouseListener(object : MouseAdapter() {
110114
override fun mouseClicked(e: MouseEvent?) {
115+
if (currentFile is LightVirtualFile) return
111116
FileEditorManager.getInstance(myProject).openFile(currentFile, true)
112117
}
113118

114119
override fun mouseEntered(e: MouseEvent?) {
120+
if (currentFile is LightVirtualFile) return
121+
115122
foreground = hoverColor
116123
cursor = java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR)
117124
border = BorderFactory.createCompoundBorder(
@@ -121,6 +128,8 @@ class SingleFileDiffSketch(
121128
}
122129

123130
override fun mouseExited(e: MouseEvent?) {
131+
if (currentFile is LightVirtualFile) return
132+
124133
foreground = originalColor
125134
cursor = java.awt.Cursor.getDefaultCursor()
126135
border = BorderFactory.createEmptyBorder(2, 4, 2, 4)
@@ -269,6 +278,8 @@ class SingleFileDiffSketch(
269278
val directory = DirUtil.getOrCreateDirectory(myProject.baseDir, filePath)
270279
val vfile = runWriteAction { directory.createChildData(this, fileName) }
271280
vfile.writeText(patch!!.patchedText)
281+
282+
FileEditorManager.getInstance(myProject).openFile(vfile, true)
272283
}
273284
} catch (e: Exception) {
274285
logger<SingleFileDiffSketch>().error("Failed to create file: ${file.path}", e)

0 commit comments

Comments
 (0)