1
1
package cc.unitmesh.devti.gui.chat.ui.file
2
2
3
3
import cc.unitmesh.devti.util.canBeAdded
4
+ import com.intellij.openapi.Disposable
4
5
import com.intellij.openapi.application.ApplicationManager
5
6
import com.intellij.openapi.application.ModalityState
6
7
import com.intellij.openapi.diagnostic.Logger
@@ -36,7 +37,7 @@ import javax.swing.*
36
37
class WorkspaceFileSearchPopup (
37
38
private val project : Project ,
38
39
private val onFilesSelected : (List <VirtualFile >) -> Unit
39
- ) {
40
+ ) : Disposable {
40
41
companion object {
41
42
private val LOG = Logger .getInstance(WorkspaceFileSearchPopup ::class .java)
42
43
private const val MAX_RECENT_FILES = 30
@@ -62,7 +63,7 @@ class WorkspaceFileSearchPopup(
62
63
}
63
64
64
65
private val minPopupSize = Dimension (480 , 320 )
65
- private val searchAlarm = Alarm (Alarm .ThreadToUse .POOLED_THREAD )
66
+ private val searchAlarm = Alarm (Alarm .ThreadToUse .POOLED_THREAD , this )
66
67
67
68
// File storage
68
69
private val recentFiles = mutableListOf<FilePresentation >()
@@ -528,6 +529,10 @@ class WorkspaceFileSearchPopup(
528
529
hasLoadedAllFiles = false
529
530
}
530
531
532
+ override fun dispose () {
533
+ cleanupResources()
534
+ }
535
+
531
536
private inner class FileListCellRenderer : ListCellRenderer <FilePresentation > {
532
537
private val noBorderFocus = BorderFactory .createEmptyBorder(1 , 1 , 1 , 1 )
533
538
0 commit comments